* [PATCH v7 0/8] systemd uki support
@ 2024-10-10 8:56 Mikko Rapeli
2024-10-10 20:21 ` [OE-core] " Ross Burton
0 siblings, 1 reply; 3+ messages in thread
From: Mikko Rapeli @ 2024-10-10 8:56 UTC (permalink / raw)
To: openembedded-core; +Cc: Mikko Rapeli
These changes enable building systemd uki images which combine
kernel, kernel command line, initrd and possibly signatures to
a single UEFI binary. This binary can be booted with UEFI firmware
and systemd-boot. No grub is needed and UEFI firmware and/or
systemd-boot provide possibilities for boot menus.
The uki binary can also be signed for UEFI secure boot
so the secure boot extends from firmware to kernel and initrd.
Binding secure boot to full userspace is then easier since for example
kernel command line and initrd contain the support needed to mount
encrypted dm-verity etc partitions, and/or create partitions on demand
with systemd-repart using device specific TPM devices for encryption.
Tested on qemuarm64-secureboot machine from meta-arm with changes to
support secure boot. Slightly different configuration tested on
multiple arm64 System Ready boards with UEFI firmware, real and firmware
based TPM devices. Tested with ovmf firmware on x86_64 with selftests but
without secure boot which seems to be harder to setup in ovmf.
Sadly I see two wic selftests, wic.Wic2.test_rawcopy_plugin_qemu and
wic.Wic2.test_expand_mbr_image, failing when executing all wic selftests
on a build machine with zfs filesystem. Will investigate this further.
The issue seems to be in mkfs.ext4 producing broken filesystem, and partially
in the tests which don't run the correct rootfs file (.ext4 vs .wic).
Will debug this further and it is IMO unrelated to these changes since
they reproduce on pure master branch without this series.
v7: add missing "ovmf" to runqemu argument to
test_efi_plugin_plain_systemd_boot_qemu_x86 to fix boot hang
v6: fixes wic refactoring botch which broken non-uki systemd-boot usage on
genericarm64 reported by Ross Burton <Ross.Burton@arm.com>, added
selftest to cover this wks usage on x86 and aarch64
v5: drop patch "image_types_wic.bbclass: set systemd-boot and os-release
dependency for all archs" since systemd-boot does not support all
architectures
v4: handle missing runqemu variable from build config, add
python3-pefile to fast ptest list
v3: rebased, fixed and added more sefltests, removed wic plugin side uki
support
v2: https://lists.openembedded.org/g/openembedded-core/message/204090
Michelle Lin (1):
uki.bbclass: add class for building Unified Kernel Images (UKI)
Mikko Rapeli (7):
wic bootimg-efi.py: keep timestamps and add debug prints
wic bootimg-efi.py: change UKI support from wic plugin to uki.bbclass
oeqa selftest uki.py: add tests for uki.bbclass
oeqa selftest efibootpartition.py: add TEST_RUNQEMUPARAMS to runqemu
oeqa selftest efibootpartition.py: remove systemd-boot from grub-efi
test
oeqa selftest wic.py: add TEST_RUNQEMUPARAMS to runqemu
oeqa selftest wic.py: support UKIs via uki.bbclass
meta-selftest/wic/test_efi_plugin.wks | 5 +-
.../test_efi_plugin_plain_systemd-boot.wks | 5 +
meta/classes-recipe/image_types_wic.bbclass | 3 +-
meta/classes-recipe/uki.bbclass | 197 ++++++++++++++++++
.../oeqa/selftest/cases/efibootpartition.py | 11 +-
meta/lib/oeqa/selftest/cases/uki.py | 138 ++++++++++++
meta/lib/oeqa/selftest/cases/wic.py | 124 +++++++++--
.../wic/canned-wks/efi-uki-bootdisk.wks.in | 3 +
scripts/lib/wic/plugins/source/bootimg-efi.py | 183 +++++-----------
9 files changed, 511 insertions(+), 158 deletions(-)
create mode 100644 meta-selftest/wic/test_efi_plugin_plain_systemd-boot.wks
create mode 100644 meta/classes-recipe/uki.bbclass
create mode 100644 meta/lib/oeqa/selftest/cases/uki.py
create mode 100644 scripts/lib/wic/canned-wks/efi-uki-bootdisk.wks.in
--
2.34.1
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [OE-core] [PATCH v7 0/8] systemd uki support
2024-10-10 8:56 Mikko Rapeli
@ 2024-10-10 20:21 ` Ross Burton
2024-10-11 5:49 ` Mikko Rapeli
0 siblings, 1 reply; 3+ messages in thread
From: Ross Burton @ 2024-10-10 20:21 UTC (permalink / raw)
To: Mikko Rapeli; +Cc: ,openembedded-core@lists.openembedded.org
On 10 Oct 2024, at 09:56, Mikko Rapeli via lists.openembedded.org <mikko.rapeli=linaro.org@lists.openembedded.org> wrote:
> Tested on qemuarm64-secureboot machine from meta-arm with changes to
> support secure boot. Slightly different configuration tested on
> multiple arm64 System Ready boards with UEFI firmware, real and firmware
> based TPM devices. Tested with ovmf firmware on x86_64 with selftests but
> without secure boot which seems to be harder to setup in ovmf.
I thought I followed the instructions to enable genericarm64 with UKI, including changing the WKS image, but when systemd-boot pops up its menu there are still two entries: one presumably the UKI, the other from an explicit loader.conf:
root@genericarm64:~# find /boot/ -type f
/boot/EFI/BOOT/bootaa64.efi
/boot/EFI/Linux/uki.efi
/boot/Image
/boot/core-image-initramfs-boot-genericarm64.cpio.gz
/boot/loader/entries/boot.conf
/boot/loader/loader.conf
I’m sure I’m doing something obviously wrong - any idea?
Ross
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [OE-core] [PATCH v7 0/8] systemd uki support
2024-10-10 20:21 ` [OE-core] " Ross Burton
@ 2024-10-11 5:49 ` Mikko Rapeli
0 siblings, 0 replies; 3+ messages in thread
From: Mikko Rapeli @ 2024-10-11 5:49 UTC (permalink / raw)
To: Ross Burton; +Cc: openembedded-core@lists.openembedded.org
Hi,
On Thu, Oct 10, 2024 at 08:21:11PM +0000, Ross Burton wrote:
> On 10 Oct 2024, at 09:56, Mikko Rapeli via lists.openembedded.org <mikko.rapeli=linaro.org@lists.openembedded.org> wrote:
> > Tested on qemuarm64-secureboot machine from meta-arm with changes to
> > support secure boot. Slightly different configuration tested on
> > multiple arm64 System Ready boards with UEFI firmware, real and firmware
> > based TPM devices. Tested with ovmf firmware on x86_64 with selftests but
> > without secure boot which seems to be harder to setup in ovmf.
>
> I thought I followed the instructions to enable genericarm64 with UKI, including changing the WKS image, but when systemd-boot pops up its menu there are still two entries: one presumably the UKI, the other from an explicit loader.conf:
>
> root@genericarm64:~# find /boot/ -type f
> /boot/EFI/BOOT/bootaa64.efi
> /boot/EFI/Linux/uki.efi
> /boot/Image
> /boot/core-image-initramfs-boot-genericarm64.cpio.gz
> /boot/loader/entries/boot.conf
> /boot/loader/loader.conf
>
> I’m sure I’m doing something obviously wrong - any idea?
I think the wks file still has initrd=... in --sourceparams
which installs the initrd and a boot.conf.
With uki, only "loader=systemd-boot" needs to be there.
Not sure how kernel still got installed to /boot. Maybe
it's in IMAGE_EFI_BOOT_FILES?
Since uki.bbclass embeds the kernel command line,
wks file bootloader entry to append to command line
is not effective so --append="rootwait rootfstype=ext4"
should be UKI_CMDLINE now.
Cheers,
-Mikko
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-10-11 5:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <17FD0BA3A2CC876F.19251@lists.openembedded.org>
2024-10-10 9:01 ` [OE-core] [PATCH v7 0/8] systemd uki support Mikko Rapeli
2024-10-10 8:56 Mikko Rapeli
2024-10-10 20:21 ` [OE-core] " Ross Burton
2024-10-11 5:49 ` Mikko Rapeli
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.