grubcfg: Create /etc/default/grub if missing.
Also adds a grubcfg.conf with the following settings: * overwrite: If set to true, always creates /etc/default/grub from scratch even if the file already existed. If set to false, edits the existing file instead. The default is "false". * defaults: Default entries to write to /etc/default/grub if it does not exist yet or if we are overwriting it. Note that in addition, GRUB_CMDLINE_LINUX_DEFAULT and GRUB_DISTRIBUTOR will always be written, with automatically detected values. The default in the code is empty. The shipped grubcfg.conf currently reproduces the default settings from the Fedora installer Anaconda. Fixes #128.
This commit is contained in:
parent
d5b95d79e5
commit
1499963920
13
src/modules/grubcfg/grubcfg.conf
Normal file
13
src/modules/grubcfg/grubcfg.conf
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
# If set to true, always creates /etc/default/grub from scratch even if the file
|
||||||
|
# already existed. If set to false, edits the existing file instead.
|
||||||
|
overwrite: false
|
||||||
|
# Default entries to write to /etc/default/grub if it does not exist yet or if
|
||||||
|
# we are overwriting it. Note that in addition, GRUB_CMDLINE_LINUX_DEFAULT and
|
||||||
|
# GRUB_DISTRIBUTOR will always be written, with automatically detected values.
|
||||||
|
defaults:
|
||||||
|
GRUB_TIMEOUT: 5
|
||||||
|
GRUB_DEFAULT: "saved"
|
||||||
|
GRUB_DISABLE_SUBMENU: true
|
||||||
|
GRUB_TERMINAL_OUTPUT: "console"
|
||||||
|
GRUB_DISABLE_RECOVERY: true
|
@ -46,22 +46,40 @@ def modify_grub_default(partitions, root_mount_point, distributor):
|
|||||||
if not os.path.exists(default_dir):
|
if not os.path.exists(default_dir):
|
||||||
os.mkdir(default_dir)
|
os.mkdir(default_dir)
|
||||||
|
|
||||||
with open(default_grub, 'r') as grub_file:
|
|
||||||
lines = [x.strip() for x in grub_file.readlines()]
|
|
||||||
|
|
||||||
have_kernel_cmd = False
|
have_kernel_cmd = False
|
||||||
have_distributor_line = False
|
have_distributor_line = False
|
||||||
|
|
||||||
for i in range(len(lines)):
|
if "overwrite" in libcalamares.job.configuration:
|
||||||
if lines[i].startswith("#GRUB_CMDLINE_LINUX_DEFAULT"):
|
overwrite = libcalamares.job.configuration["overwrite"]
|
||||||
lines[i] = kernel_cmd
|
else:
|
||||||
have_kernel_cmd = True
|
overwrite = False
|
||||||
elif lines[i].startswith("GRUB_CMDLINE_LINUX_DEFAULT"):
|
|
||||||
lines[i] = kernel_cmd
|
if os.path.exists(default_grub) and not overwrite:
|
||||||
have_kernel_cmd = True
|
with open(default_grub, 'r') as grub_file:
|
||||||
elif lines[i].startswith("#GRUB_DISTRIBUTOR") or lines[i].startswith("GRUB_DISTRIBUTOR"):
|
lines = [x.strip() for x in grub_file.readlines()]
|
||||||
lines[i] = distributor_line
|
|
||||||
have_distributor_line = True
|
for i in range(len(lines)):
|
||||||
|
if lines[i].startswith("#GRUB_CMDLINE_LINUX_DEFAULT"):
|
||||||
|
lines[i] = kernel_cmd
|
||||||
|
have_kernel_cmd = True
|
||||||
|
elif lines[i].startswith("GRUB_CMDLINE_LINUX_DEFAULT"):
|
||||||
|
lines[i] = kernel_cmd
|
||||||
|
have_kernel_cmd = True
|
||||||
|
elif lines[i].startswith("#GRUB_DISTRIBUTOR") or lines[i].startswith("GRUB_DISTRIBUTOR"):
|
||||||
|
lines[i] = distributor_line
|
||||||
|
have_distributor_line = True
|
||||||
|
else:
|
||||||
|
lines = []
|
||||||
|
if "defaults" in libcalamares.job.configuration:
|
||||||
|
for key, value in libcalamares.job.configuration["defaults"].items():
|
||||||
|
if value.__class__.__name__ == "bool":
|
||||||
|
if value:
|
||||||
|
escaped_value = "true"
|
||||||
|
else:
|
||||||
|
escaped_value = "false"
|
||||||
|
else:
|
||||||
|
escaped_value = str(value).replace("'", "'\\''")
|
||||||
|
lines.append("%s='%s'" % (key, escaped_value))
|
||||||
|
|
||||||
if not have_kernel_cmd:
|
if not have_kernel_cmd:
|
||||||
lines.append(kernel_cmd)
|
lines.append(kernel_cmd)
|
||||||
|
Loading…
Reference in New Issue
Block a user