[PATCH] Configure network device for nfsboot via nv var

Gavin Schenk g.schenk at eckelmann.de
Wed Nov 8 07:05:17 PST 2017


When you have a static network environment but more than one network
device on your machine it is necessary to provide the <device> parameter
to the ip parameter at kernel cmd line.

The device name assigned by Linux cannot in general be predicted as it
depends on driver bind order.

This patch introduces a new global variable
"global.linux.nfsroot.device" which when set is feed to the ip=
kernel parameter as device name.

Signed-off-by: Gavin Schenk <g.schenk at eckelmann.de>
---
 net/ifup.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/net/ifup.c b/net/ifup.c
index 5113d138329a..bdb7cf0e6d0a 100644
--- a/net/ifup.c
+++ b/net/ifup.c
@@ -109,16 +109,19 @@ int ifup(const char *name, unsigned flags)
 		dev_set_param(dev, "linux.bootargs", "ip=dhcp");
 	} else if (!strcmp(ip, "static")) {
 		char *bootarg;
+		const char *env_linux_nfsroot_device = 
+			getenv("global.linux.nfsroot.device");
 		for (i = 0; i < ARRAY_SIZE(vars); i++) {
 			ret = eth_set_param(dev, vars[i]);
 			if (ret)
 				goto out;
 		}
-		bootarg = basprintf("ip=%pI4:%pI4:%pI4:%pI4:::",
+		bootarg = basprintf("ip=%pI4:%pI4:%pI4:%pI4::%s:",
 				&edev->ipaddr,
 				&edev->serverip,
 				&edev->gateway,
-				&edev->netmask);
+				&edev->netmask,
+				env_linux_nfsroot_device ?: "");
 		dev_set_param(dev, "linux.bootargs", bootarg);
 		free(bootarg);
 	} else {
-- 
2.15.0


Eckelmann AG
Vorstand: Dipl.-Ing. Peter Frankenbach (Sprecher) Dipl.-Wi.-Ing. Philipp Eckelmann
Dr.-Ing. Marco Münchhof Dr.-Ing. Frank Uhlemann
Vorsitzender des Aufsichtsrats: Hubertus G. Krossa
Stv. Vorsitzender des Aufsichtsrats: Dr.-Ing. Gerd Eckelmann
Sitz der Gesellschaft: Berliner Str. 161, 65205 Wiesbaden, Amtsgericht Wiesbaden HRB 12636
http://www.eckelmann.de 




More information about the barebox mailing list