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.
+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
--
Ryan Eatmon [email protected]
-----------------------------------------
Texas Instruments, Inc. - LCPD - MGTS
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#19950):
https://lists.yoctoproject.org/g/meta-ti/message/19950
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]]
-=-=-=-=-=-=-=-=-=-=-=-