From 721bec3f143141fe3243e9f9dda9931f99b6b085 Mon Sep 17 00:00:00 2001 From: Harald Hoyer 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 /)"