]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
UBUNTU: [Packaging] add rules to build FIT image
authorShrirang Bagul <shrirang.bagul@canonical.com>
Mon, 14 Oct 2019 10:09:12 +0000 (18:09 +0800)
committerKhalid Elmously <khalid.elmously@canonical.com>
Fri, 18 Oct 2019 04:51:46 +0000 (00:51 -0400)
BugLink: https://bugs.launchpad.net/bugs/1847969
Add a fit_signed option and a script so we can build FIT images that
will be eventually signed.

Signed-off-by: Alfonso Sánchez-Beato <alfonso.sanchez-beato@canonical.com>
Signed-off-by: Shrirang Bagul <shrirang.bagul@canonical.com>
Acked-by: Kleber Souza <kleber.souza@canonical.com>
Acked-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
debian/rules
debian/rules.d/1-maintainer.mk
debian/rules.d/2-binary-arch.mk
debian/scripts/build-fit [new file with mode: 0755]

index 04a71812802c45b05f1dfc9e280ae0efb143c2f7..babb28f904ae7085bf60bb2536010e9e7398ef61 100755 (executable)
@@ -47,7 +47,7 @@ ifneq ($(DEB_HOST_ARCH),$(DEB_BUILD_ARCH))
 endif
 
 # Are any of the kernel signing options enabled.
-any_signed=$(sort $(filter-out false,$(uefi_signed) $(opal_signed)))
+any_signed=$(sort $(filter-out false,$(uefi_signed) $(fit_signed) $(opal_signed)))
 ifeq ($(any_signed),true)
 bin_pkg_name=$(bin_pkg_name_unsigned)
 else
index 8144be29523ec42b91f70aee2bf2143035b961f8..82683290cabb6701776cd6da825ad98879234316 100644 (file)
@@ -91,6 +91,7 @@ printenv:
        @echo "any_signed                = $(any_signed)"
        @echo " uefi_signed               = $(uefi_signed)"
        @echo " opal_signed               = $(opal_signed)"
+       @echo " fit_signed                = $(fit_signed)"
        @echo "full_build                = $(full_build)"
        @echo "libc_dev_version          = $(libc_dev_version)"
        @echo "DEB_HOST_GNU_TYPE         = $(DEB_HOST_GNU_TYPE)"
index 3e4c81a88fc7e1b3d5477304f740bc0413381614..8fe62a589e289a12f1cc73326efa180ab7a6c1bb 100644 (file)
@@ -452,6 +452,20 @@ endif
        install -m644 $(abidir)/$*.compiler \
                $(pkgdir_bldinfo)/usr/lib/linux/$(abi_release)-$*/compiler
 
+ifeq ($(fit_signed),true)
+       install -d $(signingv)
+       cp -p $(pkgdir_bin)/boot/$(instfile)-$(abi_release)-$* \
+               $(signingv)/$(instfile)-$(abi_release)-$*;
+       # Build FIT image now that the modules folder exists
+       $(SHELL) $(DROOT)/scripts/build-fit \
+               $(CURDIR)/$(DEBIAN)/$(fit_its) \
+               "$(foreach f, $(fit_dtb_files), $(builddir)/build-$*/$(f))" \
+               $(abi_release)-$(target_flavour) \
+               $(CURDIR)/$(DROOT)/linux-modules-$(abi_release)-$* \
+               $(signingv)
+       cp -p $(signingv)/fit-$(abi_release)-$*.fit $(pkgdir_bin)/boot/
+endif
+
 headers_tmp := $(CURDIR)/debian/tmp-headers
 headers_dir := $(CURDIR)/debian/linux-libc-dev
 
diff --git a/debian/scripts/build-fit b/debian/scripts/build-fit
new file mode 100755 (executable)
index 0000000..0929261
--- /dev/null
@@ -0,0 +1,40 @@
+#!/bin/sh -e
+# Creates a FIT image
+# $1: ITS file (FIT components description)
+# $2: list of space-separated dtb files
+# $3: kernel version
+# $4: kernel modules directory
+# $5: destination directory
+
+. debian/debian.env
+
+echo "Creating FIT image"
+fit_its="$1"
+dtb_files="$2"
+KERNEL_VERSION="$3"
+KERNEL_MODULES_D="$4"
+dest_d="$5"
+
+set -x
+fit_d=$dest_d
+mkdir -p "$fit_d"
+# Export variables to be used by hooks
+export KERNEL_VERSION
+export KERNEL_MODULES_D
+initrd_f=initrd.img
+mkinitramfs -o "$initrd_f"
+mv "$initrd_f" "$fit_d"
+
+mkdir -p "$fit_d"/dtbs/
+for dtb in $dtb_files; do
+    cp -f "$dtb" "$fit_d"/dtbs/
+done
+
+cp -f "$dest_d"/vmlinuz-* "$fit_d"/zImage
+cp -f "$fit_its" "$fit_d"
+
+cd "$fit_d"
+mkimage -D "-I dts -O dtb -p 2000" -f "${fit_its##*/}" fit-"$KERNEL_VERSION".fit
+cd -
+
+rm -rf "$fit_d"/"$initrd_f" "$fit_d"/dtbs/ "$fit_d"/zImage "$fit_d"/"${fit_its##*/}"