diff options
author | Philip <philm@manjaro.org> | 2014-08-19 14:57:22 +0200 |
---|---|---|
committer | Philip <philm@manjaro.org> | 2014-08-19 14:57:22 +0200 |
commit | 5b336fc3c5cbd5a20bddc880e91d8ff845fb1535 (patch) | |
tree | 8953b97975eb4ad6a6e8bf1574ed3d1f451adc66 | |
parent | 35f0dfc76d552344c1a3abe98d74b4f520b3be1d (diff) |
New grubcfg module, ported from Thus.
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | settings.conf | 1 | ||||
-rw-r--r-- | src/modules/grubcfg/grubcfg.conf | 3 | ||||
-rw-r--r-- | src/modules/grubcfg/main.py | 66 | ||||
-rw-r--r-- | src/modules/grubcfg/module.desc | 5 |
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" |