ping.
On Mon, 13 Jan 2020 at 23:14, Maxim Uvarov <[email protected]> wrote: > > 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 > The same wic file for armv7, armv8 and x86_64. > > Signed-off-by: Maxim Uvarov <[email protected]> > --- > v2: - use loader=uefi-kernel. > - remove missed from debug WicError(). > - correct error message. > > scripts/lib/wic/plugins/source/bootimg-efi.py | 25 +++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/scripts/lib/wic/plugins/source/bootimg-efi.py > b/scripts/lib/wic/plugins/source/bootimg-efi.py > index 2cfdc10ecd..8d47ea55eb 100644 > --- a/scripts/lib/wic/plugins/source/bootimg-efi.py > +++ b/scripts/lib/wic/plugins/source/bootimg-efi.py > @@ -13,6 +13,7 @@ > import logging > import os > import shutil > +import re > > from wic import WicError > from wic.engine import get_custom_config > @@ -204,6 +205,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: > @@ -252,6 +255,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']) > -- > 2.17.1 > -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
