[ "$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
#!/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
# 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
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
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
. $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