diff options
author | Kevin Hao <kexin.hao@windriver.com> | 2018-08-20 18:42:24 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2018-08-21 14:49:34 +0100 |
commit | 33f85c8bf80d70f00eeccd9ab3dfa417c0fc7df1 (patch) | |
tree | 81000a777481088457b026c42fd5bda49d0868c0 | |
parent | 3cb303ffee8610d41c9a0745d366556c24066bc3 (diff) | |
download | openembedded-core-33f85c8bf80d70f00eeccd9ab3dfa417c0fc7df1.tar.gz openembedded-core-33f85c8bf80d70f00eeccd9ab3dfa417c0fc7df1.tar.bz2 openembedded-core-33f85c8bf80d70f00eeccd9ab3dfa417c0fc7df1.zip |
wic: bootimg-partition: Add support to specify a custom extlinux.conf
Add support to specify a custom extlinux.conf via something like:
bootloader --configfile="extlinux.conf"
Signed-off-by: Kevin Hao <kexin.hao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | scripts/lib/wic/plugins/source/bootimg-partition.py | 79 |
1 files changed, 47 insertions, 32 deletions
diff --git a/scripts/lib/wic/plugins/source/bootimg-partition.py b/scripts/lib/wic/plugins/source/bootimg-partition.py index 7d61595d04..2e9b9f5ed6 100644 --- a/scripts/lib/wic/plugins/source/bootimg-partition.py +++ b/scripts/lib/wic/plugins/source/bootimg-partition.py @@ -30,6 +30,7 @@ import re from glob import glob from wic import WicError +from wic.engine import get_custom_config from wic.pluginbase import SourcePlugin from wic.misc import exec_cmd, get_bitbake_var @@ -114,38 +115,52 @@ class BootimgPartitionPlugin(SourcePlugin): if source_params.get('loader') != "u-boot": return - # The kernel types supported by the sysboot of u-boot - kernel_types = ["uImage", "zImage", "Image", "vmlinux", "fitImage"] - has_dtb = False - fdt_dir = '/' - kernel_name = None - for task in cls.install_task: - src, dst = task - # Find the kernel image name - for image in kernel_types: - if re.match(image, src): - if not kernel_name: - kernel_name = os.path.join('/', dst) - else: - raise WicError('Multi kernel file founded') - - # We suppose that all the dtb are in the same directory - if re.search(r'\.dtb', src) and fdt_dir == '/': - has_dtb = True - fdt_dir = os.path.join(fdt_dir, os.path.dirname(dst)) - - if not kernel_name: - raise WicError('No kernel file founded') - - # Compose the extlinux.conf - extlinux_conf = "default Yocto\n" - extlinux_conf += "label Yocto\n" - extlinux_conf += " kernel %s\n" % kernel_name - if has_dtb: - extlinux_conf += " fdtdir %s\n" % fdt_dir - bootloader = cr.ks.bootloader - extlinux_conf += "append root=%s rootwait %s\n" \ - % (cr.rootdev, bootloader.append if bootloader.append else '') + configfile = cr.ks.bootloader.configfile + custom_cfg = None + if configfile: + custom_cfg = get_custom_config(configfile) + if custom_cfg: + # Use a custom configuration for extlinux.conf + extlinux_conf = custom_cfg + logger.debug("Using custom configuration file " + "%s for extlinux.cfg", configfile) + else: + raise WicError("configfile is specified but failed to " + "get it from %s." % configfile) + + if not custom_cfg: + # The kernel types supported by the sysboot of u-boot + kernel_types = ["uImage", "zImage", "Image", "vmlinux", "fitImage"] + has_dtb = False + fdt_dir = '/' + kernel_name = None + for task in cls.install_task: + src, dst = task + # Find the kernel image name + for image in kernel_types: + if re.match(image, src): + if not kernel_name: + kernel_name = os.path.join('/', dst) + else: + raise WicError('Multi kernel file founded') + + # We suppose that all the dtb are in the same directory + if re.search(r'\.dtb', src) and fdt_dir == '/': + has_dtb = True + fdt_dir = os.path.join(fdt_dir, os.path.dirname(dst)) + + if not kernel_name: + raise WicError('No kernel file founded') + + # Compose the extlinux.conf + extlinux_conf = "default Yocto\n" + extlinux_conf += "label Yocto\n" + extlinux_conf += " kernel %s\n" % kernel_name + if has_dtb: + extlinux_conf += " fdtdir %s\n" % fdt_dir + bootloader = cr.ks.bootloader + extlinux_conf += "append root=%s rootwait %s\n" \ + % (cr.rootdev, bootloader.append if bootloader.append else '') install_cmd = "install -d %s/extlinux/" % hdddir exec_cmd(install_cmd) |