diff options
-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 000000000..fc384a8ea --- /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 a3e2e8742..88b524ffd 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 |