| Message ID | 20260410092258.1377296-1-mikko.rapeli@linaro.org (mailing list archive) |
|---|---|
| State | New |
| Headers | show |
| Series | [v2] genericarm64 core-image-initramfs-boot: remove some kernel drivers | expand |
Hi Mikko, This is a good improvement to reduce the initramfs. Mikko Rapeli via lists.yoctoproject.org <mikko.rapeli= linaro.org@lists.yoctoproject.org> escreveu (sexta, 10/04/2026 à(s) 10:23): > genericarm64 supports a lot of HW and thus large collection of kernel > drivers are enabled and installed to images by default. > Subset of the kernel drivers are needed in initramfs to mount rootfs > from local mass storage devices. This increases initramfs size a lot > and with new kernel config updates even more. Thus remove kernel > drivers from initramfs image which are not needed for mounting > rootfs from local mass storage devices. GPU, Bluetooth, NFC, > sound, networking etc support is not needed in the initramfs. > > According to buildhistory core-image-initramfs-boot size is reduced > from 118 to 83 Mb. > > Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> > --- > .../images/core-image-initramfs-boot.bbappend | 22 +++++++++++++++++++ > 1 file changed, 22 insertions(+) > create mode 100644 > meta-yocto-bsp/recipes-core/images/core-image-initramfs-boot.bbappend > > diff --git > a/meta-yocto-bsp/recipes-core/images/core-image-initramfs-boot.bbappend > b/meta-yocto-bsp/recipes-core/images/core-image-initramfs-boot.bbappend > new file mode 100644 > index 000000000000..58d17047fc4c > --- /dev/null > +++ b/meta-yocto-bsp/recipes-core/images/core-image-initramfs-boot.bbappend > @@ -0,0 +1,22 @@ > +POSTFUNCS = "" > +POSTFUNCS:genericarm64 = "reduce_initrd_size" > + > +do_rootfs[postfuncs] += "${POSTFUNCS}" > +reduce_initrd_size () { > + # these kernel modules are not needed for rootfs mount from local > mass storage > + # and can be loaded from main rootfs by udev > + rm -rf \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/bluetooth \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/gpu \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/media \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/net \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/nfc \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/usb/gadget \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/fs/fuse \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/net/bluetooth \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/net/bridge \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/net/netfilter \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/net/nfc \ > + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/sound > I think it would be better if this were defined in a variable so it could be easily customized if needed. KERNEL_MODULES_PATHS_TO_REMOVE = "" KERNEL_MODULES_PATHS_TO_REMOVE:genericarm64 = " \ drivers/bluetooth \ drivers/gpu \ ... \ " With something like that it can be looped in the reduce_initrd_size function. Jose +} > + > -- > 2.34.1 > > > -=-=-=-=-=-=-=-=-=-=-=- > Links: You receive all messages sent to this group. > View/Reply Online (#13894): > https://lists.yoctoproject.org/g/poky/message/13894 > Mute This Topic: https://lists.yoctoproject.org/mt/118756784/5052612 > Group Owner: poky+owner@lists.yoctoproject.org > Unsubscribe: https://lists.yoctoproject.org/g/poky/unsub [ > quaresma.jose@gmail.com] > -=-=-=-=-=-=-=-=-=-=-=- > >
diff --git a/meta-yocto-bsp/recipes-core/images/core-image-initramfs-boot.bbappend b/meta-yocto-bsp/recipes-core/images/core-image-initramfs-boot.bbappend new file mode 100644 index 000000000000..58d17047fc4c --- /dev/null +++ b/meta-yocto-bsp/recipes-core/images/core-image-initramfs-boot.bbappend @@ -0,0 +1,22 @@ +POSTFUNCS = "" +POSTFUNCS:genericarm64 = "reduce_initrd_size" + +do_rootfs[postfuncs] += "${POSTFUNCS}" +reduce_initrd_size () { + # these kernel modules are not needed for rootfs mount from local mass storage + # and can be loaded from main rootfs by udev + rm -rf \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/bluetooth \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/gpu \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/media \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/net \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/nfc \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/drivers/usb/gadget \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/fs/fuse \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/net/bluetooth \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/net/bridge \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/net/netfilter \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/net/nfc \ + ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/sound +} +
genericarm64 supports a lot of HW and thus large collection of kernel drivers are enabled and installed to images by default. Subset of the kernel drivers are needed in initramfs to mount rootfs from local mass storage devices. This increases initramfs size a lot and with new kernel config updates even more. Thus remove kernel drivers from initramfs image which are not needed for mounting rootfs from local mass storage devices. GPU, Bluetooth, NFC, sound, networking etc support is not needed in the initramfs. According to buildhistory core-image-initramfs-boot size is reduced from 118 to 83 Mb. Signed-off-by: Mikko Rapeli <mikko.rapeli@linaro.org> --- .../images/core-image-initramfs-boot.bbappend | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 meta-yocto-bsp/recipes-core/images/core-image-initramfs-boot.bbappend