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:42 +0100 |
commit | 511b7a565d1fde3712c6d2371de890290640ef78 (patch) | |
tree | bffd36dded07a8d8c302a2ced2d70d887d54b0c4 /scripts/lib | |
parent | 99506b0017bdf8dbf42ec5dc048d91a5609dabe3 (diff) | |
download | poky-511b7a565d1fde3712c6d2371de890290640ef78.tar.gz |
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"
(From OE-Core rev: 33f85c8bf80d70f00eeccd9ab3dfa417c0fc7df1)
Signed-off-by: Kevin Hao <kexin.hao@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib')
-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 | |||
30 | from glob import glob | 30 | from glob import glob |
31 | 31 | ||
32 | from wic import WicError | 32 | from wic import WicError |
33 | from wic.engine import get_custom_config | ||
33 | from wic.pluginbase import SourcePlugin | 34 | from wic.pluginbase import SourcePlugin |
34 | from wic.misc import exec_cmd, get_bitbake_var | 35 | from wic.misc import exec_cmd, get_bitbake_var |
35 | 36 | ||
@@ -114,38 +115,52 @@ class BootimgPartitionPlugin(SourcePlugin): | |||
114 | if source_params.get('loader') != "u-boot": | 115 | if source_params.get('loader') != "u-boot": |
115 | return | 116 | return |
116 | 117 | ||
117 | # The kernel types supported by the sysboot of u-boot | 118 | configfile = cr.ks.bootloader.configfile |
118 | kernel_types = ["uImage", "zImage", "Image", "vmlinux", "fitImage"] | 119 | custom_cfg = None |
119 | has_dtb = False | 120 | if configfile: |
120 | fdt_dir = '/' | 121 | custom_cfg = get_custom_config(configfile) |
121 | kernel_name = None | 122 | if custom_cfg: |
122 | for task in cls.install_task: | 123 | # Use a custom configuration for extlinux.conf |
123 | src, dst = task | 124 | extlinux_conf = custom_cfg |
124 | # Find the kernel image name | 125 | logger.debug("Using custom configuration file " |
125 | for image in kernel_types: | 126 | "%s for extlinux.cfg", configfile) |
126 | if re.match(image, src): | 127 | else: |
127 | if not kernel_name: | 128 | raise WicError("configfile is specified but failed to " |
128 | kernel_name = os.path.join('/', dst) | 129 | "get it from %s." % configfile) |
129 | else: | 130 | |
130 | raise WicError('Multi kernel file founded') | 131 | if not custom_cfg: |
131 | 132 | # The kernel types supported by the sysboot of u-boot | |
132 | # We suppose that all the dtb are in the same directory | 133 | kernel_types = ["uImage", "zImage", "Image", "vmlinux", "fitImage"] |
133 | if re.search(r'\.dtb', src) and fdt_dir == '/': | 134 | has_dtb = False |
134 | has_dtb = True | 135 | fdt_dir = '/' |
135 | fdt_dir = os.path.join(fdt_dir, os.path.dirname(dst)) | 136 | kernel_name = None |
136 | 137 | for task in cls.install_task: | |
137 | if not kernel_name: | 138 | src, dst = task |
138 | raise WicError('No kernel file founded') | 139 | # Find the kernel image name |
139 | 140 | for image in kernel_types: | |
140 | # Compose the extlinux.conf | 141 | if re.match(image, src): |
141 | extlinux_conf = "default Yocto\n" | 142 | if not kernel_name: |
142 | extlinux_conf += "label Yocto\n" | 143 | kernel_name = os.path.join('/', dst) |
143 | extlinux_conf += " kernel %s\n" % kernel_name | 144 | else: |
144 | if has_dtb: | 145 | raise WicError('Multi kernel file founded') |
145 | extlinux_conf += " fdtdir %s\n" % fdt_dir | 146 | |
146 | bootloader = cr.ks.bootloader | 147 | # We suppose that all the dtb are in the same directory |
147 | extlinux_conf += "append root=%s rootwait %s\n" \ | 148 | if re.search(r'\.dtb', src) and fdt_dir == '/': |
148 | % (cr.rootdev, bootloader.append if bootloader.append else '') | 149 | has_dtb = True |
150 | fdt_dir = os.path.join(fdt_dir, os.path.dirname(dst)) | ||
151 | |||
152 | if not kernel_name: | ||
153 | raise WicError('No kernel file founded') | ||
154 | |||
155 | # Compose the extlinux.conf | ||
156 | extlinux_conf = "default Yocto\n" | ||
157 | extlinux_conf += "label Yocto\n" | ||
158 | extlinux_conf += " kernel %s\n" % kernel_name | ||
159 | if has_dtb: | ||
160 | extlinux_conf += " fdtdir %s\n" % fdt_dir | ||
161 | bootloader = cr.ks.bootloader | ||
162 | extlinux_conf += "append root=%s rootwait %s\n" \ | ||
163 | % (cr.rootdev, bootloader.append if bootloader.append else '') | ||
149 | 164 | ||
150 | install_cmd = "install -d %s/extlinux/" % hdddir | 165 | install_cmd = "install -d %s/extlinux/" % hdddir |
151 | exec_cmd(install_cmd) | 166 | exec_cmd(install_cmd) |