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

Denys Dmytriyenko <[email protected]> Tue, 21 Jul 2026 17:50:03 -0400
Newsgroups org.yoctoproject.lists.meta-ti
Message-ID <[email protected]>
On Fri, Jul 17, 2026 at 02:16:23PM +0530, Moteen Shah via lists.yoctoproject.org wrote:
> 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"
> >
> >
> >
> Please ignore this patch as the previous version is already merged.

Since v4 already got merged, you need to send the changes between v4 and v5 as 
a separate patch, thanks.

-- 
Denys