Re: [PATCH v6 6/8] kbuild: Allow adding modules into the FIT ramdisk
From: Nicolas Schier <nsc@kernel.org>
Date: 2025-11-20 20:10:46
Also in:
linux-kbuild, lkml
On Thu, Nov 20, 2025 at 08:49:14AM +0100, Thomas Weißschuh wrote:
On Wed, Nov 19, 2025 at 11:13:27AM -0700, Simon Glass wrote:quoted
Support 'make image.fit FIT_MODULES=1' to put all the modules into a ramdisk image within the FIT. Add image.fit as a target which requires modules, so that modules will built automatically when using FIT_MODULES is not empty. Signed-off-by: Simon Glass <sjg@chromium.org> Suggested-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Suggested-by: Reviewed-by: Nicolas Schier <nsc@kernel.org> Acked-by: Nathan Chancellor <nathan@kernel.org> --- Changes in v6: - Mention that FIT_MODULES just needs to be non-empty - Make use of modules.order instead of using 'find' Changes in v5: - Build modules automatically if needed (fix from Nicolas Schier) Changes in v4: - Rename the Makefile variable from 'EXTRA' to 'MAKE_FIT_FLAGS' - Use an empty FIT_MODULES to disable the feature, instead of '0' - Make use of the 'modules' dependency to ensure modules are built - Pass the list of modules to the script Makefile | 1 + arch/arm64/Makefile | 1 + scripts/Makefile.lib | 6 +++++- 3 files changed, 7 insertions(+), 1 deletion(-)diff --git a/Makefile b/Makefile index 8cd46222fc48..4eccaef95826 100644 --- a/Makefile +++ b/Makefile@@ -773,6 +773,7 @@ endif # Just "make" or "make all" shall build modules as well modules-targets := all +modules-targets += $(if $(FIT_MODULES),image.fit) modules-targets += modules modules-targets += nsdeps modules-targets += compile_commands.jsondiff --git a/arch/arm64/Makefile b/arch/arm64/Makefile index 73a10f65ce8b..7036f251ab40 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile@@ -174,6 +174,7 @@ endif all: $(notdir $(KBUILD_IMAGE)) image.fit: dtbs +image.fit: $(if $(FIT_MODULES),modules) vmlinuz.efi image.fit: Image $(BOOT_TARGETS): vmlinuxdiff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 1d581ba5df66..28e0cc0865b1 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib@@ -398,11 +398,15 @@ MAKE_FIT := $(srctree)/scripts/make_fit.py # Use this to override the compression algorithm FIT_COMPRESSION ?= gzip +# Set this to non-empty to include an initrd with all the kernel modules +FIT_MODULES ?= + quiet_cmd_fit = FIT $@ cmd_fit = $(MAKE_FIT) -o $@ --arch $(UIMAGE_ARCH) --os linux \ - --name '$(UIMAGE_NAME)' \ + --name '$(UIMAGE_NAME)' $(MAKE_FIT_FLAGS) \Remnant of a previous revision?quoted
$(if $(findstring 1,$(KBUILD_VERBOSE)),-v) \ $(if $(FIT_DECOMPOSE_DTBS),--decompose-dtbs) \ + $(if $(FIT_MODULES),--modules @$(objtree)/modules.order) \I am wondering how module dependencies work without the depmod invocation and modules.dep file.
oh, good point. Stripping and signing and module compression is also done during 'modules_install'. -- Nicolas