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

_______________________________________________
Libguestfs mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libguestfs

Reply via email to