[OE-core] [PATCH RFC 00/18] EFI boot partition improvements
California Sullivan
california.l.sullivan at intel.com
Tue Dec 19 22:58:13 UTC 2017
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
--
2.14.3
More information about the Openembedded-core
mailing list