[OE-core] [PATCH 2/2] wic: Allow to use a custom config for bootloaders
mariano.lopez at linux.intel.com
mariano.lopez at linux.intel.com
Wed Nov 18 08:25:54 UTC 2015
From: Mariano Lopez <mariano.lopez at linux.intel.com>
This change will allow to use a user defined file as the
configuration for the bootloaders (grub, gummiboot, syslinux).
The config file is defined in the wks file with the "configfile"
option in the bootloader line.
[YOCTO #8003]
Signed-off-by: Mariano Lopez <mariano.lopez at linux.intel.com>
---
scripts/lib/wic/plugins/source/bootimg-efi.py | 66 ++++++++++++++++--------
scripts/lib/wic/plugins/source/bootimg-pcbios.py | 66 ++++++++++++++----------
2 files changed, 83 insertions(+), 49 deletions(-)
diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py b/scripts/lib/wic/plugins/source/bootimg-efi.py
index fa63c6a..8fc879e 100644
--- a/scripts/lib/wic/plugins/source/bootimg-efi.py
+++ b/scripts/lib/wic/plugins/source/bootimg-efi.py
@@ -45,22 +45,33 @@ class BootimgEFIPlugin(SourcePlugin):
"""
Create loader-specific (grub-efi) config
"""
- options = creator.ks.handler.bootloader.appendLine
-
- grubefi_conf = ""
- grubefi_conf += "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n"
- grubefi_conf += "default=boot\n"
- timeout = kickstart.get_timeout(creator.ks)
- if not timeout:
- timeout = 0
- grubefi_conf += "timeout=%s\n" % timeout
- grubefi_conf += "menuentry 'boot'{\n"
-
- kernel = "/bzImage"
-
- grubefi_conf += "linux %s root=%s rootwait %s\n" \
- % (kernel, creator.rootdev, options)
- grubefi_conf += "}\n"
+ configfile = kickstart.get_bootloader_file(creator.ks)
+
+ if configfile and os.path.exists(configfile):
+ # Use a custom configuration file for grub
+ msger.info("Using custom configuration file "
+ "%s for grub.cfg" % configfile)
+ user_conf = open(configfile, "r")
+ grubefi_conf = user_conf.read()
+ user_conf.close()
+ else:
+ # Create grub configuration using parameters from wks file
+ options = creator.ks.handler.bootloader.appendLine
+
+ grubefi_conf = ""
+ grubefi_conf += "serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1\n"
+ grubefi_conf += "default=boot\n"
+ timeout = kickstart.get_timeout(creator.ks)
+ if not timeout:
+ timeout = 0
+ grubefi_conf += "timeout=%s\n" % timeout
+ grubefi_conf += "menuentry 'boot'{\n"
+
+ kernel = "/bzImage"
+
+ grubefi_conf += "linux %s root=%s rootwait %s\n" \
+ % (kernel, creator.rootdev, options)
+ grubefi_conf += "}\n"
msger.debug("Writing grubefi config %s/hdd/boot/EFI/BOOT/grub.cfg" \
% cr_workdir)
@@ -95,12 +106,23 @@ class BootimgEFIPlugin(SourcePlugin):
cfg.write(loader_conf)
cfg.close()
- kernel = "/bzImage"
-
- boot_conf = ""
- boot_conf += "title boot\n"
- boot_conf += "linux %s\n" % kernel
- boot_conf += "options LABEL=Boot root=%s %s\n" % (creator.rootdev, options)
+ configfile = kickstart.get_bootloader_file(creator.ks)
+
+ if configfile and os.path.exists(configfile):
+ # Use a custom configuration file for gummiboot
+ msger.info("Using custom configuration file "
+ "%s for gummiboot's boot.conf" % configfile)
+ user_conf = open(configfile, "r")
+ boot_conf = user_conf.read()
+ user_conf.close()
+ else:
+ # Create gummiboot configuration using parameters from wks file
+ kernel = "/bzImage"
+
+ boot_conf = ""
+ boot_conf += "title boot\n"
+ boot_conf += "linux %s\n" % kernel
+ boot_conf += "options LABEL=Boot root=%s %s\n" % (creator.rootdev, options)
msger.debug("Writing gummiboot config %s/hdd/boot/loader/entries/boot.conf" \
% cr_workdir)
diff --git a/scripts/lib/wic/plugins/source/bootimg-pcbios.py b/scripts/lib/wic/plugins/source/bootimg-pcbios.py
index 96ed54d..9e21572 100644
--- a/scripts/lib/wic/plugins/source/bootimg-pcbios.py
+++ b/scripts/lib/wic/plugins/source/bootimg-pcbios.py
@@ -83,34 +83,46 @@ class BootimgPcbiosPlugin(SourcePlugin):
install_cmd = "install -d %s" % hdddir
exec_cmd(install_cmd)
- splash = os.path.join(cr_workdir, "/hdd/boot/splash.jpg")
- if os.path.exists(splash):
- splashline = "menu background splash.jpg"
+ configfile = kickstart.get_bootloader_file(creator.ks)
+
+ if configfile and os.path.exists(configfile):
+ # Use a custom configuration file for syslinux
+ msger.info("Using custom configuration file "
+ "%s for syslinux.cfg" % configfile)
+ user_conf = open(configfile, "r")
+ syslinux_conf = user_conf.read()
+ user_conf.close()
+
else:
- splashline = ""
-
- options = creator.ks.handler.bootloader.appendLine
-
- syslinux_conf = ""
- syslinux_conf += "PROMPT 0\n"
- timeout = kickstart.get_timeout(creator.ks)
- if not timeout:
- timeout = 0
- syslinux_conf += "TIMEOUT " + str(timeout) + "\n"
- syslinux_conf += "\n"
- syslinux_conf += "ALLOWOPTIONS 1\n"
- syslinux_conf += "SERIAL 0 115200\n"
- syslinux_conf += "\n"
- if splashline:
- syslinux_conf += "%s\n" % splashline
- syslinux_conf += "DEFAULT boot\n"
- syslinux_conf += "LABEL boot\n"
-
- kernel = "/vmlinuz"
- syslinux_conf += "KERNEL " + kernel + "\n"
-
- syslinux_conf += "APPEND label=boot root=%s %s\n" % \
- (creator.rootdev, options)
+ # Create syslinux configuration using parameters from wks file
+ splash = os.path.join(cr_workdir, "/hdd/boot/splash.jpg")
+ if os.path.exists(splash):
+ splashline = "menu background splash.jpg"
+ else:
+ splashline = ""
+
+ options = creator.ks.handler.bootloader.appendLine
+
+ syslinux_conf = ""
+ syslinux_conf += "PROMPT 0\n"
+ timeout = kickstart.get_timeout(creator.ks)
+ if not timeout:
+ timeout = 0
+ syslinux_conf += "TIMEOUT " + str(timeout) + "\n"
+ syslinux_conf += "\n"
+ syslinux_conf += "ALLOWOPTIONS 1\n"
+ syslinux_conf += "SERIAL 0 115200\n"
+ syslinux_conf += "\n"
+ if splashline:
+ syslinux_conf += "%s\n" % splashline
+ syslinux_conf += "DEFAULT boot\n"
+ syslinux_conf += "LABEL boot\n"
+
+ kernel = "/vmlinuz"
+ syslinux_conf += "KERNEL " + kernel + "\n"
+
+ syslinux_conf += "APPEND label=boot root=%s %s\n" % \
+ (creator.rootdev, options)
msger.debug("Writing syslinux config %s/hdd/boot/syslinux.cfg" \
% cr_workdir)
--
1.8.4.5
More information about the Openembedded-core
mailing list