Message ID | 20250908105315.19583-2-m-shah@ti.com |
---|---|
State | Changes Requested |
Delegated to: | Ryan Eatmon |
Headers | show |
Series | Add recipes to build initramfs image | expand |
After some discussion in a call with Denys today, I think we have some feedback on what is needed to better leverage this patch idea. 1) We need the way to get this image built as part of the build process. The best way to accomplish that will likely be to follow the firmware approach and include it in the MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS variable for each platform that requires it. 2) We need a better way to specify the list of MODULES rather than hardcoding the list in the recipe. The list of required modules will likely be different for different platforms. To that end we recommend creating a new variable that should be defined in the ti-soc.inc: TI_INITRAMFS_KERNEL_MODULES ?= "" Then in each platform specific .inc file we can set that list to the needed modules based on the ti-bsp need. Our vendor kernels do not need it, so it could remain blank, but the mainline/next bsps could set it since those actually create the kernel module packages. TI_INITRAMFS_KERNEL_MODULES:append:bsp-mainline = " mod1 mod2" TI_INITRAMFS_KERNEL_MODULES:append:bsp-next = " mod1 mod2" Then in the ti-initrd-image.bb you would drop the MODULES="" setting and just change to the variable TI_INITRAMFS_KERNEL_MODULES. This way, if there are other layers that want to create their own initramfs we have a variable in place for them to use to include the required modules based on the kernel version that is being built. So, I would probably break all of this up into multiple patches. The first patch would the work in #2 above to establish the needed variable for all platforms. The next patches are your patches but moving to TI_INITRAMFS_KERNEL_MODULES. And the final patch would be adding your new ti-initrd-image into MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS list for all platforms. Did I miss anything, Denys? On 9/8/2025 5:53 AM, Moteen Shah wrote: > Introduce a new minimal initramfs image which will be used > for all K3 devices in the boot flow. The image will package > boot essential and other modules which will be modprobed by > initramfs-udev once the inbuilt drivers gets probed. > > Signed-off-by: Moteen Shah <m-shah@ti.com> > --- > .../initrd/packagegroup-ti-initrd.bb | 5 ++ > .../recipes-ti/initrd/ti-initrd-image.bb | 56 +++++++++++++++++++ > 2 files changed, 61 insertions(+) > create mode 100644 meta-ti-bsp/recipes-ti/initrd/packagegroup-ti-initrd.bb > create mode 100644 meta-ti-bsp/recipes-ti/initrd/ti-initrd-image.bb > > diff --git a/meta-ti-bsp/recipes-ti/initrd/packagegroup-ti-initrd.bb b/meta-ti-bsp/recipes-ti/initrd/packagegroup-ti-initrd.bb > new file mode 100644 > index 00000000..8847cb2e > --- /dev/null > +++ b/meta-ti-bsp/recipes-ti/initrd/packagegroup-ti-initrd.bb > @@ -0,0 +1,5 @@ > +SUMMARY = "Minimal initrd for boot requirements" > + > +require recipes-core/packagegroups/packagegroup-core-boot.bb > + > +RDEPENDS:${PN}:remove = "grub-efi kernel" > diff --git a/meta-ti-bsp/recipes-ti/initrd/ti-initrd-image.bb b/meta-ti-bsp/recipes-ti/initrd/ti-initrd-image.bb > new file mode 100644 > index 00000000..f6b99073 > --- /dev/null > +++ b/meta-ti-bsp/recipes-ti/initrd/ti-initrd-image.bb > @@ -0,0 +1,56 @@ > +SUMMARY = "TI SDK minimal initrd image" > + > +DESCRIPTION = "Image meant to probe boot essential modules\ > + and other modules to reach the userspace, which cannot be\ > + built inside the upstream linux kernel image.\ > +" > + > +LICENSE = "MIT" > + > +inherit core-image > + > +IMAGE_NAME = "initrd" > + > +IMAGE_NAME_SUFFIX = "" > + > +IMAGE_FEATURES:remove = "package-management" > + > +INITRAMFS_FSTYPES = "cpio cpio.xz" > + > +IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}" > + > +INITRAMFS_SCRIPTS ?= "\ > + initramfs-framework-base \ > + initramfs-module-udev \ > + initramfs-module-nfsrootfs \ > +" > + > +MODULES = "\ > + kernel-module-cdns-pltfrm \ > + kernel-module-ti-j721e-ufs \ > + kernel-module-tps6594-i2c \ > +" > + > +UTILS = "\ > + cifs-utils \ > + nfs-utils \ > + nfs-utils-client \ > +" > + > +PACKAGE_INSTALL = "\ > + ${INITRAMFS_SCRIPTS} \ > + ${UTILS} \ > + ${MODULES} \ > + packagegroup-ti-initrd \ > +" > + > +export IMAGE_BASENAME = "ti-initrd-image" > + > +# To further reduce the size of the rootfs, remove the /boot directory from > +# the final image this is usually done by adding RDEPENDS_kernel-base = "" > +# in the configuration file. In our case we can't use this method. Instead we > +# just wipe out the content of "/boot" before creating the image. > +ROOTFS_POSTPROCESS_COMMAND += "empty_boot_dir; " > +empty_boot_dir () { > + rm -rf ${IMAGE_ROOTFS}/boot/* > +}
diff --git a/meta-ti-bsp/recipes-ti/initrd/packagegroup-ti-initrd.bb b/meta-ti-bsp/recipes-ti/initrd/packagegroup-ti-initrd.bb new file mode 100644 index 00000000..8847cb2e --- /dev/null +++ b/meta-ti-bsp/recipes-ti/initrd/packagegroup-ti-initrd.bb @@ -0,0 +1,5 @@ +SUMMARY = "Minimal initrd for boot requirements" + +require recipes-core/packagegroups/packagegroup-core-boot.bb + +RDEPENDS:${PN}:remove = "grub-efi kernel" diff --git a/meta-ti-bsp/recipes-ti/initrd/ti-initrd-image.bb b/meta-ti-bsp/recipes-ti/initrd/ti-initrd-image.bb new file mode 100644 index 00000000..f6b99073 --- /dev/null +++ b/meta-ti-bsp/recipes-ti/initrd/ti-initrd-image.bb @@ -0,0 +1,56 @@ +SUMMARY = "TI SDK minimal initrd image" + +DESCRIPTION = "Image meant to probe boot essential modules\ + and other modules to reach the userspace, which cannot be\ + built inside the upstream linux kernel image.\ +" + +LICENSE = "MIT" + +inherit core-image + +IMAGE_NAME = "initrd" + +IMAGE_NAME_SUFFIX = "" + +IMAGE_FEATURES:remove = "package-management" + +INITRAMFS_FSTYPES = "cpio cpio.xz" + +IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}" + +INITRAMFS_SCRIPTS ?= "\ + initramfs-framework-base \ + initramfs-module-udev \ + initramfs-module-nfsrootfs \ +" + +MODULES = "\ + kernel-module-cdns-pltfrm \ + kernel-module-ti-j721e-ufs \ + kernel-module-tps6594-i2c \ +" + +UTILS = "\ + cifs-utils \ + nfs-utils \ + nfs-utils-client \ +" + +PACKAGE_INSTALL = "\ + ${INITRAMFS_SCRIPTS} \ + ${UTILS} \ + ${MODULES} \ + packagegroup-ti-initrd \ +" + +export IMAGE_BASENAME = "ti-initrd-image" + +# To further reduce the size of the rootfs, remove the /boot directory from +# the final image this is usually done by adding RDEPENDS_kernel-base = "" +# in the configuration file. In our case we can't use this method. Instead we +# just wipe out the content of "/boot" before creating the image. +ROOTFS_POSTPROCESS_COMMAND += "empty_boot_dir; " +empty_boot_dir () { + rm -rf ${IMAGE_ROOTFS}/boot/* +}
Introduce a new minimal initramfs image which will be used for all K3 devices in the boot flow. The image will package boot essential and other modules which will be modprobed by initramfs-udev once the inbuilt drivers gets probed. Signed-off-by: Moteen Shah <m-shah@ti.com> --- .../initrd/packagegroup-ti-initrd.bb | 5 ++ .../recipes-ti/initrd/ti-initrd-image.bb | 56 +++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 meta-ti-bsp/recipes-ti/initrd/packagegroup-ti-initrd.bb create mode 100644 meta-ti-bsp/recipes-ti/initrd/ti-initrd-image.bb