NFS: Add support for debian based distros
authorPhilippe Seewer <philippe.seewer@bfh.ch>
Tue, 16 Jun 2009 07:56:31 +0000 (09:56 +0200)
committerPhilippe Seewer <philippe.seewer@bfh.ch>
Wed, 17 Jun 2009 06:37:38 +0000 (08:37 +0200)
This patch enhances nfsroot and the nfs test-suite with compatibility
for debian based distros. This is mainly the difference of using
portmap instead of rpcbind and the missing file /etc/netconfig

modules.d/95nfs/check
modules.d/95nfs/install
modules.d/95nfs/nfsroot
modules.d/99base/init
test/TEST-20-NFS/server-init
test/TEST-20-NFS/test.sh

index 0625322..f72aaae 100755 (executable)
@@ -7,5 +7,6 @@
 [ "$1" = "-h" ] && ! egrep -q '/ nfs[34 ]' /proc/mounts && exit 1
 
 # If our prerequisites are not met, fail anyways.
-which rpcbind rpc.statd mount.nfs mount.nfs4 umount >/dev/null 2>&1 || exit 1
+which rpcbind >/dev/null 2>&1 || which portmap >/dev/null 2>&1 || exit 1
+which rpc.statd mount.nfs mount.nfs4 umount >/dev/null 2>&1 || exit 1
 exit 0
index 1e9ab7b..a8e3ef1 100755 (executable)
@@ -1,6 +1,10 @@
 #!/bin/sh
-dracut_install rpcbind rpc.statd mount.nfs mount.nfs4 umount 
-dracut_install /etc/netconfig /etc/passwd /etc/services 
+which portmap >/dev/null 2>&1 && dracut_install portmap
+which rpcbind >/dev/null 2>&1 && dracut_install rpcbind
+
+dracut_install rpc.statd mount.nfs mount.nfs4 umount 
+[ -f /etc/netconfig ] && dracut_install /etc/netconfig 
+dracut_install /etc/passwd /etc/services 
 dracut_install /etc/nsswitch.conf /etc/rpc /etc/protocols
 dracut_install rpc.idmapd /etc/idmapd.conf
 if ldd $(which rpc.idmapd) |grep -q lib64; then
index cd3bc7c..23fc3aa 100755 (executable)
@@ -68,7 +68,8 @@ incol2 /proc/filesystems nfs4 || modprobe nfs || exit 1
 # Start rpcbind and rpc.statd as mount won't let us use locks on a NFSv4
 # filesystem without talking to them, even though they are unneeded
 # XXX occasionally saw 'rpcbind: fork failed: No such device' -- why?
-[ -n "$(pidof rpcbind)" ] || rpcbind
+[ -x /sbin/portmap ] && [ -z "$(pidof portmap)" ] && portmap
+[ -x /sbin/rpcbind ] && [ -z "$(pidof rpcbind)" ] && rpcbind
 [ -n "$(pidof rpc.statd)" ] || rpc.statd
 
 # XXX should I do rpc.idmapd here, or wait and start in the new root
index 998f5e6..644b62a 100755 (executable)
@@ -7,11 +7,11 @@
 
 emergency_shell()
 {
-    source_all emergency
     echo ; echo
     echo "Bug in initramfs /init detected. Dropping to a shell. Good luck!"
     echo
     sh -i
+    source_all emergency
 }
 
 export PATH=/sbin:/bin:/usr/sbin:/usr/bin
index c64a1ea..44ee193 100755 (executable)
@@ -15,7 +15,8 @@ mount --bind /nfs/client /nfs/ip/192.168.50.101
 mount --bind /nfs/client /nfs/tftpboot/nfs4-5
 modprobe sunrpc
 mount -t rpc_pipefs sunrpc /var/lib/nfs/rpc_pipefs
-rpcbind
+[ -x /sbin/portmap ] && portmap
+[ -x /sbin/rpcbind ] && rpcbind
 modprobe nfsd
 mount -t nfsd nfsd /proc/fs/nfsd
 exportfs -r
index 64bb356..5e64850 100755 (executable)
@@ -272,8 +272,11 @@ test_setup() {
        . $basedir/dracut-functions
        dracut_install sh ls shutdown poweroff stty cat ps ln ip \
            /lib/terminfo/l/linux dmesg mkdir cp ping exportfs \
-           rpcbind modprobe rpc.nfsd rpc.mountd dhcpd showmount tcpdump \
-           /etc/netconfig /etc/services sleep mount
+           modprobe rpc.nfsd rpc.mountd dhcpd showmount tcpdump \
+           /etc/services sleep mount
+       which portmap >/dev/null 2>&1 && dracut_install portmap
+       which rpcbind >/dev/null 2>&1 && dracut_install rpcbind
+       [ -f /etc/netconfig ] && dracut_install /etc/netconfig 
        instmods nfsd sunrpc ipv6
        inst ./server-init /sbin/init
        inst ./hosts /etc/hosts