From 07f26cb78e07df805cae6361b935eb4934a960ca 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 a32083ec..bff504c7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +livecd-rootfs (23.10.56) mantic; urgency=medium + + * Enable snap preseeding with ppc64el images where /boot/vmlinux is used + instead of /boot/vmlinuz. (LP: #2038957) + + -- Philip Roche Wed, 11 Oct 2023 11:41:00 +0100 + livecd-rootfs (23.10.55) mantic; urgency=medium * fix: add 6.5 kernel appamor features to livecd-rootfs based on 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