|
Harald Hoyer |
fe48c9 |
From de74e1ef41148f72b572252eaa5a8e4859cfa929 Mon Sep 17 00:00:00 2001
|
|
Harald Hoyer |
fe48c9 |
From: Harald Hoyer <harald@redhat.com>
|
|
Harald Hoyer |
fe48c9 |
Date: Wed, 4 Sep 2013 09:45:04 +0200
|
|
Harald Hoyer |
fe48c9 |
Subject: [PATCH] Rewrite "rootok" and "netroot" logic
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
Previously if "$rootok" = 1, parsing of netroot command line arguments
|
|
Harald Hoyer |
fe48c9 |
was skipped. For multiple netroot arguments, all parse scripts have to
|
|
Harald Hoyer |
fe48c9 |
run.
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
Previously only the first netroot argument was taken into account for
|
|
Harald Hoyer |
fe48c9 |
the parsing scripts. Now every netroot argument is processed.
|
|
Harald Hoyer |
fe48c9 |
---
|
|
Harald Hoyer |
fe48c9 |
modules.d/40network/dhcp-root.sh | 16 ++++++++++------
|
|
Harald Hoyer |
fe48c9 |
modules.d/40network/netroot.sh | 1 +
|
|
Harald Hoyer |
fe48c9 |
modules.d/95cifs/parse-cifsroot.sh | 16 +++++++---------
|
|
Harald Hoyer |
fe48c9 |
modules.d/95iscsi/parse-iscsiroot.sh | 7 ++++++-
|
|
Harald Hoyer |
fe48c9 |
modules.d/95nbd/parse-nbdroot.sh | 12 +++++++-----
|
|
Harald Hoyer |
fe48c9 |
modules.d/95nfs/parse-nfsroot.sh | 20 ++++++++++++++------
|
|
Harald Hoyer |
fe48c9 |
6 files changed, 45 insertions(+), 27 deletions(-)
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
diff --git a/modules.d/40network/dhcp-root.sh b/modules.d/40network/dhcp-root.sh
|
|
Harald Hoyer |
fe48c9 |
index 85c7f08..f2a04e0 100755
|
|
Harald Hoyer |
fe48c9 |
--- a/modules.d/40network/dhcp-root.sh
|
|
Harald Hoyer |
fe48c9 |
+++ b/modules.d/40network/dhcp-root.sh
|
|
Harald Hoyer |
fe48c9 |
@@ -2,20 +2,24 @@
|
|
Harald Hoyer |
fe48c9 |
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
|
|
Harald Hoyer |
fe48c9 |
# ex: ts=8 sw=4 sts=4 et filetype=sh
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
-# Don't continue if root is ok
|
|
Harald Hoyer |
fe48c9 |
-[ -n "$rootok" ] && return
|
|
Harald Hoyer |
fe48c9 |
-
|
|
Harald Hoyer |
fe48c9 |
# This script is sourced, so root should be set. But let's be paranoid
|
|
Harald Hoyer |
fe48c9 |
[ -z "$root" ] && root=$(getarg root=)
|
|
Harald Hoyer |
fe48c9 |
-[ -z "$netroot" ] && netroot=$(getarg netroot=)
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
-if [ "$root" = "dhcp" ] || [ "$root" = "dhcp6" ] || [ "$netroot" = "dhcp" ] ; then
|
|
Harald Hoyer |
fe48c9 |
+if [ -z "$netroot" ]; then
|
|
Harald Hoyer |
fe48c9 |
+ for netroot in $(getargs netroot=); do
|
|
Harald Hoyer |
fe48c9 |
+ [ "$netroot" = "dhcp" ] && break
|
|
Harald Hoyer |
fe48c9 |
+ [ "$netroot" = "dhcp6" ] && break
|
|
Harald Hoyer |
fe48c9 |
+ done
|
|
Harald Hoyer |
fe48c9 |
+ [ "$netroot" = "dhcp" ] || [ "$netroot" = "dhcp6" ] || unset netroot
|
|
Harald Hoyer |
fe48c9 |
+fi
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
+if [ "$root" = "dhcp" ] || [ "$root" = "dhcp6" ] || [ "$netroot" = "dhcp" ] || [ "$netroot" = "dhcp6" ]; then
|
|
Harald Hoyer |
fe48c9 |
# Tell ip= checker that we need dhcp
|
|
Harald Hoyer |
fe48c9 |
NEEDDHCP="1"
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
# Done, all good!
|
|
Harald Hoyer |
fe48c9 |
rootok=1
|
|
Harald Hoyer |
fe48c9 |
- if [ "$netroot" != "dhcp" ] ; then
|
|
Harald Hoyer |
fe48c9 |
+ if [ "$netroot" != "dhcp" ] && [ "$netroot" != "dhcp6" ]; then
|
|
Harald Hoyer |
fe48c9 |
netroot=$root
|
|
Harald Hoyer |
fe48c9 |
fi
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
diff --git a/modules.d/40network/netroot.sh b/modules.d/40network/netroot.sh
|
|
Harald Hoyer |
fe48c9 |
index daeb14c..8f6945f 100755
|
|
Harald Hoyer |
fe48c9 |
--- a/modules.d/40network/netroot.sh
|
|
Harald Hoyer |
fe48c9 |
+++ b/modules.d/40network/netroot.sh
|
|
Harald Hoyer |
fe48c9 |
@@ -51,6 +51,7 @@ if [ -z "$2" ]; then
|
|
Harald Hoyer |
fe48c9 |
netroot=$new_root_path
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
# FIXME!
|
|
Harald Hoyer |
fe48c9 |
+ unset rootok
|
|
Harald Hoyer |
fe48c9 |
for f in $hookdir/cmdline/90*.sh; do
|
|
Harald Hoyer |
fe48c9 |
[ -f "$f" ] && . "$f";
|
|
Harald Hoyer |
fe48c9 |
done
|
|
Harald Hoyer |
fe48c9 |
diff --git a/modules.d/95cifs/parse-cifsroot.sh b/modules.d/95cifs/parse-cifsroot.sh
|
|
Harald Hoyer |
fe48c9 |
index f376b16..52d5809 100755
|
|
Harald Hoyer |
fe48c9 |
--- a/modules.d/95cifs/parse-cifsroot.sh
|
|
Harald Hoyer |
fe48c9 |
+++ b/modules.d/95cifs/parse-cifsroot.sh
|
|
Harald Hoyer |
fe48c9 |
@@ -14,22 +14,20 @@
|
|
Harald Hoyer |
fe48c9 |
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
|
Harald Hoyer |
fe48c9 |
. /lib/cifs-lib.sh
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
-#Don't continue if root is ok
|
|
Harald Hoyer |
fe48c9 |
-[ -n "$rootok" ] && return
|
|
Harald Hoyer |
fe48c9 |
-
|
|
Harald Hoyer |
fe48c9 |
# This script is sourced, so root should be set. But let's be paranoid
|
|
Harald Hoyer |
fe48c9 |
[ -z "$root" ] && root=$(getarg root=)
|
|
Harald Hoyer |
fe48c9 |
-[ -z "$netroot" ] && netroot=$(getarg netroot=)
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
+if [ -z "$netroot" ]; then
|
|
Harald Hoyer |
fe48c9 |
+ for netroot in $(getargs netroot=); do
|
|
Harald Hoyer |
fe48c9 |
+ [ "${netroot%%:*}" = "cifs" ] && break
|
|
Harald Hoyer |
fe48c9 |
+ done
|
|
Harald Hoyer |
fe48c9 |
+ [ "${netroot%%:*}" = "cifs" ] || unset netroot
|
|
Harald Hoyer |
fe48c9 |
+fi
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
# Root takes precedence over netroot
|
|
Harald Hoyer |
fe48c9 |
if [ "${root%%:*}" = "cifs" ] ; then
|
|
Harald Hoyer |
fe48c9 |
-
|
|
Harald Hoyer |
fe48c9 |
- # Don't continue if root is ok
|
|
Harald Hoyer |
fe48c9 |
- [ -n "$rootok" ] && return
|
|
Harald Hoyer |
fe48c9 |
-
|
|
Harald Hoyer |
fe48c9 |
if [ -n "$netroot" ] ; then
|
|
Harald Hoyer |
fe48c9 |
warn "root takes precedence over netroot. Ignoring netroot"
|
|
Harald Hoyer |
fe48c9 |
-
|
|
Harald Hoyer |
fe48c9 |
fi
|
|
Harald Hoyer |
fe48c9 |
netroot=$root
|
|
Harald Hoyer |
fe48c9 |
unset root
|
|
Harald Hoyer |
fe48c9 |
diff --git a/modules.d/95iscsi/parse-iscsiroot.sh b/modules.d/95iscsi/parse-iscsiroot.sh
|
|
Harald Hoyer |
fe48c9 |
index e83ef32..0c8b524 100755
|
|
Harald Hoyer |
fe48c9 |
--- a/modules.d/95iscsi/parse-iscsiroot.sh
|
|
Harald Hoyer |
fe48c9 |
+++ b/modules.d/95iscsi/parse-iscsiroot.sh
|
|
Harald Hoyer |
fe48c9 |
@@ -15,7 +15,12 @@
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
# This script is sourced, so root should be set. But let's be paranoid
|
|
Harald Hoyer |
fe48c9 |
[ -z "$root" ] && root=$(getarg root=)
|
|
Harald Hoyer |
fe48c9 |
-[ -z "$netroot" ] && netroot=$(getarg netroot=)
|
|
Harald Hoyer |
fe48c9 |
+if [ -z "$netroot" ]; then
|
|
Harald Hoyer |
fe48c9 |
+ for netroot in $(getargs netroot=); do
|
|
Harald Hoyer |
fe48c9 |
+ [ "${netroot%%:*}" = "iscsi" ] && break
|
|
Harald Hoyer |
fe48c9 |
+ done
|
|
Harald Hoyer |
fe48c9 |
+ [ "${netroot%%:*}" = "iscsi" ] || unset netroot
|
|
Harald Hoyer |
fe48c9 |
+fi
|
|
Harald Hoyer |
fe48c9 |
[ -z "$iscsiroot" ] && iscsiroot=$(getarg iscsiroot=)
|
|
Harald Hoyer |
fe48c9 |
[ -z "$iscsi_firmware" ] && getargbool 0 rd.iscsi.firmware -y iscsi_firmware && iscsi_firmware="1"
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
diff --git a/modules.d/95nbd/parse-nbdroot.sh b/modules.d/95nbd/parse-nbdroot.sh
|
|
Harald Hoyer |
fe48c9 |
index ec9e1f6..49c44b6 100755
|
|
Harald Hoyer |
fe48c9 |
--- a/modules.d/95nbd/parse-nbdroot.sh
|
|
Harald Hoyer |
fe48c9 |
+++ b/modules.d/95nbd/parse-nbdroot.sh
|
|
Harald Hoyer |
fe48c9 |
@@ -26,14 +26,16 @@ netroot_to_var() {
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
# This script is sourced, so root should be set. But let's be paranoid
|
|
Harald Hoyer |
fe48c9 |
[ -z "$root" ] && root=$(getarg root=)
|
|
Harald Hoyer |
fe48c9 |
-[ -z "$netroot" ] && netroot=$(getarg netroot=)
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
+if [ -z "$netroot" ]; then
|
|
Harald Hoyer |
fe48c9 |
+ for netroot in $(getargs netroot=); do
|
|
Harald Hoyer |
fe48c9 |
+ [ "${netroot%%:*}" = "nbd" ] && break
|
|
Harald Hoyer |
fe48c9 |
+ done
|
|
Harald Hoyer |
fe48c9 |
+ [ "${netroot%%:*}" = "nbd" ] || unset netroot
|
|
Harald Hoyer |
fe48c9 |
+fi
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
# Root takes precedence over netroot
|
|
Harald Hoyer |
fe48c9 |
if [ "${root%%:*}" = "nbd" ] ; then
|
|
Harald Hoyer |
fe48c9 |
-
|
|
Harald Hoyer |
fe48c9 |
- # Don't continue if root is ok
|
|
Harald Hoyer |
fe48c9 |
- [ -n "$rootok" ] && return
|
|
Harald Hoyer |
fe48c9 |
-
|
|
Harald Hoyer |
fe48c9 |
if [ -n "$netroot" ] ; then
|
|
Harald Hoyer |
fe48c9 |
warn "root takes precedence over netroot. Ignoring netroot"
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
diff --git a/modules.d/95nfs/parse-nfsroot.sh b/modules.d/95nfs/parse-nfsroot.sh
|
|
Harald Hoyer |
fe48c9 |
index 283420a..9fc2a8c 100755
|
|
Harald Hoyer |
fe48c9 |
--- a/modules.d/95nfs/parse-nfsroot.sh
|
|
Harald Hoyer |
fe48c9 |
+++ b/modules.d/95nfs/parse-nfsroot.sh
|
|
Harald Hoyer |
fe48c9 |
@@ -27,18 +27,19 @@
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
-#Don't continue if root is ok
|
|
Harald Hoyer |
fe48c9 |
-[ -n "$rootok" ] && return
|
|
Harald Hoyer |
fe48c9 |
-
|
|
Harald Hoyer |
fe48c9 |
# This script is sourced, so root should be set. But let's be paranoid
|
|
Harald Hoyer |
fe48c9 |
[ -z "$root" ] && root=$(getarg root=)
|
|
Harald Hoyer |
fe48c9 |
-[ -z "$netroot" ] && netroot=$(getarg netroot=)
|
|
Harald Hoyer |
fe48c9 |
[ -z "$nfsroot" ] && nfsroot=$(getarg nfsroot=)
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
+[ -n "$netroot" ] && oldnetroot="$netroot"
|
|
Harald Hoyer |
fe48c9 |
+
|
|
Harald Hoyer |
fe48c9 |
# netroot= cmdline argument must be ignored, but must be used if
|
|
Harald Hoyer |
fe48c9 |
# we're inside netroot to parse dhcp root-path
|
|
Harald Hoyer |
fe48c9 |
if [ -n "$netroot" ] ; then
|
|
Harald Hoyer |
fe48c9 |
- if [ "$netroot" = "$(getarg netroot=)" ] ; then
|
|
Harald Hoyer |
fe48c9 |
+ for n in $(getargs netroot=); do
|
|
Harald Hoyer |
fe48c9 |
+ [ "$n" = "$netroot" ] && break
|
|
Harald Hoyer |
fe48c9 |
+ done
|
|
Harald Hoyer |
fe48c9 |
+ if [ "$n" = "$netroot" ]; then
|
|
Harald Hoyer |
fe48c9 |
warn "Ignoring netroot argument for NFS"
|
|
Harald Hoyer |
fe48c9 |
netroot=$root
|
|
Harald Hoyer |
fe48c9 |
fi
|
|
Harald Hoyer |
fe48c9 |
@@ -67,7 +68,14 @@ esac
|
|
Harald Hoyer |
fe48c9 |
# Continue if nfs
|
|
Harald Hoyer |
fe48c9 |
case "${netroot%%:*}" in
|
|
Harald Hoyer |
fe48c9 |
nfs|nfs4|/dev/nfs);;
|
|
Harald Hoyer |
fe48c9 |
- *) unset netroot; return;;
|
|
Harald Hoyer |
fe48c9 |
+ *)
|
|
Harald Hoyer |
fe48c9 |
+ if [ -n "$oldnetroot" ]; then
|
|
Harald Hoyer |
fe48c9 |
+ netroot="$oldnetroot"
|
|
Harald Hoyer |
fe48c9 |
+ else
|
|
Harald Hoyer |
fe48c9 |
+ unset netroot
|
|
Harald Hoyer |
fe48c9 |
+ fi
|
|
Harald Hoyer |
fe48c9 |
+ return
|
|
Harald Hoyer |
fe48c9 |
+ ;;
|
|
Harald Hoyer |
fe48c9 |
esac
|
|
Harald Hoyer |
fe48c9 |
|
|
Harald Hoyer |
fe48c9 |
# Check required arguments
|