OSDN Git Service

New grubcfg module, ported from Thus.
authorPhilip <philm@manjaro.org>
Tue, 19 Aug 2014 12:57:22 +0000 (14:57 +0200)
committerPhilip <philm@manjaro.org>
Tue, 19 Aug 2014 12:57:22 +0000 (14:57 +0200)
.gitignore
settings.conf
src/modules/grubcfg/grubcfg.conf [new file with mode: 0644]
src/modules/grubcfg/main.py [new file with mode: 0644]
src/modules/grubcfg/module.desc [new file with mode: 0644]

index 9ffd88a..58c1b59 100644 (file)
@@ -35,3 +35,6 @@ CMakeLists.txt.user
 
 # PyCharm
 .idea
+
+# Backup files
+*~
index 7640314..4cee796 100644 (file)
@@ -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 (file)
index 0000000..bdbe2db
--- /dev/null
@@ -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 (file)
index 0000000..74e50a7
--- /dev/null
@@ -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 (file)
index 0000000..34f1a5a
--- /dev/null
@@ -0,0 +1,5 @@
+---
+type:       "job"
+name:       "grubcfg"
+interface:  "python"
+script:     "main.py"