diff options
author | Qing He <qing.he@intel.com> | 2010-05-19 00:24:25 +0800 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-08-09 16:54:08 +0100 |
commit | 601464b4974e46d15abd02efd46663efcd530da8 (patch) | |
tree | 30bffdbd2c0b97d55318139afa714c2f0602253b /meta | |
parent | bca283671f74b79394e9c332b790e5ed0dc44f35 (diff) | |
download | openembedded-core-601464b4974e46d15abd02efd46663efcd530da8.tar.gz openembedded-core-601464b4974e46d15abd02efd46663efcd530da8.tar.bz2 openembedded-core-601464b4974e46d15abd02efd46663efcd530da8.zip |
nfsroot: allow nfsroot to survive netbase init
The patch adds a script in /etc/network/if-pre-up.d,
the script returns 1 (effectly skip the ifup on the iface) iff:
1. there is a "* / (nfs|nfs4) *" entry in the /proc/mounts
2. the addr field in that entry is routed using $IFACE
Signed-off-by: Qing He <qing.he@intel.com>
Diffstat (limited to 'meta')
-rw-r--r-- | meta/packages/netbase/netbase/nfsroot | 39 | ||||
-rw-r--r-- | meta/packages/netbase/netbase_4.41.bb | 4 |
2 files changed, 42 insertions, 1 deletions
diff --git a/meta/packages/netbase/netbase/nfsroot b/meta/packages/netbase/netbase/nfsroot new file mode 100644 index 0000000000..fc384a8ea5 --- /dev/null +++ b/meta/packages/netbase/netbase/nfsroot @@ -0,0 +1,39 @@ +#! /bin/sh + +# In case the interface is used as nfsroot, avoid ifup, otherwise +# nfsroot may lose response + +nfsroot=0 + +if test "x$IFACE" = xlo ; then + exit 0 +fi + +exec 9<&0 < /proc/mounts +while read dev mtpt fstype rest; do + if test $mtpt = "/" ; then + case $fstype in + nfs | nfs4) + nfsroot=1 + nfs_addr=`echo $rest | sed -e 's/^.*addr=\([0-9.]*\).*$/\1/'` + break + ;; + *) + ;; + esac + fi +done +exec 0<&9 9<&- + +test $nfsroot -eq 0 && exit 0 + +if test -x /sbin/ip ; then + nfs_iface=`ip route get $nfs_addr | grep dev | sed -e 's/^.*dev \([-a-z0-9.]*\).*$/\1/'` +fi + +if test "x$IFACE" = "x$nfs_iface" ; then + echo "ifup skipped for nfsroot interface $nfs_iface" + exit 1 +fi + +exit 0 diff --git a/meta/packages/netbase/netbase_4.41.bb b/meta/packages/netbase/netbase_4.41.bb index a3e2e87424..88b524ffd2 100644 --- a/meta/packages/netbase/netbase_4.41.bb +++ b/meta/packages/netbase/netbase_4.41.bb @@ -17,7 +17,8 @@ INITSCRIPT_PARAMS_slugos = "start 42 S 0 6 ." SRC_URI = "${DEBIAN_MIRROR}/main/n/netbase/netbase_${PV}.tar.gz \ file://init \ file://hosts \ - file://interfaces" + file://interfaces \ + file://nfsroot" do_install () { install -d ${D}${sysconfdir}/init.d \ @@ -33,6 +34,7 @@ do_install () { install -m 0644 etc-protocols ${D}${sysconfdir}/protocols install -m 0644 etc-services ${D}${sysconfdir}/services install -m 0644 ${WORKDIR}/interfaces ${D}${sysconfdir}/network/interfaces + install -m 0755 ${WORKDIR}/nfsroot ${D}${sysconfdir}/network/if-pre-up.d # Disable network manager on machines that commonly do NFS booting case "${MACHINE}" in |