From 5d959b24da633fe799c5ffcd38a9b286a126c420 Mon Sep 17 00:00:00 2001 From: Philip Roche Date: Wed, 11 Oct 2023 11:45:29 +0100 Subject: [PATCH] fix: Enable snap preseeding with ppc64el images where /boot/vmlinux is used instead of /boot/vmlinuz. (LP: #2038957) ppc64el still uses /boot/vmlinux so we need to determine the boot file name as non ppc64el use /boot/vmlinuz. This is then used to determine the kernel major minor version installed so that the correct apparmor features can be used during snap preseeding. This preseeding was failing for ppc64el for the mantic 6.5 kernel as the /boot/vmlinuz being checked did not exist. --- debian/changelog | 7 +++++++ live-build/functions | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 11e078f8..c5126412 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +livecd-rootfs (24.04.2) noble; urgency=medium + + * Enable snap preseeding with ppc64el images where /boot/vmlinux is used + instead of /boot/vmlinuz. (LP: #2038957) + + -- Philip Roche Thu, 26 Oct 2023 17:56:00 +0100 + livecd-rootfs (24.04.1) noble; urgency=medium [ Steve Langasek ] diff --git a/live-build/functions b/live-build/functions index b017e4be..6f631b8c 100644 --- a/live-build/functions +++ b/live-build/functions @@ -768,9 +768,18 @@ snap_preseed() { snap_validate_seed() { local CHROOT_ROOT=$1 local kern_major_min=undefined + local boot_filename=undefined + # ppc64el still uses /boot/vmlinux so we need to determine the boot file name as non ppc64el use /boot/vmlinuz + # We don't need to query the arch as we can use existence of the file to determine the boot file name. Both + # will never be present at the same time. if [ -e ${CHROOT_ROOT}/boot/vmlinuz ]; then - kern_major_min=$(readlink --canonicalize --no-newline ${CHROOT_ROOT}/boot/vmlinuz | grep --extended-regexp --only-matching --max-count 1 '[0-9]+\.[0-9]+') + boot_filename=vmlinuz + elif [ -e ${CHROOT_ROOT}/boot/vmlinux ]; then + boot_filename=vmlinux + fi + if [ ${boot_filename} != undefined ]; then # we have a known boot file so we can proceed with checking for features to mount + kern_major_min=$(readlink --canonicalize --no-newline ${CHROOT_ROOT}/boot/${boot_filename} | grep --extended-regexp --only-matching --max-count 1 '[0-9]+\.[0-9]+') if [ -d /usr/share/livecd-rootfs/live-build/apparmor/${kern_major_min} ]; then # if an Ubuntu version has different kernel apparmor features between LTS and HWE kernels # a snap pre-seeding issue can occur, where the incorrect apparmor features are reported