Re: [meta-ti][master/wrynose][PATCH 2/2] initramfs: Add netsetup module for DHCP network configuration
Ryan Eatmon <[email protected]> Tue, 2 Jun 2026 09:59:15 -0500
| Newsgroups | org.yoctoproject.lists.meta-ti |
|---|---|
| Message-ID | <[email protected]> |
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