[OE-core] [PATCH RFC 00/18] EFI boot partition improvements

Cal Sullivan california.l.sullivan at intel.com
Tue Dec 19 23:16:07 UTC 2017


I forgot to mention, my contrib branch with these and a few additional 
WIPs can be found here:

https://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=clsulliv/image-creation

Thanks,
Cal


On 12/19/2017 02:58 PM, California Sullivan wrote:
> First, note that this is based on top of Haris' multiple kernels patch:
> http://lists.openembedded.org/pipermail/openembedded-core/2017-November/144031.html
>
> Currently, the boot partition of an EFI system is entirely controlled by
> image creation. Either done entirely through wic, or one of the
> bootloader bbclasses. This is rather bad since it makes it very
> difficult to add additional items to the boot partition, such as
> alternative kernels, bootloaders, or other utilities, and since its not
> package controlled its hard to update.
>
> The goal of these changes is to have the boot partition built through
> packages instead. We accomplish this by installing everything to /boot,
> and using the contents of /boot to create the partition. This required
> changes to several bootloaders, the kernel recipe, one new
> rootfs-postcommand to avoid data duplication, and a new .wks file to
> make use of the new functionality.
>
> Legacy hddimg, iso images, and wic images should be mostly unchanged,
> and their functionality is preserved. The only change they received is
> the kernel is now installed as ${KERNEL_IMAGETYPE} instead of hardcoded
> as vmlinuz, and their bootloader configs have been updated to reflect
> that.
>
> This is still a WIP, but I wanted to get some eyes and feedback on it.
> Here are some known issues that I've ran into, and am still working on:
> * fs-uuid (DISK_SIGNATURE_UUID) seems to have issues when changing MACHINE
>    types, and the image can get an old uuid when building from sstate
> * init-install.sh hasn't been updated to support multiple kernels, and
>    still uses hardcoded vmlinuz (broken)
> * the boot partition is vfat, which doesn't support symlinks, so the
>    symlink from the long kernel name to bzImage turns into a copy.
>
> I fully expect this to take several iterations to get right, so please
> any feedback is welcome.
>
> Thanks,
> Cal
>
> California Sullivan (18):
>    fs-uuid.bbclass: rewrite get_fs_uuid function
>    image.bbclass: Add fs-uuid bbclass
>    grub-efi.bbclass: split out configuration portion
>    grub: create recipe for configuration
>    grub-efi: install to /boot/
>    grub-efi: if installed and EFI_PROVIDER, install as bootx64 or
>      bootia32
>    rootfs-postcommands: add rootfs postprocess command to avoid /boot/
>      duplication
>    packagegroup-core-boot: add bootloader to EFI systems
>    live-vm-common.bbclass: Don't use vmlinuz or VM_DEFAULT_KERNEL
>    grub-efi*.bbclass: don't reference vmlinuz
>    wic: add wks file to make use of new bootfs functionality
>    init-install-efi.sh: Update to support installing multiple kernels
>    syslinux.bbclass: don't use vmlinuz
>    systemd-boot.bbclass: break out configuration creation
>    systemd: add systemd-bootconf recipe
>    systemd-boot*.bbclass: Don't use vmlinuz
>    systemd-boot: add package that installs to boot
>    packagegroup-core-boot: add kernel for EFI systems
>
>   meta/classes/fs-uuid.bbclass                       |  32 ++++--
>   .../{grub-efi.bbclass => grub-efi-cfg.bbclass}     |  44 +-------
>   meta/classes/grub-efi.bbclass                      | 124 +--------------------
>   meta/classes/image.bbclass                         |   3 +
>   meta/classes/live-vm-common.bbclass                |   9 +-
>   meta/classes/rootfs-postcommands.bbclass           |  19 ++++
>   meta/classes/syslinux.bbclass                      |   4 +-
>   meta/classes/systemd-boot-cfg.bbclass              |  75 +++++++++++++
>   meta/classes/systemd-boot.bbclass                  |  72 +-----------
>   meta/recipes-bsp/grub/grub-bootconf_1.00.bb        |  30 +++++
>   meta/recipes-bsp/grub/grub-efi_2.02.bb             |  41 +++++--
>   .../initrdscripts/files/init-install-efi.sh        |  15 ++-
>   .../packagegroups/packagegroup-core-boot.bb        |   3 +
>   meta/recipes-core/systemd/systemd-boot_234.bb      |  28 ++++-
>   meta/recipes-core/systemd/systemd-bootconf_1.00.bb |  31 ++++++
>   scripts/lib/wic/canned-wks/efi-bootdisk.wks.in     |   6 +
>   16 files changed, 269 insertions(+), 267 deletions(-)
>   copy meta/classes/{grub-efi.bbclass => grub-efi-cfg.bbclass} (74%)
>   create mode 100644 meta/classes/systemd-boot-cfg.bbclass
>   create mode 100644 meta/recipes-bsp/grub/grub-bootconf_1.00.bb
>   create mode 100644 meta/recipes-core/systemd/systemd-bootconf_1.00.bb
>   create mode 100644 scripts/lib/wic/canned-wks/efi-bootdisk.wks.in
>




More information about the Openembedded-core mailing list