[Buildroot] [PATCH 1/1] linux: add compressions for appended initramfs

Hanspeter Portner dev at open-music-kontrollers.ch
Fri Sep 17 13:18:51 UTC 2021


This changes take effect in the case of BR2_TARGET_ROOTFS_INITRAMFS=y
and one of BR2_LINUX_KERNEL_{GZIP,LZ4,LZMA,LZO,XZ}=y.

Instead of using the kernel's default compression (gzip) for appended initramfs,
this changes set initramfs compression explicitely to the same compression as
the kernel itself, which seems a sensible thing to do, imho.

Apart from these kernel config parameters ...

* CONFIG_KERNEL_GZIP
* CONFIG_KERNEL_LZ4
* CONFIG_KERNEL_LZMA
* CONFIG_KERNEL_LZO
* CONFIG_KERNEL_XZ
* CONFIG_KERNEL_ZSTD
* CONFIG_KERNEL_UNCOMPRESSED

... we now also set these new kernel config parameters, as without those,
the appended initramfs seems to always be compressed with gzip:

* CONFIG_INITRAMFS_COMPRESSION_GZIP
* CONFIG_INITRAMFS_COMPRESSION_LZ4
* CONFIG_INITRAMFS_COMPRESSION_LZMA
* CONFIG_INITRAMFS_COMPRESSION_LZO
* CONFIG_INITRAMFS_COMPRESSION_XZ
* CONFIG_INITRAMFS_COMPRESSION_NONE

The former are automatically set depending on whether one of the
following buildroot config parameters is set analogously to how it is done
for CONFIG_KERNEL_{GZIP,LZ4,LZMA,LZO,XZ,ZSTD,UNCOMPRESSED}:

* BR2_LINUX_KERNEL_GZIP
* BR2_LINUX_KERNEL_LZ4
* BR2_LINUX_KERNEL_LZMA
* BR2_LINUX_KERNEL_LZO
* BR2_LINUX_KERNEL_XZ
* BR2_LINUX_KERNEL_UNCOMPRESSED

Signed-off-by: Hanspeter Portner <dev at open-music-kontrollers.ch>
---
 linux/linux.mk | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/linux/linux.mk b/linux/linux.mk
index 61fdc0c76c..f192341a32 100644
--- a/linux/linux.mk
+++ b/linux/linux.mk
@@ -106,6 +106,15 @@ LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_XZ) += CONFIG_KERNEL_XZ
 LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_ZSTD) += CONFIG_KERNEL_ZSTD
 LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_UNCOMPRESSED) += CONFIG_KERNEL_UNCOMPRESSED
 
+INITRAMFS_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_GZIP) += CONFIG_INITRAMFS_COMPRESSION_GZIP
+INITRAMFS_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZ4) += CONFIG_INITRAMFS_COMPRESSION_LZ4
+INITRAMFS_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZMA) += CONFIG_INITRAMFS_COMPRESSION_LZMA
+INITRAMFS_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZO) += CONFIG_INITRAMFS_COMPRESSION_LZO
+INITRAMFS_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_XZ) += CONFIG_INITRAMFS_COMPRESSION_XZ
+# zstd compression seems not supported, yet
+#INITRAMFS_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_ZSTD) += CONFIG_INITRAMFS_COMPRESSION_ZSTD
+INITRAMFS_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_UNCOMPRESSED) += CONFIG_INITRAMFS_COMPRESSION_NONE
+
 ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL),y)
 LINUX_DEPENDENCIES += host-openssl
 endif
@@ -352,6 +361,10 @@ define LINUX_KCONFIG_FIXUP_CMDS
 		$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_SOURCE,"$${BR_BINARIES_DIR}/rootfs.cpio")
 		$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_UID,0)
 		$(call KCONFIG_SET_OPT,CONFIG_INITRAMFS_ROOT_GID,0))
+		$(call KCONFIG_ENABLE_OPT,$(strip $(INITRAMFS_COMPRESSION_OPT_y)))
+		$(foreach opt, $(INITRAMFS_COMPRESSION_OPT_),
+			$(call KCONFIG_DISABLE_OPT,$(opt))
+		)
 	$(if $(BR2_ROOTFS_DEVICE_CREATION_STATIC),,
 		$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS)
 		$(call KCONFIG_ENABLE_OPT,CONFIG_DEVTMPFS_MOUNT))
-- 
2.33.0



More information about the buildroot mailing list