Re: [meta-ti][master/wrynose][PATCH v5] initramfs: Add initramfs-module-netsetup recipe for NFS boot

Moteen Shah <[email protected]> Fri, 17 Jul 2026 14:16:23 +0530
Newsgroups org.yoctoproject.lists.meta-ti
Message-ID <[email protected]>
Hey all,

On 17/07/26 14:05, Moteen Shah via lists.yoctoproject.org wrote:
> Add a standalone initramfs-module-netsetup recipe that installs
> 83-netsetup, an initramfs-framework module that configures the network
> interface via DHCP before the NFS root mount. The recipe's RDEPENDS
> pulls in CPSW and its dependencies, so the kernel modules and DHCP
> client are only included when NFS boot support is needed.
>
> Include initramfs-module-netsetup in packagegroup-ti-core-initramfs
> gated on :bsp-next, where AM65_CPSW_NUSS became a loadable module.
> TI staging kernels (6.6/6.12/6.18) still have CPSW built-in (=y).
>
> Signed-off-by: Moteen Shah <[email protected]>
> ---
> Changes in v5:
> - Scope CPSW modules and netsetup inclusion to :k3:bsp-next to avoid
>    breaking legacy non-K3 platforms building with bsp-next (Denys)
> - Restore PACKAGE_ARCH = "${MACHINE_ARCH}" since recipe has
>    K3-specific RDEPENDS (Denys)
>
>   .../initramfs-module-netsetup/83-netsetup     | 54 +++++++++++++++++++
>   .../initramfs-module-netsetup_1.0.bb          | 32 +++++++++++
>   .../packagegroup-ti-core-initramfs.bb         |  2 +
>   3 files changed, 88 insertions(+)
>   create mode 100644 meta-ti-bsp/recipes-ti/initramfs/initramfs-module-netsetup/83-netsetup
>   create mode 100644 meta-ti-bsp/recipes-ti/initramfs/initramfs-module-netsetup_1.0.bb
>
> diff --git a/meta-ti-bsp/recipes-ti/initramfs/initramfs-module-netsetup/83-netsetup b/meta-ti-bsp/recipes-ti/initramfs/initramfs-module-netsetup/83-netsetup
> new file mode 100644
> index 00000000..8e76bac4
> --- /dev/null
> +++ b/meta-ti-bsp/recipes-ti/initramfs/initramfs-module-netsetup/83-netsetup
> @@ -0,0 +1,54 @@
> +#!/bin/sh
> +# Configure network via DHCP before NFS root mount. Polls for an Ethernet
> +# interface with sleep 1 per iteration to allow the Ethernet driver deferred
> +# probe chain to settle after udev loads the modules.
> +
> +netsetup_enabled() {
> +    [ "${bootparam_root}" = "/dev/nfs" ] || return 1
> +    return 0
> +}
> +
> +netsetup_run() {
> +    local iface timeout devtype
> +
> +    # Extract interface from ip= kernel param (format: client:server:gw:mask:host:device:autoconf)
> +    iface=""
> +    case "${bootparam_ip}" in
> +        dhcp|on|any|"")
> +            ;;
> +        *)
> +            iface=$(echo "${bootparam_ip}" | cut -d: -f6)
> +            ;;
> +    esac
> +
> +    udevadm trigger --action=add --subsystem-match=net
> +    udevadm settle --timeout=10
> +
> +    # Poll up to 60 seconds for an Ethernet interface (ARPHRD_ETHER = type 1).
> +    msg "netsetup: waiting for ethernet interface..."
> +    timeout=60
> +    while [ "${timeout}" -gt 0 ]; do
> +        if [ -n "${iface}" ] && [ -d "/sys/class/net/${iface}" ]; then
> +            break
> +        fi
> +        for dev in /sys/class/net/*; do
> +            [ -f "${dev}/type" ] || continue
> +            devtype=$(cat "${dev}/type")
> +            [ "${devtype}" = "1" ] || continue
> +            iface=$(basename "${dev}")
> +            break
> +        done
> +        [ -n "${iface}" ] && [ -d "/sys/class/net/${iface}" ] && break
> +        sleep 1
> +        timeout=$((timeout - 1))
> +    done
> +
> +    if [ -z "${iface}" ] || [ ! -d "/sys/class/net/${iface}" ]; then
> +        msg "netsetup: no ethernet interface found after 60s, skipping DHCP"
> +        return
> +    fi
> +
> +    msg "netsetup: configuring ${iface} via DHCP"
> +
> +    udhcpc -q -i "${iface}"
> +}
> diff --git a/meta-ti-bsp/recipes-ti/initramfs/initramfs-module-netsetup_1.0.bb b/meta-ti-bsp/recipes-ti/initramfs/initramfs-module-netsetup_1.0.bb
> new file mode 100644
> index 00000000..03925497
> --- /dev/null
> +++ b/meta-ti-bsp/recipes-ti/initramfs/initramfs-module-netsetup_1.0.bb
> @@ -0,0 +1,32 @@
> +SUMMARY = "initramfs support for DHCP network configuration before NFS root mount"
> +
> +LICENSE = "MIT"
> +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
> +
> +SRC_URI = "file://83-netsetup"
> +
> +S = "${UNPACKDIR}"
> +
> +do_install() {
> +    install -d ${D}/init.d
> +    install -m 0755 ${UNPACKDIR}/83-netsetup ${D}/init.d/83-netsetup
> +}
> +
> +FILES:${PN} = "/init.d/83-netsetup"
> +
> +RDEPENDS:${PN} = "\
> +    initramfs-framework-base \
> +"
> +
> +RDEPENDS:${PN}:append:k3:bsp-next = " \
> +    kernel-module-ti-am65-cpsw-nuss \
> +    kernel-module-k3-cppi-desc-pool \
> +    kernel-module-davinci-mdio \
> +    kernel-module-ti-cpsw-ale \
> +    kernel-module-ti-cpsw-sl \
> +    kernel-module-phylink \
> +    kernel-module-mdio-bitbang \
> +    kernel-module-phy-gmii-sel \
> +"
> +
> +PACKAGE_ARCH = "${MACHINE_ARCH}"
> diff --git a/meta-ti-bsp/recipes-ti/initramfs/packagegroup-ti-core-initramfs.bb b/meta-ti-bsp/recipes-ti/initramfs/packagegroup-ti-core-initramfs.bb
> index a9eff847..537d1f5a 100644
> --- a/meta-ti-bsp/recipes-ti/initramfs/packagegroup-ti-core-initramfs.bb
> +++ b/meta-ti-bsp/recipes-ti/initramfs/packagegroup-ti-core-initramfs.bb
> @@ -23,3 +23,5 @@ RDEPENDS:${PN} += "\
>       initramfs-module-nfsrootfs \
>       nfs-utils-mount \
>   "
> +
> +RDEPENDS:${PN}:append:k3:bsp-next = " initramfs-module-netsetup"
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#20155): https://lists.yoctoproject.org/g/meta-ti/message/20155
> Mute This Topic: https://lists.yoctoproject.org/mt/120311910/9997635
> Group Owner: [email protected]
> Unsubscribe: https://lists.yoctoproject.org/g/meta-ti/unsub [[email protected]]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Please ignore this patch as the previous version is already merged.

Regards,
Moteen