summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip <philm@manjaro.org>2014-08-19 14:57:22 +0200
committerPhilip <philm@manjaro.org>2014-08-19 14:57:22 +0200
commit5b336fc3c5cbd5a20bddc880e91d8ff845fb1535 (patch)
tree8953b97975eb4ad6a6e8bf1574ed3d1f451adc66
parent35f0dfc76d552344c1a3abe98d74b4f520b3be1d (diff)
New grubcfg module, ported from Thus.
-rw-r--r--.gitignore3
-rw-r--r--settings.conf1
-rw-r--r--src/modules/grubcfg/grubcfg.conf3
-rw-r--r--src/modules/grubcfg/main.py66
-rw-r--r--src/modules/grubcfg/module.desc5
5 files changed, 78 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 9ffd88abb..58c1b59bb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,3 +35,6 @@ CMakeLists.txt.user
# PyCharm
.idea
+
+# Backup files
+*~
diff --git a/settings.conf b/settings.conf
index 7640314d6..4cee7960b 100644
--- a/settings.conf
+++ b/settings.conf
@@ -40,6 +40,7 @@ install:
- networkcfg
- hwclock
- services
+- grubcfg
- grub
- umount
diff --git a/src/modules/grubcfg/grubcfg.conf b/src/modules/grubcfg/grubcfg.conf
new file mode 100644
index 000000000..bdbe2dbcd
--- /dev/null
+++ b/src/modules/grubcfg/grubcfg.conf
@@ -0,0 +1,3 @@
+---
+# Replace 'LinuxDistribution' with your distribution name - for example with 'Manjaro'
+distributor: LinuxDistribution
diff --git a/src/modules/grubcfg/main.py b/src/modules/grubcfg/main.py
new file mode 100644
index 000000000..74e50a7cd
--- /dev/null
+++ b/src/modules/grubcfg/main.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+# === This file is part of Calamares - <http://github.com/calamares> ===
+#
+# Copyright 2014, Philip Müller <philm@manjaro.org>
+#
+# Calamares is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Calamares is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Calamares. If not, see <http://www.gnu.org/licenses/>.
+
+import libcalamares
+import os
+
+
+def modify_grub_default(partitions, root_mount_point, distributor):
+
+ default_dir = os.path.join(root_mount_point, "etc/default")
+ default_grub = os.path.join(default_dir, "grub")
+ plymouth_bin = os.path.join(root_mount_point, "usr/bin/plymouth")
+ use_splash = ''
+
+ if os.path.exists(plymouth_bin):
+ use_splash = 'splash'
+
+ for partition in partitions:
+ if partition["fs"] == "linuxswap":
+ swap_uuid = partition["uuid"]
+
+ if swap_uuid != "":
+ kernel_cmd = 'GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=%s quiet %s"' % (swap_uuid, use_splash)
+ else:
+ kernel_cmd = 'GRUB_CMDLINE_LINUX_DEFAULT="quiet %s"' % use_splash
+
+ if not os.path.exists(default_dir):
+ os.mkdir(default_dir)
+
+ with open(default_grub, 'r') as grub_file:
+ lines = [x.strip() for x in grub_file.readlines()]
+
+ for i in range(len(lines)):
+ if lines[i].startswith("#GRUB_CMDLINE_LINUX_DEFAULT"):
+ lines[i] = kernel_cmd
+ elif lines[i].startswith("GRUB_CMDLINE_LINUX_DEFAULT"):
+ lines[i] = kernel_cmd
+ elif lines[i].startswith("#GRUB_DISTRIBUTOR") or lines[i].startswith("GRUB_DISTRIBUTOR"):
+ lines[i] = "GRUB_DISTRIBUTOR=%s" % distributor
+
+ with open(default_grub, 'w') as grub_file:
+ grub_file.write("\n".join(lines) + "\n")
+
+
+def run():
+ partitions = libcalamares.globalstorage.value("partitions")
+ root_mount_point = libcalamares.globalstorage.value("rootMountPoint")
+ distributor = libcalamares.job.configuration["distributor"]
+ modify_grub_default(partitions, root_mount_point, distributor)
+ return None
diff --git a/src/modules/grubcfg/module.desc b/src/modules/grubcfg/module.desc
new file mode 100644
index 000000000..34f1a5a1e
--- /dev/null
+++ b/src/modules/grubcfg/module.desc
@@ -0,0 +1,5 @@
+---
+type: "job"
+name: "grubcfg"
+interface: "python"
+script: "main.py"