From: Harald Hoyer Date: Wed, 20 May 2009 12:04:33 +0000 (+0200) Subject: fixed NFS mounting X-Git-Tag: 0.1~230 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ea62f0eb2a963619f2adaf0db3cf78d866c36ae7;p=thirdparty%2Fdracut.git fixed NFS mounting --- diff --git a/modules.d/95NFS/install b/modules.d/95NFS/install index 4ddabaa6b..effdf2f71 100755 --- a/modules.d/95NFS/install +++ b/modules.d/95NFS/install @@ -1,3 +1,4 @@ #!/bin/sh inst mount.nfs -inst_hook mount 96 "$moddir/nfs-mount-root.sh" +inst_hook pre-mount 99 "$moddir/nfs-parse-root-opts.sh" +instmods nfs diff --git a/modules.d/95NFS/nfs-mount-root.sh b/modules.d/95NFS/nfs-mount-root.sh deleted file mode 100755 index 8f1e44e81..000000000 --- a/modules.d/95NFS/nfs-mount-root.sh +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh -if [ "$root" = "dhcp" ]; then - for dev in /net.*.dhcpopts; do - if [ -f "$dev" ]; then - . "$dev" - [ -n "$new_root_path" ] && nfsroot="$new_root_path" - if [ ! -s /.resume -a "$nfsroot" ]; then - if [ "${nfsroot#nfs://}" != "$nfsroot" ]; then - nfsroot="${nfsroot#nfs://}" - nfsroot="${nfsroot/\//:/}" - fi - fi - fi - done -fi - -if [ "${root#/dev/}" = "$root" -a "${root/:\///}" != "$root" ]; then - nfsroot="$root" -fi - - -if [ -n "$nfsroot" ]; then - # - # modprobe nfs - # - # start rpc.statd ?? - mount -t nfs "$nfsroot" -o nolock "$NEWROOT" && ROOTFS_MOUNTED=yes -fi diff --git a/modules.d/95NFS/nfs-parse-root-opts.sh b/modules.d/95NFS/nfs-parse-root-opts.sh new file mode 100755 index 000000000..06228a845 --- /dev/null +++ b/modules.d/95NFS/nfs-parse-root-opts.sh @@ -0,0 +1,39 @@ +#!/bin/sh + +# exit if rootfstype is set and not nfs +if [ -z "$fstype" -o "$fstype" = "nfs" ]; then + if [ "$root" = "dhcp" ]; then + for dev in /net.*.dhcpopts; do + if [ -f "$dev" ]; then + . "$dev" + [ -n "$new_root_path" ] && nfsroot="$new_root_path" + if [ ! -s /.resume -a -n "$nfsroot" ]; then + if [ "${nfsroot#nfs://}" != "$nfsroot" ]; then + nfsroot="${nfsroot#nfs://}" + nfsroot="${nfsroot/\//:/}" + fi + break + fi + fi + done + elif [ "${root#/dev/}" = "$root" -a "${root#*:/}" != "$root" ]; then + nfsroot="$root" + fi + + # let user force override nfsroot + nfsroot_cmdl=$(getarg 'nfsroot=') + [ -n "$nfsroot_cmdl" ] && nfsroot="$nfsroot_cmdl" + + if [ -n "$nfsroot" ]; then + root="$nfsroot" + fstype="-t nfs" + + if rflags="$(getarg rootflags=)"; then + getarg rw && rflags="${rflags},rw" || rflags="${rflags},ro" + else + getarg rw && rflags=rw || rflags=ro + fi + + rflags="nolock,$rflags" + fi +fi