7bf826553e
- Add ip= and root=nfs.. to dracut internal cmdline to make nfsroot working (bnc#896464) * Add 0160-nfs-Add-ip-.-and-root-nfs.-parameters-to-internal-dr.patch - Fix error message in case there is no internal dracut cmdline added Simple fix * Add 0161-Fix-error-message-when-there-are-no-internal-kernel-.patch - Request DHCP lease instead of getting/applying the offer No bug number, but Pawel rated this high prio. This should hit SLE12 still. * Add 0162-network-Request-DHCP-lease-instead-of-getting-applyi.patch OBS-URL: https://build.opensuse.org/request/show/251837 OBS-URL: https://build.opensuse.org/package/show/Base:System/dracut?expand=0&rev=191
75 lines
2.4 KiB
Diff
75 lines
2.4 KiB
Diff
From 25e7640c04a687f7bbd3ac2416ea2f1fef122c48 Mon Sep 17 00:00:00 2001
|
|
From: Thomas Renninger <trenn@suse.de>
|
|
Date: Wed, 24 Sep 2014 17:23:32 +0200
|
|
Subject: nfs: Add ip=... and root=nfs... parameters to internal dracut
|
|
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@suse.de>
|
|
---
|
|
modules.d/95nfs/module-setup.sh | 39 ++++++++++++++++++++++++++++++++++++++-
|
|
1 files changed, 38 insertions(+), 1 deletions(-)
|
|
|
|
diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh
|
|
index c126efc..b6ddb21 100755
|
|
--- a/modules.d/95nfs/module-setup.sh
|
|
+++ b/modules.d/95nfs/module-setup.sh
|
|
@@ -31,14 +31,51 @@ installkernel() {
|
|
hostonly='' instmods nfs sunrpc ipv6 nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files lockd rpcsec_gss_krb5 auth_rpcgss
|
|
}
|
|
|
|
+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')
|
|
+ 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
|
|
inst_multiple /etc/services /etc/nsswitch.conf /etc/rpc /etc/protocols /etc/idmapd.conf
|
|
|
|
+ if [[ $hostonly_cmdline == "yes" ]]; then
|
|
+ local _netconf="$(cmdline)"
|
|
+ [[ $_netconf ]] && printf "%s\n" "$_netconf" >> "${initdir}/etc/cmdline.d/95nfs.conf"
|
|
+ fi
|
|
+
|
|
if [ -f /lib/modprobe.d/nfs.conf ]; then
|
|
inst_multiple /lib/modprobe.d/nfs.conf
|
|
else
|
|
--
|
|
1.7.6.1
|
|
|