On Tue, Jun 02, 2026 at 09:59:15AM -0500, Ryan Eatmon wrote:
> 
> 
> On 6/2/2026 8:47 AM, Denys Dmytriyenko wrote:
> >On Tue, Jun 02, 2026 at 04:18:10PM +0530, Moteen Shah via 
> >lists.yoctoproject.org wrote:
> >>Add 83-netsetup, an initramfs-framework module that configures the
> >>network interface via DHCP before the NFS root mount. Needed when the
> >>Ethernet driver is a loadable module and the deferred probe chain
> >>requires time to settle after udev loads the modules. Also add dhcpcd
> >>to packagegroup-ti-core-initramfs to support DHCP configuration.
> >>
> >>Signed-off-by: Moteen Shah <[email protected]>
> >>---
> >>  .../initramfs-framework/83-netsetup           | 54 +++++++++++++++++++
> >>  .../initramfs-framework_%.bbappend            | 15 ++++++
> >>  .../packagegroup-ti-core-initramfs.bb         |  2 +
> >>  3 files changed, 71 insertions(+)
> >>  create mode 100644 
> >> meta-ti-bsp/recipes-core/initramfs-scripts/initramfs-framework/83-netsetup
> >>  create mode 100644 
> >> meta-ti-bsp/recipes-core/initramfs-scripts/initramfs-framework_%.bbappend
> >>
> >>diff --git 
> >>a/meta-ti-bsp/recipes-core/initramfs-scripts/initramfs-framework/83-netsetup
> >> 
> >>b/meta-ti-bsp/recipes-core/initramfs-scripts/initramfs-framework/83-netsetup
> >>new file mode 100644
> >>index 00000000..b71bc3b3
> >>--- /dev/null
> >>+++ 
> >>b/meta-ti-bsp/recipes-core/initramfs-scripts/initramfs-framework/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"
> >>+
> >>+    dhcpcd --waitip "${iface}"
> >>+}
> >>diff --git 
> >>a/meta-ti-bsp/recipes-core/initramfs-scripts/initramfs-framework_%.bbappend 
> >>b/meta-ti-bsp/recipes-core/initramfs-scripts/initramfs-framework_%.bbappend
> >>new file mode 100644
> >>index 00000000..c8955689
> >>--- /dev/null
> >>+++ 
> >>b/meta-ti-bsp/recipes-core/initramfs-scripts/initramfs-framework_%.bbappend
> >>@@ -0,0 +1,15 @@
> >>+FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
> >>+
> >>+SUMMARY:initramfs-module-netsetup = "initramfs support for DHCP network 
> >>setup before NFS root mount"
> >
> >This should probably be a standalone initramfs-module* recipe, instead of a
> >bbappend.
> 
> Agreed.  It's a little confusing to add a subpackage like that.  We
> should create a new recipe and depend on that name to pull in this
> one file.  The name you chose was fine, just move it out of the
> bbappend.

There are numerous examples of existing initramfs-module-* recipes that 
extend initramfs-framework functionality, e.g.:
https://git.openembedded.org/openembedded-core/tree/meta/recipes-core/initrdscripts/initramfs-module-install-efi_1.0.bb
https://git.openembedded.org/openembedded-core/tree/meta/recipes-core/initrdscripts/initramfs-module-install_1.0.bb
https://git.openembedded.org/openembedded-core/tree/meta/recipes-core/initrdscripts/initramfs-module-setup-live_1.0.bb

And don't forget about our own such recipe for LUKS with fTPM:
https://git.yoctoproject.org/meta-ti/tree/meta-ti-bsp/dynamic-layers/tpm-layer/recipes-ti/initramfs/initramfs-module-luks-ftpm_1.0.bb


> >>+SRC_URI:append = " file://83-netsetup"
> >>+
> >>+PACKAGES =+ "initramfs-module-netsetup"
> >>+
> >>+RDEPENDS:initramfs-module-netsetup = "${PN}-base"
> >>+
> >>+FILES:initramfs-module-netsetup = "/init.d/83-netsetup"
> >>+
> >>+do_install:append() {
> >>+    install -m 0755 ${UNPACKDIR}/83-netsetup ${D}/init.d/83-netsetup
> >>+}
> >>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..ede0639d 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
> >>@@ -18,6 +18,8 @@ RDEPENDS:${PN} += "\
> >>      netbase \
> >>      base-files \
> >>      base-passwd \
> >>+    dhcpcd \
> >>+    initramfs-module-netsetup \
> >>      initramfs-framework-base \
> >>      initramfs-module-udev \
> >>      initramfs-module-nfsrootfs \
> >>-- 
> >>2.34.1
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#19951): 
https://lists.yoctoproject.org/g/meta-ti/message/19951
Mute This Topic: https://lists.yoctoproject.org/mt/119608901/21656
Group Owner: [email protected]
Unsubscribe: https://lists.yoctoproject.org/g/meta-ti/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to