[PATCH v2] arm64: Allow packing uncompressed images into distro packages

Bjorn Andersson posted 1 patch 2 months, 2 weeks ago
arch/arm64/Makefile | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
[PATCH v2] arm64: Allow packing uncompressed images into distro packages
Posted by Bjorn Andersson 2 months, 2 weeks ago
From: Bjorn Andersson <quic_bjorande@quicinc.com>

The distro packages (deb-pkg, pacman-pkg, rpm-pkg) are generated using
the compressed kernel image, which means that the kernel once installed
can not be booted with systemd-boot.

This differs from the packages generated by the distros themselves,
which uses the uncompressed image.

Use the newly introduced CONFIG_COMPRESSED_INSTALL option to allow
selection of which version of the kernel image should be packaged into
the distro packages.

Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
---
Changes in v2:
- Restore the install-specific handling to retain the behavior of
  installing the uncompressed "Image" under CONFIG_EFI_ZBOOT=y &&
  CONFIG_COMPRESSED_INSTALL=n.
- Link to v1: https://lore.kernel.org/r/20240819-uncompressed-distro-packages-v1-1-c8accc8bc9ea@quicinc.com
---
 arch/arm64/Makefile | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
index f6bc3da1ef11..3d9752e56109 100644
--- a/arch/arm64/Makefile
+++ b/arch/arm64/Makefile
@@ -166,9 +166,13 @@ BOOT_TARGETS	:= Image vmlinuz.efi image.fit
 PHONY += $(BOOT_TARGETS)
 
 ifeq ($(CONFIG_EFI_ZBOOT),)
-KBUILD_IMAGE	:= $(boot)/Image.gz
+  ifeq ($(CONFIG_COMPRESSED_INSTALL),y)
+    KBUILD_IMAGE := $(boot)/Image.gz
+  else
+    KBUILD_IMAGE := $(boot)/Image
+  endif
 else
-KBUILD_IMAGE	:= $(boot)/vmlinuz.efi
+  KBUILD_IMAGE := $(boot)/vmlinuz.efi
 endif
 
 all:	$(notdir $(KBUILD_IMAGE))

---
base-commit: 469f1bad3c1c6e268059f78c0eec7e9552b3894c
change-id: 20240819-uncompressed-distro-packages-8da6959ed698

Best regards,
-- 
Bjorn Andersson <quic_bjorande@quicinc.com>
Re: [PATCH v2] arm64: Allow packing uncompressed images into distro packages
Posted by Marc Zyngier 1 month, 2 weeks ago
Hi Bjorn,

On Wed, 11 Sep 2024 03:53:16 +0100,
Bjorn Andersson <andersson@kernel.org> wrote:
> 
> From: Bjorn Andersson <quic_bjorande@quicinc.com>
> 
> The distro packages (deb-pkg, pacman-pkg, rpm-pkg) are generated using
> the compressed kernel image, which means that the kernel once installed
> can not be booted with systemd-boot.

Are you sure? I just installed a guest with systemd-boot
(252.30-1~deb12u, as shipped in Debian), and it is perfectly able to
boot a compressed kernel.

> 
> This differs from the packages generated by the distros themselves,
> which uses the uncompressed image.
> 
> Use the newly introduced CONFIG_COMPRESSED_INSTALL option to allow
> selection of which version of the kernel image should be packaged into
> the distro packages.

I'm normally building kernels as Debian packages, without any of
CONFIG_EFI_ZBOOT or CONFIG_COMPRESSED_INSTALL.

As a result, the installed kernel image of a Debian package shoots up
from ~8M to an impressive 25M, since we're not picking the compressed
image anymore. Storage may be cheap, but still.

I really don't think CONFIG_COMPRESSED_INSTALL should change the
existing behaviours, and a new option would be better suited to enable
this new setup if deemed necessary.

Thanks,

	M.

-- 
Without deviation from the norm, progress is not possible.
Re: [PATCH v2] arm64: Allow packing uncompressed images into distro packages
Posted by Bjorn Andersson 2 weeks, 5 days ago
On Wed, Oct 16, 2024 at 05:44:54PM +0100, Marc Zyngier wrote:
> Hi Bjorn,
> 
> On Wed, 11 Sep 2024 03:53:16 +0100,
> Bjorn Andersson <andersson@kernel.org> wrote:
> > 
> > From: Bjorn Andersson <quic_bjorande@quicinc.com>
> > 
> > The distro packages (deb-pkg, pacman-pkg, rpm-pkg) are generated using
> > the compressed kernel image, which means that the kernel once installed
> > can not be booted with systemd-boot.
> 
> Are you sure? I just installed a guest with systemd-boot
> (252.30-1~deb12u, as shipped in Debian), and it is perfectly able to
> boot a compressed kernel.
> 

Sorry for the late response, to verify I did "make defconfig bindeb-pkg"
and crafted a disk image using mkosi. It contains:

# apt info systemd-boot
Package: systemd-boot
Version: 257~rc1-4

It fails to load my the compressed image:
../src/boot/efi/boot.c:2557@image_start: Error loading \debian\6.12.0-rc6-next-20241108-00003-ga216563e3174-dirty\vmlinuz: Unsupported

Which is expected per per this discussion:
https://github.com/systemd/systemd/issues/23788

> > 
> > This differs from the packages generated by the distros themselves,
> > which uses the uncompressed image.
> > 
> > Use the newly introduced CONFIG_COMPRESSED_INSTALL option to allow
> > selection of which version of the kernel image should be packaged into
> > the distro packages.
> 
> I'm normally building kernels as Debian packages, without any of
> CONFIG_EFI_ZBOOT or CONFIG_COMPRESSED_INSTALL.
> 

My goal is to make "make defconfig bindeb-pkg" (and the other -pkg
targets) boot out of the box in a "standard system".

> As a result, the installed kernel image of a Debian package shoots up
> from ~8M to an impressive 25M, since we're not picking the compressed
> image anymore. Storage may be cheap, but still.
> 

No argument about this.

> I really don't think CONFIG_COMPRESSED_INSTALL should change the
> existing behaviours, and a new option would be better suited to enable
> this new setup if deemed necessary.
> 

My main concern is that the "make *-pkg" targets create packages with
the compressed image, while at least Arch Linux Arm, Debian, and Fedora
are packaging uncompressed images in their official packages.

Regards,
Bjorn

> Thanks,
> 
> 	M.
> 
> -- 
> Without deviation from the norm, progress is not possible.
Re: [PATCH v2] arm64: Allow packing uncompressed images into distro packages
Posted by Konrad Dybcio 1 month, 3 weeks ago
On 11.09.2024 4:53 AM, Bjorn Andersson wrote:
> From: Bjorn Andersson <quic_bjorande@quicinc.com>
> 
> The distro packages (deb-pkg, pacman-pkg, rpm-pkg) are generated using
> the compressed kernel image, which means that the kernel once installed
> can not be booted with systemd-boot.
> 
> This differs from the packages generated by the distros themselves,
> which uses the uncompressed image.
> 
> Use the newly introduced CONFIG_COMPRESSED_INSTALL option to allow
> selection of which version of the kernel image should be packaged into
> the distro packages.
> 
> Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
> ---

Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>

Konrad