kern/121566: [nfs] [request] ethernet iface should be brought up when booting from a mfs_root over nfs

Robert Schulze rs at bytecamp.net
Wed Mar 19 11:10:02 UTC 2008


The following reply was made to PR kern/121566; it has been noted by GNATS.

From: Robert Schulze <rs at bytecamp.net>
To: bug-followup at FreeBSD.org, rs at bytecamp.net
Cc:  
Subject: Re: kern/121566: [nfs] [request] ethernet iface should be brought
 up when booting from a mfs_root over nfs
Date: Wed, 19 Mar 2008 11:30:39 +0100

 This is a multi-part message in MIME format.
 --------------080908080007060209020005
 Content-Type: text/plain; charset=ISO-8859-15; format=flowed
 Content-Transfer-Encoding: 7bit
 
 Hi,
 
 I found a workaround to simulate the behaviour of 
 /sys/nfsclient/nfs_vfsops.c in rc.initdiskless.
 
 The patch in "diff -Naur" format is attached.
 
 with kind regards,
 Robert Schulze
 
 --------------080908080007060209020005
 Content-Type: text/x-patch;
  name="rc.initdiskless.patch"
 Content-Transfer-Encoding: 7bit
 Content-Disposition: inline;
  filename="rc.initdiskless.patch"
 
 --- rc.initdiskless.dflt	Thu Mar 13 10:08:51 2008
 +++ rc.initdiskless	Wed Mar 19 11:21:32 2008
 @@ -163,6 +163,30 @@
      fi
  }
  
 +# Fire up an interface to do nfs-mounts if this machine
 +# was booted from a md_root
 +# Use kenv to get the configuration vom dhcp like
 +# /sys/nfsclient/nfs_vfsops.c does
 +
 +ifconfig_kenv()
 +{
 +echo "trying to up an interface with options from kenv..."
 +
 +IF=`kenv | grep 'boot.netif.name' | awk 'BEGIN {FS="="} {print $2}' | sed 's/"//g'`
 +GW=`kenv | grep 'boot.netif.gateway' | awk 'BEGIN {FS="="} {print $2}' | sed 's/"//g'`
 +IP=`kenv | grep 'boot.netif.ip' | awk 'BEGIN {FS="="} {print $2}' | sed 's/"//g'`
 +NM=`kenv | grep 'boot.netif.netmask' | awk 'BEGIN {FS="="} {print $2}' | sed 's/"//g'`
 +
 +if [ ! "$1" = "$IF" ]; then
 +	return 0
 +fi
 +
 +echo "kenv: IF=$IF GW=$GW IP=$IP MASK=$NM"
 +ifconfig $IF $IP netmask $NM up
 +route add default $GW
 +
 +}
 +
  # DEBUGGING
  #
  # set -v
 @@ -176,6 +200,12 @@
  if [ ${dlv:=0} -ne 0 ] ; then
  	iflist=`ifconfig -l`
  	for i in ${iflist} ; do
 +
 +	    ifconfig ${i} | grep -q inet
 +	    if [ $? -ne "0" ] ; then
 +		ifconfig_kenv ${i}
 +	    fi
 +
  	    set -- `ifconfig ${i}`
  	    while [ $# -ge 1 ] ; do
  		if [ "${bootp_ifc}" = "" -a "$1" = "inet" ] ; then
 
 --------------080908080007060209020005--


More information about the freebsd-bugs mailing list