From: Philippe Seewer Date: Tue, 16 Jun 2009 07:56:31 +0000 (+0200) Subject: NFS: Add support for debian based distros X-Git-Tag: 0.1~58 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3da03a60365a15419660f1aeb7c307c7c5192bd6;p=platform%2Fupstream%2Fdracut.git NFS: Add support for debian based distros 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 --- diff --git a/modules.d/95nfs/check b/modules.d/95nfs/check index 0625322..f72aaae 100755 --- a/modules.d/95nfs/check +++ b/modules.d/95nfs/check @@ -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 diff --git a/modules.d/95nfs/install b/modules.d/95nfs/install index 1e9ab7b..a8e3ef1 100755 --- a/modules.d/95nfs/install +++ b/modules.d/95nfs/install @@ -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 diff --git a/modules.d/95nfs/nfsroot b/modules.d/95nfs/nfsroot index cd3bc7c..23fc3aa 100755 --- a/modules.d/95nfs/nfsroot +++ b/modules.d/95nfs/nfsroot @@ -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 diff --git a/modules.d/99base/init b/modules.d/99base/init index 998f5e6..644b62a 100755 --- a/modules.d/99base/init +++ b/modules.d/99base/init @@ -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 diff --git a/test/TEST-20-NFS/server-init b/test/TEST-20-NFS/server-init index c64a1ea..44ee193 100755 --- a/test/TEST-20-NFS/server-init +++ b/test/TEST-20-NFS/server-init @@ -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 diff --git a/test/TEST-20-NFS/test.sh b/test/TEST-20-NFS/test.sh index 64bb356..5e64850 100755 --- a/test/TEST-20-NFS/test.sh +++ b/test/TEST-20-NFS/test.sh @@ -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