Public bug reported:

The arm64 kernel image enables the EFI stub and ZBOOT options, among others, 
that should allow booting the kernel in a UEFI environment, as a signed PE 
binary.
But the package ships the kernel image as a compressed gzip file, which UEFI 
cannot understand.

I received a suggestion that this is down to having CONFIG_EFI_ZBOOT
enabled but running "make install" instead of "make zinstall" (which is
am arm specific thing and would do the right thing) at package build
time, with some reference:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4c7be57f2772c8ce4e1e43c6a79b8f8d401a4795

The vmlinuz in https://ports.ubuntu.com/pool/main/l/linux-signed/linux-
image-6.12.0-15-generic_6.12.0-15.15_arm64.deb

$ file vmlinuz-6.12.0-15-generic
vmlinuz-6.12.0-15-generic: gzip compressed data, max compression, from Unix, 
original size modulo 2^32 60844424
$ sbverify --list vmlinuz-6.12.0-15-generic
Invalid DOS header magic
Can't open image vmlinuz-6.12.0-15-generic

After using gunzip on it:

$ gunzip < vmlinuz-6.12.0-15-generic > unzip
$ file unzip
unzip: Linux kernel ARM64 boot executable Image, little-endian, 4K pages
$ sbverify --list unzip
signature 1
image signature issuers:
 - /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. Master 
Certificate Authority
image signature certificates:
 - subject: /C=GB/ST=Isle of Man/O=Canonical Ltd./OU=Secure Boot/CN=Canonical 
Ltd. Secure Boot Signing (2022 v1)
   issuer:  /C=GB/ST=Isle of Man/L=Douglas/O=Canonical Ltd./CN=Canonical Ltd. 
Master Certificate Authority

On the other hand, a Debian arm64 kernel:

$ file vmlinuz-6.12.13-arm64 
vmlinuz-6.12.13-arm64: Linux kernel ARM64 boot executable Image, little-endian, 
4K pages
$ sbverify --list vmlinuz-6.12.13-arm64 
signature 1
image signature issuers:
 - /CN=Debian Secure Boot CA
image signature certificates:
 - subject: /CN=Debian Secure Boot Signer 2022 - linux
   issuer:  /CN=Debian Secure Boot CA

Fedora:

$ file vmlinuz
vmlinuz: PE32+ executable (EFI application) Aarch64 (stripped to external PDB), 
for MS Windows, 2 sections

I noticed this because I maintain the mkosi package in Debian, and I
recently added autopkgtest, which is failing in Ubuntu Plucky:

https://autopkgtest.ubuntu.com/results/autopkgtest-
plucky/plucky/arm64/m/mkosi/20250212_040016_2ebac@/log.gz

The autopkgtest uses mkosi to build a UKI using the kernel package, and boot it 
with EDK2 + systemd-boot, and fails because the kernel format is not recognized.
Autopkgtest script:

https://salsa.debian.org/systemd-
team/mkosi/-/blob/debian/sid/debian/tests/mkosi?ref_type=heads

To reproduce the failure with autopkgtest on x86-64:

$ autopkgtest-buildvm-ubuntu-cloud -a arm64 -r plucky  --timeout 7200
<wait for image to be built>
$ autopkgtest -s --pin-packages=plucky-proposed=mkosi --add-apt-source='deb 
http://ports.ubuntu.com plucky-proposed main universe' --timeout-factor=1000 
mkosi -B --test-name mkosi -- autopkgtest-virt-qemu --cpus 4 --ram-size 4096 
./autopkgtest-plucky-arm64.img --qemu-architecture=aarch64 --timeout-reboot 9000

This will fail with:

BdsDxe: starting Boot0001 "UEFI Misc Device" from PciRoot(0x0)/Pci(0x8,0x0)
../src/boot/linux.c:120@linux_exec: Bad kernel image: Load error
../src/boot/boot.c:2640@image_start: Failed to execute Ubuntu Plucky Puffin 
(development branch) (\EFI\Linux\ubuntu-6.12.0-15-generic.efi): Load error

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2098111

Title:
  arm64: kernel image cannot be booted in UEFI despite EFI stub and
  ZBOOT

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2098111/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to