From: Mariano Lopez <mariano.lopez@linux.intel.com>
To: ed.bartosh@linux.intel.com
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 2/2] wic: Allow to use a custom config for bootloaders
Date: Mon, 23 Nov 2015 16:13:15 -0600 [thread overview]
Message-ID: <56538F7B.20608@linux.intel.com> (raw)
In-Reply-To: <20151123173747.GA17608@linux.intel.com>
On 11/23/2015 11:37 AM, Ed Bartosh wrote:
> Hi Mariano,
>
> Thank you for the patchset!
>
> Would it be better to put content of configuration file into .wks
> instead of just referring to it?
If the configuration is simple I agree with you; however if the
configuration have scripts I think it's better to have separated file.
The file can growth and would be a real mess inside a wks file.
>
> It would be also nice to have this code covered by oe-selftest.
Yes, I plan do create a test and update the documentation once it is
integrated in master.
>
> Regards,
> Ed
>
> On Wed, Nov 18, 2015 at 08:25:54AM +0000, mariano.lopez@linux.intel.com wrote:
>> From: Mariano Lopez <mariano.lopez@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@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
>>
--
Mariano Lopez
next prev parent reply other threads:[~2015-11-23 22:13 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-18 8:25 [PATCH 0/2] wic: Allow to user defined files as config for bootloaders mariano.lopez
2015-11-18 8:25 ` [PATCH 1/2] wic: Prepare wicboot to allow custom bootloader config mariano.lopez
2015-11-18 8:25 ` [PATCH 2/2] wic: Allow to use a custom config for bootloaders mariano.lopez
2015-11-23 17:37 ` Ed Bartosh
2015-11-23 22:13 ` Mariano Lopez [this message]
2015-11-24 15:43 ` Ed Bartosh
2015-11-26 14:48 ` Mariano Lopez
2015-11-26 19:23 ` Mariano Lopez
2015-11-27 12:47 ` Ed Bartosh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56538F7B.20608@linux.intel.com \
--to=mariano.lopez@linux.intel.com \
--cc=ed.bartosh@linux.intel.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox