]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
Add flag to toggle hostonly cmdline storing in the initramfs
authorHarald Hoyer <harald@redhat.com>
Tue, 25 Feb 2014 11:35:32 +0000 (12:35 +0100)
committerHarald Hoyer <harald@redhat.com>
Wed, 26 Feb 2014 14:01:55 +0000 (15:01 +0100)
--hostonly-cmdline:
    Store kernel command line arguments needed in the initramfs

--no-hostonly-cmdline:
    Do not store kernel command line arguments needed in the initramfs

dracut.8.asc
dracut.conf.5.asc
dracut.sh
modules.d/90crypt/module-setup.sh
modules.d/90dmraid/module-setup.sh
modules.d/90lvm/module-setup.sh
modules.d/90mdraid/module-setup.sh
modules.d/95rootfs-block/module-setup.sh

index d1bd00b07fcc221f33c6536d3929c31e9abc489b..89e086c70f6f4bb83f578d4c7025bbacbbbaf34e 100644 (file)
@@ -300,6 +300,12 @@ provide a valid _/etc/fstab_.
 **-N, --no-hostonly**::
     Disable Host-Only mode
 
+**--hostonly-cmdline**:
+    Store kernel command line arguments needed in the initramfs
+
+**--no-hostonly-cmdline**:
+    Do not store kernel command line arguments needed in the initramfs
+
 **--persistent-policy** _<policy>_::
     Use _<policy>_ to address disks and partitions.
     _<policy>_ can be any directory name found in /dev/disk.
index 5c941188dad1888d0619cdf31171fdf3689c4bb0..be62da98b6d335b534975a3bfa528c20aa3069d2 100644 (file)
@@ -76,6 +76,9 @@ Configuration files must have the extension .conf; other extensions are ignored.
     Host-Only mode: Install only what is needed for booting the local host
     instead of a generic host and generate host-specific configuration.
 
+*hostonly_cmdline*"__{yes|no}__"::
+    If set, store the kernel command line arguments needed in the initramfs
+
 *persistent_policy=*"__<policy>__"::
     Use _<policy>_ to address disks and partitions.
     _<policy>_ can be any directory name found in /dev/disk.
index c31f93e4d48e8b8a09b707d01d1e44b6955b55df..f4f183e14334cacbe0940fefb4a4ec039aca18e4 100755 (executable)
--- a/dracut.sh
+++ b/dracut.sh
@@ -137,6 +137,10 @@ Creates initial ramdisk images for preloading modules
   -H, --hostonly        Host-Only mode: Install only what is needed for
                         booting the local host instead of a generic host.
   -N, --no-hostonly     Disables Host-Only mode
+  --hostonly-cmdline    Store kernel command line arguments needed
+                        in the initramfs
+  --no-hostonly-cmdline Do not store kernel command line arguments needed
+                        in the initramfs
   --persistent-policy [POLICY]
                         Use [POLICY] to address disks and partitions.
                         POLICY can be any directory name found in /dev/disk.
@@ -488,9 +492,12 @@ while :; do
         -f|--force)    force=yes;;
         --kernel-only) kernel_only="yes"; no_kernel="no";;
         --no-kernel)   kernel_only="no"; no_kernel="yes";;
-        --print-cmdline) print_cmdline="yes"; hostonly_l="yes"; kernel_only="yes"; no_kernel="yes";;
-        --early-microcode) early_microcode_l="yes";;
-        --no-early-microcode) early_microcode_l="no";;
+        --print-cmdline)
+                       print_cmdline="yes"; hostonly_l="yes"; kernel_only="yes"; no_kernel="yes";;
+        --early-microcode)
+                       early_microcode_l="yes";;
+        --no-early-microcode)
+                       early_microcode_l="no";;
         --strip)       do_strip_l="yes";;
         --nostrip)     do_strip_l="no";;
         --prelink)     do_prelink_l="yes";;
@@ -517,6 +524,10 @@ while :; do
                        hostonly_l="yes" ;;
         -N|--no-hostonly|--no-host-only)
                        hostonly_l="no" ;;
+        --hostonly-cmdline)
+                       hostonly_cmdline_l="yes" ;;
+        --no-hostonly-cmdline)
+                       hostonly_cmdline_l="no" ;;
         --persistent-policy)
                        persistent_policy_l="$2";       PARMS_TO_STORE+=" '$2'"; shift;;
         --fstab)       use_fstab_l="yes" ;;
@@ -755,6 +766,7 @@ stdloglvl=$((stdloglvl + verbosity_mod_l))
 [[ $prefix_l ]] && prefix=$prefix_l
 [[ $prefix = "/" ]] && unset prefix
 [[ $hostonly_l ]] && hostonly=$hostonly_l
+[[ $hostonly_cmdline_l ]] && hostonly_cmdline=$hostonly_cmdline_l
 [[ $persistent_policy_l ]] && persistent_policy=$persistent_policy_l
 [[ $use_fstab_l ]] && use_fstab=$use_fstab_l
 [[ $mdadmconf_l ]] && mdadmconf=$mdadmconf_l
index 21d49c4668695d4ce95525f84d60dec9765d1bb0..570740491790e42ee4de3bce76b484a8bfa35f91 100755 (executable)
@@ -51,8 +51,10 @@ cmdline() {
 # called by dracut
 install() {
 
-    cmdline >> "${initdir}/etc/cmdline.d/90crypt.conf"
-    echo >> "${initdir}/etc/cmdline.d/90crypt.conf"
+    if [[ $hostonly_cmdline == "yes" ]]; then
+        cmdline >> "${initdir}/etc/cmdline.d/90crypt.conf"
+        echo >> "${initdir}/etc/cmdline.d/90crypt.conf"
+    fi
 
     inst_multiple cryptsetup rmdir readlink umount
     inst_script "$moddir"/cryptroot-ask.sh /sbin/cryptroot-ask
index d3888a4cbd467452243ec3f80a13f4cb0acb2ef8..aebb28dfac92e4059a4f87a8f420f368683160dc 100755 (executable)
@@ -65,8 +65,10 @@ cmdline() {
 install() {
     local _i
 
-    cmdline >> "${initdir}/etc/cmdline.d/90dmraid.conf"
-    echo >> "${initdir}/etc/cmdline.d/90dmraid.conf"
+    if [[ $hostonly_cmdline == "yes" ]]; then
+        cmdline >> "${initdir}/etc/cmdline.d/90dmraid.conf"
+        echo >> "${initdir}/etc/cmdline.d/90dmraid.conf"
+    fi
 
     inst_multiple dmraid
     inst_multiple -o kpartx
index 357797fe99a880ba0428637947f722573167137a..93a452e42d03987c129d4269f839e52f8166b8f2 100755 (executable)
@@ -50,8 +50,10 @@ install() {
 
     inst lvm
 
-    cmdline >> "${initdir}/etc/cmdline.d/90lvm.conf"
-    echo >> "${initdir}/etc/cmdline.d/90lvm.conf"
+    if [[ $hostonly_cmdline == "yes" ]]; then
+        cmdline >> "${initdir}/etc/cmdline.d/90lvm.conf"
+        echo >> "${initdir}/etc/cmdline.d/90lvm.conf"
+    fi
 
     inst_rules "$moddir/64-lvm.rules"
 
index 7d72098ff05a5e0466a338f38bee887c3d8ea000..ac745d1cef700eba9ff77d5ec321da6942d4cd90 100755 (executable)
@@ -70,8 +70,10 @@ install() {
     inst $(command -v partx) /sbin/partx
     inst $(command -v mdadm) /sbin/mdadm
 
-    cmdline  >> "${initdir}/etc/cmdline.d/90mdraid.conf"
-    echo  >> "${initdir}/etc/cmdline.d/90mdraid.conf"
+    if [[ $hostonly_cmdline == "yes" ]]; then
+        cmdline  >> "${initdir}/etc/cmdline.d/90mdraid.conf"
+        echo  >> "${initdir}/etc/cmdline.d/90mdraid.conf"
+    fi
 
     # <mdadm-3.3 udev rule
     inst_rules 64-md-raid.rules
index 7bd0d2f85cd996bfd6ca20b7aadf6b652307788b..b209ab63dae40a2227bf601fb486b9960afa7324 100755 (executable)
@@ -12,19 +12,7 @@ depends() {
     echo fs-lib
 }
 
-# called by dracut
-cmdline() {
-    local dev=/dev/block/$(find_root_block_device)
-    if [ -e $dev ]; then
-        printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")"
-        printf " rootflags=%s" "$(find_mp_fsopts /)"
-        printf " rootfstype=%s" "$(find_mp_fstype /)"
-    fi
-}
-
-# called by dracut
-install() {
-
+cmdline_journal() {
     if [[ $hostonly ]]; then
         for dev in "${!host_fs_types[@]}"; do
             [[ ${host_fs_types[$dev]} = "reiserfs" ]] || [[ ${host_fs_types[$dev]} = "xfs" ]] || continue
@@ -36,10 +24,31 @@ install() {
             fi
 
             if [ -n "$journaldev" ]; then
-                printf "%s\n" "root.journaldev=$journaldev" >> "${initdir}/etc/cmdline.d/95root-journaldev.conf"
+                printf " root.journaldev=%s" "$journaldev"
             fi
         done
     fi
+    return 0
+}
+
+# called by dracut
+cmdline() {
+    local dev=/dev/block/$(find_root_block_device)
+    if [ -e $dev ]; then
+        printf " root=%s" "$(shorten_persistent_dev "$(get_persistent_dev "$dev")")"
+        printf " rootflags=%s" "$(find_mp_fsopts /)"
+        printf " rootfstype=%s" "$(find_mp_fstype /)"
+    fi
+    cmdline_journal
+}
+
+# called by dracut
+install() {
+    if [[ $hostonly_cmdline == "yes" ]]; then
+        cmdline_journal | while read journaldev; do
+            [[ $journaldev ]] && printf "%s\n" "$journaldev" >> "${initdir}/etc/cmdline.d/95root-journaldev.conf"
+        done
+    fi
 
     inst_multiple umount
     inst_multiple tr