On Thu, Mar 14, 2024 at 1:28 PM Simon Glass <sjg@xxxxxxxxxxxx> wrote: > > Add a script which produces a Flat Image Tree (FIT), a single file > containing the built kernel and associated devicetree files. > Compression defaults to gzip which gives a good balance of size and > performance. > > The files compress from about 86MB to 24MB using this approach. > > The FIT can be used by bootloaders which support it, such as U-Boot > and Linuxboot. It permits automatic selection of the correct > devicetree, matching the compatible string of the running board with > the closest compatible string in the FIT. There is no need for > filenames or other workarounds. > > Add a 'make image.fit' build target for arm64, as well. > > The FIT can be examined using 'dumpimage -l'. > > This uses the 'dtbs-list' file but processes only .dtb files, ignoring > the overlay .dtbo files. > > This features requires pylibfdt (use 'pip install libfdt'). It also > requires compression utilities for the algorithm being used. Supported > compression options are the same as the Image.xxx files. Use > FIT_COMPRESSION to select an algorithm other than gzip. > > While FIT supports a ramdisk / initrd, no attempt is made to support > this here, since it must be built separately from the Linux build. > > Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx> > --- > > Changes in v11: > - Use dtbslist file in image.fit rule > - Update cmd_fit rule as per Masahiro > - Don't mention ignoring files without a .dtb prefix > - Use argparse fromfile_prefix_chars feature > - Add a -v option and use it for output (with make V=1) > - rename srcdir to dtbs > - Use -o for the output file instead of -f > > --- a/scripts/Makefile.lib > +++ b/scripts/Makefile.lib > @@ -504,6 +504,21 @@ quiet_cmd_uimage = UIMAGE $@ > -a $(UIMAGE_LOADADDR) -e $(UIMAGE_ENTRYADDR) \ > -n '$(UIMAGE_NAME)' -d $< $@ > > +# Flat Image Tree (FIT) > +# This allows for packaging of a kernel and all devicetrees files, using > +# compression. > +# --------------------------------------------------------------------------- > + > +MAKE_FIT := $(srctree)/scripts/make_fit.py > + > +# Use this to override the compression algorithm > +FIT_COMPRESSION ?= gzip > + > +quiet_cmd_fit = FIT $@ > + cmd_fit = $(MAKE_FIT) -o $@ --arch $(UIMAGE_ARCH) --os linux \ > + --name '$(UIMAGE_NAME)' $(if $(V),-v) \ > + --compress $(FIT_COMPRESSION) -k $< @$(word 2,$^) > + A nit in your new code. $(if $(V),-v) does not work for KBUILD_VERBOSE env variable. It should be $(if $(findstring 1,$(KBUILD_VERBOSE)),-v) -- Best Regards Masahiro Yamada