Blob Blame History Raw
From 721bec3f143141fe3243e9f9dda9931f99b6b085 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@hoyer.xyz>
Date: Fri, 18 Aug 2017 09:33:10 +0200
Subject: [PATCH] Merge pull request #269 from xlpang/master

introduce new "--no-hostonly-default-device"  argument
---
 dracut.8.asc                             |  4 ++++
 dracut.sh                                | 11 +++++++++--
 modules.d/95rootfs-block/module-setup.sh |  6 ++++++
 3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/dracut.8.asc b/dracut.8.asc
index ca169189..23c53cc4 100644
--- a/dracut.8.asc
+++ b/dracut.8.asc
@@ -323,6 +323,10 @@ provide a valid _/etc/fstab_.
 **--no-hostonly-cmdline**:
     Do not store kernel command line arguments needed in the initramfs
 
+**--no-hostonly-default-device**:
+    Do not generate implicit host devices like root, swap, fstab, etc.
+    Use "--mount" or "--add-device" to explicitly add devices as needed.
+
 **--hostonly-i18n**:
     Install only needed keyboard and font files according to the host configuration (default).
 
diff --git a/dracut.sh b/dracut.sh
index 3a136d46..681a6b7a 100755
--- a/dracut.sh
+++ b/dracut.sh
@@ -151,6 +151,10 @@ Creates initial ramdisk images for preloading modules
                         in the initramfs
   --no-hostonly-cmdline Do not store kernel command line arguments needed
                         in the initramfs
+  --no-hostonly-default-device
+                        Do not generate implicit host devices like root,
+                        swap, fstab, etc. Use "--mount" or "--add-device"
+                        to explicitly add devices as needed.
   --hostonly-i18n       Install only needed keyboard and font files according
                         to the host configuration (default).
   --no-hostonly-i18n    Install all keyboard and font files available.
@@ -345,6 +349,7 @@ rearrange_params()
         --long no-host-only \
         --long hostonly-cmdline \
         --long no-hostonly-cmdline \
+        --long no-hostonly-default-device \
         --long persistent-policy: \
         --long fstab \
         --long help \
@@ -539,6 +544,8 @@ while :; do
                        i18n_install_all_l="yes" ;;
         --no-hostonly-cmdline)
                        hostonly_cmdline_l="no" ;;
+        --no-hostonly-default-device)
+                       hostonly_default_device="no" ;;
         --persistent-policy)
                        persistent_policy_l="$2";       PARMS_TO_STORE+=" '$2'"; shift;;
         --fstab)       use_fstab_l="yes" ;;
@@ -1133,7 +1140,7 @@ if (( ${#add_device_l[@]} )); then
     push_host_devs "${add_device_l[@]}"
 fi
 
-if [[ $hostonly ]]; then
+if [[ $hostonly ]] && [[ "$hostonly_default_device" != "no" ]]; then
     # in hostonly mode, determine all devices, which have to be accessed
     # and examine them for filesystem types
 
@@ -1300,7 +1307,7 @@ export initdir dracutbasedir \
     dracutmodules force_add_dracutmodules add_dracutmodules omit_dracutmodules \
     mods_to_load \
     fw_dir drivers_dir debug no_kernel kernel_only \
-    omit_drivers mdadmconf lvmconf root_dev \
+    omit_drivers mdadmconf lvmconf root_devs \
     use_fstab fstab_lines libdirs fscks nofscks ro_mnt \
     stdloglvl sysloglvl fileloglvl kmsgloglvl logfile \
     debug host_fs_types host_devs swap_devs sshkey add_fstab \
diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh
index 2b06bac2..987373b4 100755
--- a/modules.d/95rootfs-block/module-setup.sh
+++ b/modules.d/95rootfs-block/module-setup.sh
@@ -32,6 +32,12 @@ cmdline_journal() {
 cmdline_rootfs() {
     local _dev=/dev/block/$(find_root_block_device)
     local _fstype _flags _subvol
+
+    # "--no-hostonly-default-device" can result in empty root_devs
+    if [ "${#root_devs[@]}" -eq 0 ]; then
+        return
+    fi
+
     if [ -e $_dev ]; then
         printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$_dev")")"
         _fstype="$(find_mp_fstype /)"