Re: [poky] [PATCH v2] genericarm64 core-image-initramfs-boot: remove some kernel drivers

Jose Quaresma <[email protected]> Fri, 10 Apr 2026 11:47:40 +0100
Newsgroups org.yoctoproject.lists.poky
Message-ID <CANPvuRnoWUeahiofU6Hy63i3tbg-BuXeBhvLBZSN-whuT5NmKw@mail.gmail.com>
--00000000000071c59d064f18dd7c
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hi Mikko,

This is a good improvement to reduce the initramfs.

Mikko Rapeli via lists.yoctoproject.org <mikko.rapeli=3D
[email protected]> escreveu (sexta, 10/04/2026 =C3=A0(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 <[email protected]>
> ---
>  .../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.bbappe=
nd
> @@ -0,0 +1,22 @@
> +POSTFUNCS =3D ""
> +POSTFUNCS:genericarm64 =3D "reduce_initrd_size"
> +
> +do_rootfs[postfuncs] +=3D "${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 =3D ""
KERNEL_MODULES_PATHS_TO_REMOVE:genericarm64 =3D " \
  drivers/bluetooth \
  drivers/gpu \
  ... \
"

With something like that it can be looped in the reduce_initrd_size
function.

Jose

+}
> +
> --
> 2.34.1
>
>
> -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-
> 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: [email protected]
> Unsubscribe: https://lists.yoctoproject.org/g/poky/unsub [
> [email protected]]
> -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-
>
>

--=20
Best regards,

Jos=C3=A9 Quaresma

--00000000000071c59d064f18dd7c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">Hi Mikko,</div><div><br></div>This is a g=
ood=C2=A0improvement=C2=A0to reduce the initramfs.<div><br><div class=3D"gm=
ail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">Mikk=
o Rapeli via <a href=3D"http://lists.yoctoproject.org">lists.yoctoproject.o=
rg</a> &lt;mikko.rapeli=3D<a href=3D"mailto:[email protected]=
rg">[email protected]</a>&gt; escreveu (sexta, 10/04/2026 =
=C3=A0(s) 10:23):<br></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex=
">genericarm64 supports a lot of HW and thus large collection of kernel<br>
drivers are enabled and installed to images by default.<br>
Subset of the kernel drivers are needed in initramfs to mount rootfs<br>
from local mass storage devices. This increases initramfs size a lot<br>
and with new kernel config updates even more. Thus remove kernel<br>
drivers from initramfs image which are not needed for mounting<br>
rootfs from local mass storage devices. GPU, Bluetooth, NFC,<br>
sound, networking etc support is not needed in the initramfs.<br>
<br>
According to buildhistory core-image-initramfs-boot size is reduced<br>
from 118 to 83 Mb.<br>
<br>
Signed-off-by: Mikko Rapeli &lt;<a href=3D"mailto:[email protected]" =
target=3D"_blank">[email protected]</a>&gt;<br>
---<br>
=C2=A0.../images/core-image-initramfs-boot.bbappend | 22 ++++++++++++++++++=
+<br>
=C2=A01 file changed, 22 insertions(+)<br>
=C2=A0create mode 100644 meta-yocto-bsp/recipes-core/images/core-image-init=
ramfs-boot.bbappend<br>
<br>
diff --git a/meta-yocto-bsp/recipes-core/images/core-image-initramfs-boot.b=
bappend b/meta-yocto-bsp/recipes-core/images/core-image-initramfs-boot.bbap=
pend<br>
new file mode 100644<br>
index 000000000000..58d17047fc4c<br>
--- /dev/null<br>
+++ b/meta-yocto-bsp/recipes-core/images/core-image-initramfs-boot.bbappend=
<br>
@@ -0,0 +1,22 @@<br>
+POSTFUNCS =3D &quot;&quot;<br>
+POSTFUNCS:genericarm64 =3D &quot;reduce_initrd_size&quot;<br>
+<br>
+do_rootfs[postfuncs] +=3D &quot;${POSTFUNCS}&quot;<br>
+reduce_initrd_size () {<br>
+=C2=A0 =C2=A0 # these kernel modules are not needed for rootfs mount from =
local mass storage<br>
+=C2=A0 =C2=A0 # and can be loaded from main rootfs by udev<br>
+=C2=A0 =C2=A0 rm -rf \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/d=
rivers/bluetooth \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/d=
rivers/gpu \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/d=
rivers/media \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/d=
rivers/net \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/d=
rivers/nfc \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/d=
rivers/usb/gadget \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/f=
s/fuse \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/n=
et/bluetooth \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/n=
et/bridge \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/n=
et/netfilter \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/n=
et/nfc \<br>
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 ${WORKDIR}/rootfs/${libdir}/modules/*/kernel/s=
ound<br></blockquote><div><br></div><div>I think it would be better if this=
 were defined in a variable so it could be easily customized if needed.</di=
v><div><br>KERNEL_MODULES_PATHS_TO_REMOVE =3D &quot;&quot;</div><div>KERNEL=
_MODULES_PATHS_TO_REMOVE:genericarm64 =3D &quot; \</div><div>=C2=A0 drivers=
/bluetooth \</div><div>=C2=A0 drivers/gpu \</div><div>=C2=A0 ... \</div><di=
v>&quot;</div><div><br></div><div>With something=C2=A0like that it can be l=
ooped in the reduce_initrd_size function.<br><br></div><div>Jose<br><br></d=
iv><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex">
+}<br>
+<br>
-- <br>
2.34.1<br>
<br>
<br>
-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-<br>
Links: You receive all messages sent to this group.<br>
View/Reply Online (#13894): <a href=3D"https://lists.yoctoproject.org/g/pok=
y/message/13894" rel=3D"noreferrer" target=3D"_blank">https://lists.yoctopr=
oject.org/g/poky/message/13894</a><br>
Mute This Topic: <a href=3D"https://lists.yoctoproject.org/mt/118756784/505=
2612" rel=3D"noreferrer" target=3D"_blank">https://lists.yoctoproject.org/m=
t/118756784/5052612</a><br>
Group Owner: <a href=3D"mailto:poky%[email protected]" target=
=3D"_blank">[email protected]</a><br>
Unsubscribe: <a href=3D"https://lists.yoctoproject.org/g/poky/unsub" rel=3D=
"noreferrer" target=3D"_blank">https://lists.yoctoproject.org/g/poky/unsub<=
/a> [<a href=3D"mailto:[email protected]" target=3D"_blank">quaresma.=
[email protected]</a>]<br>
-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-<br>
<br>
</blockquote></div><div><br clear=3D"all"></div><div><br></div><span class=
=3D"gmail_signature_prefix">-- </span><br><div dir=3D"ltr" class=3D"gmail_s=
ignature"><div dir=3D"ltr">Best regards,<div><br>Jos=C3=A9 Quaresma</div></=
div></div></div></div>

--00000000000071c59d064f18dd7c--