[Libguestfs] [PATCH v4 2/6] appliance: init: Move cmdline parsing earlier.

Richard W.M. Jones rjones at redhat.com
Wed Mar 23 13:35:40 UTC 2016


Since commit bb5d30ab2af5720775c63179afdec3ad9efd510d, we don't
require any external programs like grep to parse the command line.  We
only use bash intrinsics.

Therefore we can do it early (but after /proc is mounted).

This allows verbose mode to enable set -x early on, so we can trace
most things that the init script does.
---
 appliance/init | 39 +++++++++++++++++++++------------------
 1 file changed, 21 insertions(+), 18 deletions(-)

diff --git a/appliance/init b/appliance/init
index 04afbd6..c4cf964 100755
--- a/appliance/init
+++ b/appliance/init
@@ -33,9 +33,29 @@ done
 
 mkdir -p /sysroot
 
+# Mount /proc.
 if [ ! -d /proc ]; then rm -f /proc; fi
 mkdir -p /proc
 mount -t proc /proc /proc
+
+# Parse the kernel command line early (must be after /proc is mounted).
+cmdline=$(</proc/cmdline)
+
+if [[ $cmdline == *guestfs_verbose=1* ]]; then
+    guestfs_verbose=1
+    set -x
+fi
+if [[ $cmdline == *guestfs_network=1* ]]; then
+    guestfs_network=1
+fi
+if [[ $cmdline == *guestfs_rescue=1* ]]; then
+    guestfs_rescue=1
+fi
+if [[ $cmdline == *guestfs_noreboot=1* ]]; then
+    guestfs_noreboot=1
+fi
+
+# Mount the other special filesystems.
 if [ ! -d /sys ]; then rm -f /sys; fi
 mkdir -p /sys
 mount -t sysfs /sys /sys
@@ -75,8 +95,6 @@ $UDEVD --daemon #--debug
 udevadm trigger
 udevadm settle --timeout=600
 
-cmdline=$(</proc/cmdline)
-
 if [[ $cmdline == *selinux=1* ]]; then
   mount -t selinuxfs none /sys/fs/selinux
 fi
@@ -92,22 +110,6 @@ shopt -u nullglob
 # Update the system clock.
 hwclock -u -s
 
-# Parse the kernel command line.
-if [[ $cmdline == *guestfs_verbose=1* ]]; then
-    guestfs_verbose=1
-    set -x
-fi
-if [[ $cmdline == *guestfs_network=1* ]]; then
-    guestfs_network=1
-fi
-if [[ $cmdline == *guestfs_rescue=1* ]]; then
-    guestfs_rescue=1
-fi
-if [[ $cmdline == *guestfs_noreboot=1* ]]; then
-    guestfs_noreboot=1
-fi
-eval `grep -Eo 'guestfs_channel=[^[:space:]]+' /proc/cmdline`
-
 # Set up the network.
 ip addr add 127.0.0.1/8 brd + dev lo scope host
 ip link set dev lo up
@@ -156,6 +158,7 @@ fi
 if ! test "$guestfs_rescue" = 1; then
   # Run the daemon.
   cmd="guestfsd"
+  eval `grep -Eo 'guestfs_channel=[^[:space:]]+' /proc/cmdline`
   if test "x$guestfs_channel" != "x"; then
     cmd="$cmd --channel $guestfs_channel"
   fi
-- 
2.7.4




More information about the Libguestfs mailing list