mirror of
https://git.yoctoproject.org/poky
synced 2026-04-20 09:32:13 +02:00
wic: add UEFI kernel as UEFI stub
Linux kernel can be compiled as UEFI stub and loaded directly with UEFI firmware without grub or other UEFI shell. Tested with wic file: bootloader --ptable gpt --timeout=0 --append="rootwait" part /boot --source bootimg-efi --sourceparams="loader=uefi-kernel" \ --ondisk sda --fstype=vfat --label bootfs \ --active --align 1024 --use-uuid part / --source rootfs --fstype=ext4 --label rootfs \ --align 1024 --exclude-path boot/ --use-label (From OE-Core rev: b18025fc8a2dad963b6f4b697e24455f2511b279) Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
5680ba2ca5
commit
5b0de8447e
@@ -220,6 +220,8 @@ class BootimgEFIPlugin(SourcePlugin):
|
||||
cls.do_configure_grubefi(hdddir, creator, cr_workdir, source_params)
|
||||
elif source_params['loader'] == 'systemd-boot':
|
||||
cls.do_configure_systemdboot(hdddir, creator, cr_workdir, source_params)
|
||||
elif source_params['loader'] == 'uefi-kernel':
|
||||
return
|
||||
else:
|
||||
raise WicError("unrecognized bootimg-efi loader: %s" % source_params['loader'])
|
||||
except KeyError:
|
||||
@@ -385,6 +387,28 @@ class BootimgEFIPlugin(SourcePlugin):
|
||||
for mod in [x for x in os.listdir(kernel_dir) if x.startswith("systemd-")]:
|
||||
cp_cmd = "cp %s/%s %s/EFI/BOOT/%s" % (kernel_dir, mod, hdddir, mod[8:])
|
||||
exec_cmd(cp_cmd, True)
|
||||
elif source_params['loader'] == 'uefi-kernel':
|
||||
kernel = get_bitbake_var("KERNEL_IMAGETYPE")
|
||||
if not kernel:
|
||||
raise WicError("Empty KERNEL_IMAGETYPE %s\n" % target)
|
||||
target = get_bitbake_var("TARGET_SYS")
|
||||
if not target:
|
||||
raise WicError("Unknown arch (TARGET_SYS) %s\n" % target)
|
||||
|
||||
if re.match("x86_64", target):
|
||||
kernel_efi_image = "bootx64.efi"
|
||||
elif re.match('i.86', target):
|
||||
kernel_efi_image = "bootia32.efi"
|
||||
elif re.match('aarch64', target):
|
||||
kernel_efi_image = "bootaa64.efi"
|
||||
elif re.match('arm', target):
|
||||
kernel_efi_image = "bootarm.efi"
|
||||
else:
|
||||
raise WicError("UEFI stub kernel is incompatible with target %s" % target)
|
||||
|
||||
for mod in [x for x in os.listdir(kernel_dir) if x.startswith(kernel)]:
|
||||
cp_cmd = "cp %s/%s %s/EFI/BOOT/%s" % (kernel_dir, mod, hdddir, kernel_efi_image)
|
||||
exec_cmd(cp_cmd, True)
|
||||
else:
|
||||
raise WicError("unrecognized bootimg-efi loader: %s" %
|
||||
source_params['loader'])
|
||||
|
||||
Reference in New Issue
Block a user