From: Dave Young Date: Thu, 2 Feb 2012 08:00:07 +0000 (+0800) Subject: split nfs rpc daemons startup script X-Git-Tag: 015~19 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c6655c41158e379a8843684cc05bbb0f80ab73ae;p=thirdparty%2Fdracut.git split nfs rpc daemons startup script fstab-sys will mount nonroot nfs as well, so we need to split the necessary code from nfsroot to start rpc daemon as hook script. Signed-off-by: Dave Young --- diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh index 72d3b42b0..0e921ff1f 100755 --- a/modules.d/95nfs/module-setup.sh +++ b/modules.d/95nfs/module-setup.sh @@ -57,6 +57,7 @@ install() { dracut_install $(for _i in $(ls {/usr,}$libdir/libnss*.so 2>/dev/null); do echo $_i;done | egrep "$_nsslibs") inst_hook cmdline 90 "$moddir/parse-nfsroot.sh" + inst_hook pre-udev 99 "$moddir/nfs-start-rpc.sh" inst_hook pre-pivot 99 "$moddir/nfsroot-cleanup.sh" inst "$moddir/nfsroot" "/sbin/nfsroot" mkdir -m 0755 -p "$initdir/var/lib/nfs/rpc_pipefs" diff --git a/modules.d/95nfs/nfs-start-rpc.sh b/modules.d/95nfs/nfs-start-rpc.sh new file mode 100755 index 000000000..525c63618 --- /dev/null +++ b/modules.d/95nfs/nfs-start-rpc.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh + +# Start rpcbind or rpcbind +# FIXME occasionally saw 'rpcbind: fork failed: No such device' -- why? +command -v portmap >/dev/null && [ -z "$(pidof portmap)" ] && portmap +command -v rpcbind >/dev/null && [ -z "$(pidof rpcbind)" ] && rpcbind + +[ ! -d /var/lib/nfs/rpc_pipefs/nfs ] && \ + mount -t rpc_pipefs rpc_pipefs /var/lib/nfs/rpc_pipefs + +# Start rpc.statd as mount won't let us use locks on a NFSv4 +# filesystem without talking to it. NFSv4 does locks internally, +# rpc.lockd isn't needed +[ -z "$(pidof rpc.statd)" ] && rpc.statd +[ -z "$(pidof rpc.idmapd)" ] && rpc.idmapd diff --git a/modules.d/95nfs/nfsroot b/modules.d/95nfs/nfsroot index cca4a326f..2103e24ab 100755 --- a/modules.d/95nfs/nfsroot +++ b/modules.d/95nfs/nfsroot @@ -84,22 +84,7 @@ getarg rw && nfsrw=rw options=${options:+$options,}$nfsrw -# Start rpcbind or rpcbind -# FIXME occasionally saw 'rpcbind: fork failed: No such device' -- why? -command -v portmap >/dev/null && [ -z "$(pidof portmap)" ] && portmap -command -v rpcbind >/dev/null && [ -z "$(pidof rpcbind)" ] && rpcbind - if [ "$nfs" = "nfs4" ]; then - [ ! -d /var/lib/nfs/rpc_pipefs/nfs ] && \ - mount -t rpc_pipefs rpc_pipefs /var/lib/nfs/rpc_pipefs - - # Start rpc.statd as mount won't let us use locks on a NFSv4 - # filesystem without talking to it. NFSv4 does locks internally, - # rpc.lockd isn't needed - [ -z "$(pidof rpc.statd)" ] && rpc.statd - - [ -z "$(pidof rpc.idmapd)" ] && rpc.idmapd - # XXX Should we loop here? mount -t nfs4 -o$options${nfslock+,$nfslock} \ $server:$path $NEWROOT \