Re: [PATCH 33/33] nfs: Add ip=... and root=nfs... parameters to internal dracut

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 20.11.2014 15:57, Thomas Renninger wrote:
>  cmdline
> 
> If the rootfs is an nfs mount, also know as nfsroot, add the correct
> parameter to the dracut cmdline.
> 
> Signed-off-by: Thomas Renninger <trenn@xxxxxxx>
> ---
>  modules.d/95nfs/module-setup.sh | 46 ++++++++++++++++++++++++++++++++++++++---
>  1 file changed, 43 insertions(+), 3 deletions(-)
> 
> diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
> index e1340b3..41c6ef7 100755
> --- a/modules.d/95nfs/module-setup.sh
> +++ b/modules.d/95nfs/module-setup.sh
> @@ -14,7 +14,6 @@ check() {
>          done
>          return 255
>      }
> -
>      return 0
>  }
>  
> @@ -29,14 +28,56 @@ installkernel() {
>      instmods nfs sunrpc ipv6 nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files
>  }
>  
> +cmdline() {
> +    local nfs_device
> +    local nfs_options
> +    local nfs_root
> +    local nfs_address
> +    local lookup
> +    local ifname
> +
> +    ### nfsroot= ###
> +    nfs_device=$(findmnt -t nfs4 -n -o SOURCE /)
> +    if [ -n "$nfs_device" ];then
> +        nfs_root="root=nfs4:$nfs_device"
> +    else
> +        nfs_device=$(findmnt -t nfs -n -o SOURCE /)
> +        [ -z "$nfs_device" ] && return
> +        nfs_root="root=nfs:$nfs_device"
> +    fi
> +    nfs_options=$(findmnt -t nfs4,nfs -n -o OPTIONS /)
> +    [ -n "$nfs_options" ] && nfs_root="$nfs_root:$nfs_options"
> +    echo "$nfs_root"
> +
> +    ### ip= ###
> +    if [[ $nfs_device = [0-9]*\.[0-9]*\.[0-9]*.[0-9]* ]] || [[ $nfs_device = \[.*\] ]]; then
> +        nfs_address="$nfs_device"
> +    else
> +        lookup=$(host $(echo ${nfs_device%%:*})| head -n1)
> +        nfs_address=${lookup##* }
> +    fi
> +    ifname=$(ip -o route get to $nfs_address | sed -n 's/.*dev \([^ ]*\).*/\1/p')
> +    if [ -e /sys/class/net/$ifname/address ] ; then
> +        ifmac=$(cat /sys/class/net/$ifname/address)
> +        printf 'ifname=%s:%s ' ${ifname} ${ifmac}
> +    fi
> +
> +    printf 'ip=%s:static\n' ${ifname}
> +}
> +
>  # called by dracut
>  install() {
>      local _i
>      local _nsslibs
>      inst_multiple -o portmap rpcbind rpc.statd mount.nfs \
> -        mount.nfs4 umount rpc.idmapd sed /etc/netconfig
> +        mount.nfs4 umount rpc.idmapd sed /etc/netconfig host sed

Why "host" and "sed" ?? Just because it's used in cmdline() does not mean it
has to be installed in the initramfs?

--
To unsubscribe from this list: send the line "unsubscribe initramfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux