</listitem>
</varlistentry>
<varlistentry>
- <term>
- <envar>rd_NO_FSTAB</envar>
- </term>
+ <term><envar>rd.fstab</envar>=0</term>
<listitem>
<para>do not honor special mount options for the root filesystem found in
<filename>/etc/fstab</filename> of the real root.</para>
<variablelist>
<varlistentry>
<term>
- <envar>rdblacklist=<replaceable><drivername></replaceable></envar>
+ <envar>rd.driver.blacklist=<replaceable><drivername></replaceable></envar>
</term>
<listitem>
<para>do not load kernel module <drivername>
</varlistentry>
<varlistentry>
<term>
- <envar>rdloaddriver=<replaceable><drivername></replaceable></envar>
+ <envar>rd.driver.pre=<replaceable><drivername></replaceable></envar>
</term>
<listitem>
<para>force loading kernel module <drivername>
<variablelist>
<varlistentry>
<term>
- <envar>rdinfo</envar>
+ <envar>rd.info</envar>
</term>
<listitem>
<para>print informational output though "quiet" is set</para>
</varlistentry>
<varlistentry>
<term>
- <envar>rdshell</envar>
+ <envar>rd.shell</envar>
</term>
<listitem>
<para>allow dropping to a shell, if root mounting fails</para>
</varlistentry>
<varlistentry>
<term>
- <envar>rdinitdebug</envar>
+ <envar>rd.debug</envar>
</term>
<listitem>
<para>set -x for the dracut shell and logs to dmesg, console and <filename>/init.log</filename></para>
</varlistentry>
<varlistentry>
<term>
- <envar>rdbreak</envar>
+ <envar>rd.break</envar>
</term>
<listitem>
<para>drop to a shell at the end</para>
</varlistentry>
<varlistentry>
<term>
- <envar>rdbreak=</envar>
+ <envar>rd.break=</envar>
<replaceable>{cmdline|pre-udev|pre-trigger|initqueue|pre-mount|mount|pre-pivot}</replaceable>
</term>
<listitem>
</varlistentry>
<varlistentry>
<term>
- <envar>rdudevinfo</envar>
+ <envar>rd.udev.info</envar>
</term>
<listitem>
<para>set udev to loglevel info</para>
</varlistentry>
<varlistentry>
<term>
- <envar>rdudevdebug</envar>
+ <envar>rd.udev.debug</envar>
</term>
<listitem>
<para>set udev to loglevel debug</para>
<title>LVM</title>
<variablelist>
<varlistentry>
- <term>
- <envar>rd_NO_LVM</envar>
- </term>
+ <term><envar>rd.lvm</envar>=0</term>
<listitem>
<para>disable LVM detection</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <envar>rd_LVM_VG=<replaceable><volume group name></replaceable></envar>
+ <envar>rd.lvm.vg=<replaceable><volume group name></replaceable></envar>
</term>
<listitem>
<para>only activate the volume groups with the given name
-<envar>rd_LVM_VG</envar> can be specified multiple times on the kernel command line.</para>
+<envar>rd.lvm.vg</envar> can be specified multiple times on the kernel command line.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <envar>rd_LVM_LV=<replaceable><logical volume name></replaceable></envar>
+ <envar>rd.lvm.lv=<replaceable><logical volume name></replaceable></envar>
</term>
<listitem>
<para>only activate the logical volumes with the given name
-<envar>rd_LVM_LV</envar> can be specified multiple times on the kernel command line.</para>
+<envar>rd.lvm.lv</envar> can be specified multiple times on the kernel command line.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <envar>rd_NO_LVMCONF</envar>
+ <envar>rd.lvm.conf</envar>
</term>
<listitem>
<para>remove any <filename>/etc/lvm/lvm.conf</filename>, which may exist in the initramfs</para>
<title>crypto LUKS</title>
<variablelist>
<varlistentry>
- <term>
- <envar>rd_NO_LUKS</envar>
- </term>
+ <term><envar>rd.luks</envar>=0</term>
<listitem>
<para>disable crypto LUKS detection</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <envar>rd_LUKS_UUID=<replaceable><luks uuid></replaceable></envar>
+ <envar>rd.luks.uuid=<replaceable><luks uuid></replaceable></envar>
</term>
<listitem>
<para>only activate the LUKS partitions with the given UUID
</varlistentry>
<varlistentry>
<term>
- <envar>rd_NO_CRYPTTAB</envar>
+ <envar>rd.luks.crypttab</envar>
</term>
<listitem>
<para>do not check, if LUKS partition is in <filename>/etc/crypttab</filename></para>
<variablelist>
<varlistentry>
<term>
- <envar>rd_LUKS_KEYPATH=</envar>
+ <envar>rd.luks.keypath=</envar>
<replaceable><path to keyfile></replaceable>
</term>
<listitem>
</varlistentry>
<varlistentry>
<term>
- <envar>rd_LUKS_KEYDEV_UUID=</envar>
+ <envar>rd.luks.keydev.uuid=</envar>
<replaceable><rem. device uuid></replaceable>
</term>
<listitem>
- <para>UUID of removalbe device storing keyfile; UUID doesn't have to be exact just like for <envar>rd_LUKS_UUID</envar></para>
+ <para>UUID of removalbe device storing keyfile; UUID doesn't have to be exact just like for <envar>rd.luks.uuid</envar></para>
</listitem>
</varlistentry>
</variablelist>
<title>MD</title>
<variablelist>
<varlistentry>
- <term>
- <envar>rd_NO_MD</envar>
- </term>
+ <term><envar>rd.md</envar>=0</term>
<listitem>
<para>disable MD RAID detection</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>
- <envar>rd_NO_MDIMSM</envar>
- </term>
+ <term><envar>rd.md.imsm</envar>=0</term>
<listitem>
- <para>no MD RAID for imsm/isw raids, use dmraid instead</para>
+ <para>disable MD RAID for imsm/isw raids, use DM RAID instead</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <envar>rd_NO_MDADMCONF</envar>
+ <envar>rd.md.conf</envar>
</term>
<listitem>
<para>ignore mdadm.conf included in initramfs</para>
</varlistentry>
<varlistentry>
<term>
- <envar>rd_MD_UUID=<replaceable><md uuid></replaceable></envar>
+ <envar>rd.md.uuid=<replaceable><md raid uuid></replaceable></envar>
</term>
<listitem>
<para>only activate the raid sets with the given UUID.
</variablelist>
</refsect2>
<refsect2>
- <title>DMRAID</title>
+ <title>DM RAID</title>
<variablelist>
<varlistentry>
- <term>
- <envar>rd_NO_DM</envar>
- </term>
+ <term><envar>rd.dm</envar>=0</term>
<listitem>
<para>disable DM RAID detection</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <envar>rd_DM_UUID=<replaceable><dmraid uuid></replaceable></envar>
+ <envar>rd.dm.uuid=<replaceable><dm raid uuid></replaceable></envar>
</term>
<listitem>
<para>only activate the raid sets with the given UUID.
</varlistentry>
<varlistentry>
<term>
- <envar remap="B">rd_NFS_DOMAIN=</envar>
+ <envar remap="B">rd.nfs.domain=</envar>
<replaceable><NFSv4 domain name></replaceable>
</term>
<listitem>
<title>DASD</title>
<variablelist>
<varlistentry>
- <term><envar>rd_DASD_MOD=</envar>....</term>
+ <term><envar>rd.dasd_mod.dasd=</envar>....</term>
<listitem>
<para>same syntax as the kernel module parameter (s390 only)</para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <envar>rd_DASD=</envar>
+ <envar>rd.dasd=</envar>
<replaceable><dasd_adaptor device bus ID></replaceable>
<optional>,readonly=<replaceable>X</replaceable></optional>
<optional>,use_diag=<replaceable>X</replaceable></optional>
<title>ZFCP</title>
<variablelist>
<varlistentry>
- <term><envar>rd_ZFCP=</envar><replaceable><zfcp adaptor device bus ID></replaceable>,<replaceable><WWPN></replaceable>,<replaceable><FCPLUN></replaceable></term>
+ <term><envar>rd.zfcp=</envar><replaceable><zfcp adaptor device bus ID></replaceable>,<replaceable><WWPN></replaceable>,<replaceable><FCPLUN></replaceable></term>
<listitem>
- <para>rd_ZFCP can be specified multiple times on the kernel command line. e.g.: <programlisting>rd_ZFCP=0.0.4000,0x5005076300C213e9,0x5022000000000000</programlisting></para>
+ <para>rd.zfcp can be specified multiple times on the kernel command line. e.g.: <programlisting>rd.zfcp=0.0.4000,0x5005076300C213e9,0x5022000000000000</programlisting></para>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <envar>rd_NO_ZFCPCONF</envar>
+ <envar>rd.zfcp.conf</envar>
</term>
<listitem>
<para>ignore zfcp.conf included in the initramfs</para>
<title>Plymouth Boot Splash</title>
<variablelist>
<varlistentry>
+ <term><envar>rd.plymouth</envar>=0</term>
+ <listitem>
+ <para>disable plymouth. This will not work with encrypted partitions.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+ <refsect2>
+ <title>Deprecated, renamed Options</title>
+ <para>Here is a list of options, which were used in dracut prior to version 008, and their new replacement.</para>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <envar>rdbreak</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.break</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_CCW</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.ccw</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rdcopystate</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.copystate</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_DASD_MOD</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.dasd_mod.dasd</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_DASD</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.dasd</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rdinitdebug rdnetdebug</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.debug</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NO_DM</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.dm</envar>=0</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_DM_UUID</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.dm.uuid</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rdblacklist</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.driver.blacklist</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rdinsmodpost</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.driver.post</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rdloaddriver</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.driver.pre</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NO_FSTAB</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.fstab</envar>=0</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rdinfo</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.info</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>check</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.live.check</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rdlivedebug</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.live.debug</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>live_dir</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.live.dir</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>liveimg</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.live.image</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>overlay</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.live.overlay</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>readonly_overlay</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.live.overlay.readonly</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>reset_overlay</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.live.overlay.reset</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>live_ram</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.live.ram</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NO_CRYPTTAB</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.luks.crypttab</envar>=0</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_LUKS_KEYDEV_UUID</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.luks.keydev.uuid</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_LUKS_KEYPATH</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.luks.keypath</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NO_LUKS</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.luks</envar>=0</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_LUKS_UUID</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.luks.uuid</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_LUKS_UUID</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.luks.uuid</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NO_LVMCONF</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.lvm.conf</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_LVM_LV</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.lvm.lv</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NO_LVM</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.lvm</envar>=0</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_LVM_SNAPSHOT</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.lvm.snapshot</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_LVM_SNAPSIZE</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.lvm.snapsize</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_LVM_VG</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.lvm.vg</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NO_MDADMCONF</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.md.conf</envar>=0</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NO_MDIMSM</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.md.imsm</envar>=0</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NO_MD</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.md</envar>=0</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_MD_UUID</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.md.uuid</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NFS_DOMAIN</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.nfs.domain</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
<term>
<envar>rd_NO_PLYMOUTH</envar>
</term>
<listitem>
- <para>do not start plymouth. This will not work with encrypted partitions.</para>
+ <para><envar>rd.plymouth</envar>=0</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_retry</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.retry</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rdshell</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.shell</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NO_SPLASH</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.splash</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rdudevdebug</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.udev.debug</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rdudevinfo</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.udev.info</envar></para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_NO_ZFCPCONF</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.zfcp.conf</envar>=0</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>
+ <envar>rd_ZFCP</envar>
+ </term>
+ <listitem>
+ <para><envar>rd.zfcp</envar></para>
</listitem>
</varlistentry>
</variablelist>
<para>Any hardware drivers that the boot process depends on must be loaded. All kernel modules for common storage devices are packed onto the initramfs and then udev pulls in modules matching the computer's detected hardware. </para>
</listitem>
<listitem>
- <para>On systems which display a boot splash screen, the video hardware must be initialized and a user-space helper started to paint animations onto the display in lockstep with the boot process. </para>
+ <para>On systems which display a boot rd.splash screen, the video hardware must be initialized and a user-space helper started to paint animations onto the display in lockstep with the boot process. </para>
</listitem>
<listitem>
<para>If the root file system is on NFS, dracut does then: <itemizedlist>
<para>The root file system is mounted read-only. </para>
</listitem>
<listitem>
- <para>Any processes which must continue running (such as the splash screen helper and its command <acronym>FIFO</acronym>) are hoisted into the newly-mounted root file system. </para>
+ <para>Any processes which must continue running (such as the rd.splash screen helper and its command <acronym>FIFO</acronym>) are hoisted into the newly-mounted root file system. </para>
</listitem>
</itemizedlist></para>
<para>The final root file system cannot simply be mounted over /, since that would make the scripts and tools on the initial root file system inaccessible for any final cleanup tasks. On an initramfs, the initial root file system cannot be rotated away. Instead, it is simply emptied and the final root file system mounted over the top.
<para>The <option>--include</option> option let you specify a source path and a target path. For example</para>
<screen># dracut --include cmdline-preset /etc/cmdline initramfs-cmdline-pre.img</screen>
<para>will create an initramfs image, where the file cmdline-preset will be copied inside the initramfs to <filename>/etc/cmdline</filename>. <option>--include</option> can only be specified once.</para>
- <screen># mkdir overlay
-# mkdir overlay/etc
-# mkdir overlay/etc/conf.d
-# echo "ip=auto" >> overlay/etc/cmdline
-# echo export TESTVAR=testtest >> overlay/etc/conf.d/testvar.conf
-# echo export TESTVAR=testtest >> overlay/etc/conf.d/testvar.conf
-# tree overlay/
-overlay/
+ <screen># mkdir rd.live.overlay
+# mkdir rd.live.overlay/etc
+# mkdir rd.live.overlay/etc/conf.d
+# echo "ip=auto" >> rd.live.overlay/etc/cmdline
+# echo export TESTVAR=testtest >> rd.live.overlay/etc/conf.d/testvar.conf
+# echo export TESTVAR=testtest >> rd.live.overlay/etc/conf.d/testvar.conf
+# tree rd.live.overlay/
+rd.live.overlay/
└── etc
├── cmdline
└── conf.d
└── testvar.conf
-# dracut --include overlay / initramfs-overlay.img</screen>
- <para>This will put the contents of the overlay directory into the root of the initramfs image.</para>
+# dracut --include rd.live.overlay / initramfs-rd.live.overlay.img</screen>
+ <para>This will put the contents of the rd.live.overlay directory into the root of the initramfs image.</para>
<para>The <option>--install</option> option let you specify several files, which will get installed in the initramfs image at the same location, as they are present on initramfs creation time.</para>
<screen># dracut --install 'strace fsck.ext3 ssh' initramfs-dbg.img</screen>
<para>This will create an initramfs with the <command>strace</command>, <command>fsck.ext3</command> and <command>ssh</command> executables, together with the libraries needed to start those. The <option>--install</option> option can be specified multiple times.</para>
</para>
</listitem>
<listitem>
- <para>Add ''rdshell'' to the kernel command line. This will present a shell should dracut be unable to locate your root device
+ <para>Add ''rd.shell'' to the kernel command line. This will present a shell should dracut be unable to locate your root device
</para>
</listitem>
<listitem>
- <para>Add ''rdshell rdinitdebug'' to the kernel command line so that dracut shell commands are printed as they are executed
+ <para>Add ''rd.shell rd.debug'' to the kernel command line so that dracut shell commands are printed as they are executed
</para>
</listitem>
<listitem>
- <para>With dracut >= 002-11, you can inspect the rdinitdebug output with:
+ <para>With dracut >= 002-11, you can inspect the rd.debug output with:
</para>
<screen># less /init.log
# dmesg | less</screen>
<para>Dracut offers a shell for interactive debugging in the event dracut fails to locate your root filesystem. To enable the shell:
<orderedlist>
<listitem>
- <para>Add the boot parameter ''rdshell'' to your bootloader configuration file (e.g. <filename>/etc/grub.conf</filename>)</para>
+ <para>Add the boot parameter ''rd.shell'' to your bootloader configuration file (e.g. <filename>/etc/grub.conf</filename>)</para>
</listitem>
<listitem>
<para>Remove the boot arguments ''rhgb'' and ''quiet''
terminal --timeout=5 serial console
title Fedora (2.6.29.5-191.fc11.x86_64)
root (hd0,0)
- kernel /vmlinuz-2.6.29.5-191.fc11.x86_64 ro root=/dev/mapper/vg_uc1-lv_root console=tty0 rdshell
+ kernel /vmlinuz-2.6.29.5-191.fc11.x86_64 ro root=/dev/mapper/vg_uc1-lv_root console=tty0 rd.shell
initrd /dracut-2.6.29.5-191.fc11.x86_64.img</screen></para>
</listitem>
<listitem>
<para><filename>install</filename>:</para>
<programlisting>inst_hook cmdline 20 "$moddir/parse-insmodpost.sh"
inst_simple "$moddir/insmodpost.sh" /sbin/insmodpost.sh</programlisting>
- <para>The <filename>pase-instmodpost.sh</filename> parses the kernel command line for a argument <envar>rdinsmodpost</envar>, blacklists the module from being autoloaded and installs the hook <filename>insmodpost.sh</filename> in the <filename>initqueue-settled</filename>.</para>
+ <para>The <filename>pase-instmodpost.sh</filename> parses the kernel command line for a argument <envar>rd.driver.post</envar>, blacklists the module from being autoloaded and installs the hook <filename>insmodpost.sh</filename> in the <filename>initqueue-settled</filename>.</para>
<para><filename>parse-insmodpost.sh</filename>:</para>
- <programlisting>for p in $(getargs rdinsmodpost=); do
+ <programlisting>for p in $(getargs rd.driver.post=); do
echo "blacklist $p" >> /etc/modprobe.d/initramfsblacklist.conf
_do_insmodpost=1
done
[ -n "$_do_insmodpost" ] && /sbin/initqueue --settled --unique --onetime /sbin/insmodpost.sh
unset _do_insmodpost
</programlisting>
- <para><filename>insmodpost.sh</filename>, which is called in the <filename>initqueue-settled</filename> hook will just modprobe the kernel modules specified in all <envar>rdinsmodpost</envar> kernel command line parameters. It runs after <command>udev</command> has settled and is only called once (<parameter>--onetime</parameter>).</para>
+ <para><filename>insmodpost.sh</filename>, which is called in the <filename>initqueue-settled</filename> hook will just modprobe the kernel modules specified in all <envar>rd.driver.post</envar> kernel command line parameters. It runs after <command>udev</command> has settled and is only called once (<parameter>--onetime</parameter>).</para>
<para><filename>insmodpost.sh</filename>:</para>
<programlisting>. /lib/dracut-lib.sh
-for p in $(getargs rdinsmodpost=); do
+for p in $(getargs rd.driver.post=); do
modprobe $p
done
</programlisting>
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if ! getarg rd_NO_SPLASH; then
+if getargbool 1 rd.splash -n rd_NO_SPLASH; then
[ -c /dev/null ] || mknod /dev/null c 1 3
[ -c /dev/console ] || mknod /dev/console c 5 1
[ -c /dev/tty0 ] || mknod /dev/tty0 c 4 0
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if ! getarg rd_NO_PLYMOUTH; then
+if getargbool 1 rd.plymouth -n rd_NO_PLYMOUTH; then
[ -c /dev/null ] || mknod -m 0666 /dev/null c 1 3
# first trigger graphics subsystem
udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1
# close everything which is not busy
rm -f /etc/udev/rules.d/70-luks.rules >/dev/null 2>&1
-while true; do
- local do_break="y"
- for i in /dev/mapper/luks-*; do
- cryptsetup luksClose $i >/dev/null 2>&1 && do_break=n
+if ! getarg rd.luks.uuid rd_LUKS_UUID && getargbool 1 rd.luks -n rd_NO_LUKS; then
+ while true; do
+ local do_break="y"
+ for i in /dev/mapper/luks-*; do
+ cryptsetup luksClose $i >/dev/null 2>&1 && do_break=n
+ done
+ [ "$do_break" = "y" ] && break
done
- [ "$do_break" = "y" ] && break
-done
+fi
device="$1"
fi
-if [ -f /etc/crypttab ] && ! getarg rd_NO_CRYPTTAB; then
+if [ -f /etc/crypttab ] && getargbool 1 rd.luks.crypttab -n rd_NO_CRYPTTAB; then
while read name dev rest; do
# ignore blank lines and comments
if [ -z "$name" -o "${name#\#}" != "$name" ]; then
return ${ret}
}
-keypaths="$(getargs rd_LUKS_KEYPATH)"
+keypaths="$(getargs rd.luks.keypath rd_LUKS_KEYPATH)"
unset keydev_uuid keypath
if [ -n "$keypaths" ]; then
- keydev_uuids="$(getargs rd_LUKS_KEYDEV_UUID)"
+ keydev_uuids="$(getargs rd.luks.keydev.uuid rd_LUKS_KEYDEV_UUID)"
[ -n "$keydev_uuids" ] || {
warn 'No UUID of device storing LUKS key specified.'
warn 'It is recommended to set rd_LUKS_KEYDEV_UUID.'
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if getarg rd_NO_LUKS; then
- info "rd_NO_LUKS: removing cryptoluks activation"
+if ! getargbool 1 rd.luks -n rd_NO_LUKS; then
+ info "rd.luks=0: removing cryptoluks activation"
rm -f /etc/udev/rules.d/70-luks.rules
else
{
echo 'ACTION!="add|change", GOTO="luks_end"'
} > /etc/udev/rules.d/70-luks.rules
- LUKS=$(getargs rd_LUKS_UUID)
+ LUKS=$(getargs rd.luks.uuid rd_LUKS_UUID)
unset settled
- [ -n "$(getargs rd_LUKS_KEYPATH)" ] && \
- [ -z "$(getargs rd_LUKS_KEYDEV_UUID)" ] && \
+ [ -n "$(getargs rd.luks.keypath rd_LUKS_KEYPATH)" ] && \
+ [ -z "$(getargs rd.luks.keydev.uuid rd_LUKS_KEYDEV_UUID)" ] && \
settled='--settled'
if [ -n "$LUKS" ]; then
. /lib/dracut-lib.sh
-DM_RAIDS=$(getargs rd_DM_UUID=)
+DM_RAIDS=$(getargs rd.dm.uuid rd_DM_UUID=)
DM_CLEANUP="no"
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
# nodmraid for anaconda / rc.sysinit compatibility
-if getarg rd_NO_DM || getarg nodmraid; then
- info "rd_NO_DM: removing DM RAID activation"
+if ! getargbool 1 rd.dm -n rd_NO_DM || getarg nodmraid; then
+ info "rd.dm=0: removing DM RAID activation"
udevproperty rd_NO_DM=1
fi
-if [ ! -x /sbin/mdadm ] || getarg rd_NO_MDIMSM || getarg noiswmd; then
- info "rd_NO_MDIMSM: no MD RAID for imsm/isw raids"
+if [ ! -x /sbin/mdadm ] || ! getargbool 1 rd.md.imsm -n rd_NO_MDIMSM || getarg noiswmd; then
+ info "rd.md.imsm=0: no MD RAID for imsm/isw raids"
udevproperty rd_NO_MDIMSM=1
fi
PATH=$PATH:/sbin:/usr/sbin
-if getarg rdlivedebug; then
+if getargbool 0 rd.live.debug -y rdlivedebug; then
exec > /tmp/liveroot.$$.out
exec 2>> /tmp/liveroot.$$.out
set -x
# parse various live image specific options that make sense to be
# specified as their own things
-live_dir=$(getarg live_dir)
+live_dir=$(getarg rd.live.dir live_dir)
[ -z "$live_dir" ] && live_dir="LiveOS"
-getarg live_ram && live_ram="yes"
-getarg reset_overlay && reset_overlay="yes"
-getarg readonly_overlay && readonly_overlay="--readonly" || readonly_overlay=""
-overlay=$(getarg overlay)
+getargbool 0 rd.live.ram -y live_ram && live_ram="yes"
+getargbool 0 rd.live.overlay.reset -y reset_overlay && reset_overlay="yes"
+getargbool 0 rd.live.overlay.readonly -y readonly_overlay && readonly_overlay="--readonly" || readonly_overlay=""
+overlay=$(getarg rd.live.overlay overlay)
# FIXME: we need to be able to hide the plymouth splash for the check really
[ -e $livedev ] & fs=$(blkid -s TYPE -o value $livedev)
if [ "$fs" = "iso9660" -o "$fs" = "udf" ]; then
check="yes"
fi
-getarg check || check=""
+getarg rd.live.check check || check=""
if [ -n "$check" ]; then
checkisomd5 --verbose $livedev || :
if [ $? -ne 0 ]; then
[ -z "$root" ] && root=$(getarg root=)
# support legacy syntax of passing liveimg and then just the base root
-if getarg liveimg; then
+if getargbool 0 rd.live.image -y liveimg; then
liveroot="live:$root"
fi
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-for p in $(getargs rdloaddriver=); do
+for p in $(getargs rd.loaddriver rdloaddriver=); do
modprobe $p
done
. /lib/dracut-lib.sh
-VGS=$(getargs rd_LVM_VG=)
-LVS=$(getargs rd_LVM_LV=)
-SNAPSHOT=$(getargs rd_LVM_SNAPSHOT=)
-SNAPSIZE=$(getargs rd_LVM_SNAPSIZE=)
+VGS=$(getargs rd.lvm.vg rd_LVM_VG=)
+LVS=$(getargs rd.lvm.lv rd_LVM_LV=)
+SNAPSHOT=$(getargs rd.lvm.snapshot rd_LVM_SNAPSHOT=)
+SNAPSIZE=$(getargs rd.lvm.snapsize rd_LVM_SNAPSIZE=)
[ -d /etc/lvm ] || mkdir -p /etc/lvm
# build a list of devices to scan
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if [ -e /etc/lvm/lvm.conf ] && getarg rd_NO_LVMCONF; then
+if [ -e /etc/lvm/lvm.conf ] && ! getargbool 1 rd.lvm.conf -n rd_NO_LVMCONF; then
rm -f /etc/lvm/lvm.conf
fi
-if getarg rd_NO_LVM; then
- info "rd_NO_LVM: removing LVM activation"
+if ! getargbool 1 rd.lvm -n rd_NO_LVM; then
+ info "rd.lvm=0: removing LVM activation"
rm -f /etc/udev/rules.d/64-lvm*.rules
else
- for dev in $(getargs rd_LVM_VG=) $(getargs rd_LVM_LV=); do
+ for dev in $(getargs rd.lvm.vg rd_LVM_VG=) $(getargs rd.lvm.lv rd_LVM_LV=); do
printf '[ -e "/dev/%s" ] || exit 1\n' $dev \
>> /initqueue-finished/lvm.sh
{
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-info "rd_NO_MDIMSM: no MD RAID for imsm/isw raids"
+info "rd.md.imsm=0: no MD RAID for imsm/isw raids"
udevproperty rd_NO_MDIMSM=1
\ No newline at end of file
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-if getarg rd_NO_MD; then
- info "rd_NO_MD: removing MD RAID activation"
+if ! getargbool 1 rd.md -n rd_NO_MD; then
+ info "rd.md=0: removing MD RAID activation"
udevproperty rd_NO_MD=1
else
- MD_UUID=$(getargs rd_MD_UUID=)
+ MD_UUID=$(getargs rd.md.uuid rd_MD_UUID=)
# rewrite the md rules to only process the specified raid array
if [ -n "$MD_UUID" ]; then
fi
-if [ -e /etc/mdadm.conf ] && ! getarg rd_NO_MDADMCONF; then
+if [ -e /etc/mdadm.conf ] && getargbool 1 rd.md.conf -n rd_NO_MDADMCONF; then
udevproperty rd_MDADMCONF=1
rm -f /pre-pivot/*mdraid-cleanup.sh
fi
-if getarg rd_NO_MDADMCONF; then
+if ! getargbool 1 rd.md.conf -n rd_NO_MDADMCONF; then
rm -f /etc/mdadm/mdadm.conf /etc/mdadm.conf
fi
# noiswmd nodmraid for anaconda / rc.sysinit compatibility
# note nodmraid really means nobiosraid, so we don't want MDIMSM then either
-if getarg rd_NO_MDIMSM || getarg noiswmd || getarg nodmraid; then
- info "rd_NO_MDIMSM: no MD RAID for imsm/isw raids"
+if ! getargbool 1 rd.md.imsm -n rd_NO_MDIMSM || getarg noiswmd || getarg nodmraid; then
+ info "no MD RAID for imsm/isw raids"
udevproperty rd_NO_MDIMSM=1
fi
#!/bin/sh
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-for dasd_arg in $(getargs 'rd_DASD='); do
+for dasd_arg in $(getargs rd.dasd 'rd_DASD='); do
(
IFS=","
set $dasd_arg
# ex: ts=8 sw=4 sts=4 et filetype=sh
[ -d /etc/modprobe.d ] || mkdir /etc/modprobe.d
-dasd_arg=$(getarg rd_DASD_MOD=)
+dasd_arg=$(getarg rd.dasd_mod.dasd rd_DASD_MOD=)
if [ -n "$dasd_arg" ]; then
echo "options dasd_mod dasd=$dasd_arg" >> /etc/modprobe.d/dasd_mod.conf
fi
# Check required arguments
-if nfsdomain=$(getarg rd_NFS_DOMAIN); then
+if nfsdomain=$(getarg rd.nfs.domain rd_NFS_DOMAIN); then
if [ -f /etc/idmapd.conf ]; then
sed -i -e \
"s/^[[:space:]#]*Domain[[:space:]]*=.*/Domain = $nfsdomain/g" \
echo '[ -e /dev/resume ]' > /initqueue-finished/resume.sh
-elif ! getarg noresume; then
+elif ! getarg noresume; then
{
echo "SUBSYSTEM==\"block\", ACTION==\"add|change\", ENV{ID_FS_TYPE}==\"suspend|swsuspend|swsupend\"," \
" RUN+=\"/bin/sh -c 'echo %M:%m > /sys/power/resume'\"";
mount -t ${fstype:-auto} -o "$rflags" "${root#block:}" "$NEWROOT" \
&& ROOTFS_MOUNTED=yes
- if ! getarg rd_NO_FSTAB \
+ if getargbool 1 rd.fstab -n rd_NO_FSTAB \
&& ! getarg rootflags \
&& [ -f "$NEWROOT/etc/fstab" ] \
&& ! [ -L "$NEWROOT/etc/fstab" ]; then
resume="/dev/disk/by-uuid/${resume#UUID=}" ;;
esac
-if splash=$(getarg splash=); then
+if splash=$(getarg rd.splash= splash=); then
export splash
else
unset splash
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-getarg rd_NO_ZFCPCONF && rm /etc/zfcp.conf
+getargbool 1 rd.zfcp.conf -n rd_NO_ZFCPCONF || rm /etc/zfcp.conf
-for zfcp_arg in $(getargs 'rd_ZFCP='); do
+for zfcp_arg in $(getargs rd.zfcp 'rd_ZFCP='); do
(
IFS=","
set $zfcp_arg
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-for ccw_arg in $(getargs 'rd_CCW=') $(getargs 'rd_ZNET='); do
+for ccw_arg in $(getargs rd.ccw 'rd_CCW=') $(getargs rd.znet 'rd_ZNET='); do
echo $ccw_arg >> /etc/ccw.conf
done
# ex: ts=8 sw=4 sts=4 et filetype=sh
. /lib/dracut-lib.sh
-for p in $(getargs rdinsmodpost=); do
+for p in $(getargs rd.insmodpost rdinsmodpost=); do
modprobe $p
done
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-for p in $(getargs rdinsmodpost=); do
+for p in $(getargs rd.insmodpost rdinsmodpost=); do
echo "blacklist $p" >> /etc/modprobe.d/initramfsblacklist.conf
_do_insmodpost=1
done
# Don't auto detect syslog but set it
. /lib/dracut-lib.sh
-syslogserver=$(getarg syslog)
-syslogfilters=$(getargs filter)
-syslogtype=$(getarg syslogtype)
+syslogserver=$(getarg syslog.server syslog)
+syslogfilters=$(getargs syslog.filter filter)
+syslogtype=$(getarg syslog.type syslogtype)
[ -n "$syslogserver" ] && echo $syslogserver > /tmp/syslog.server
[ -n "$syslogfilters" ] && echo "$syslogfilters" > /tmp/syslog.filters
[ "${1#*$2*}" != "$1" ]
}
-getarg() {
- set +x
- local o line val
+_getcmdline() {
+ local _line
+ unset _line
if [ -z "$CMDLINE" ]; then
if [ -e /etc/cmdline ]; then
- while read line; do
- CMDLINE_ETC="$CMDLINE_ETC $line";
+ while read _line; do
+ CMDLINE_ETC="$CMDLINE_ETC $_line";
done </etc/cmdline;
fi
read CMDLINE </proc/cmdline;
CMDLINE="$CMDLINE $CMDLINE_ETC"
fi
- for o in $CMDLINE; do
- if [ "$o" = "$1" ]; then
- [ "$RDDEBUG" = "yes" ] && set -x;
+}
+
+_dogetarg() {
+ local _o _val
+ unset _val
+ unset _o
+ _getcmdline
+
+ for _o in $CMDLINE; do
+ if [ "$_o" = "$1" ]; then
return 0;
fi
- [ "${o%%=*}" = "${1%=}" ] && val=${o#*=};
+ [ "${_o%%=*}" = "${1%=}" ] && _val=${_o#*=};
done
- if [ -n "$val" ]; then
- echo $val;
- [ "$RDDEBUG" = "yes" ] && set -x;
+ if [ -n "$_val" ]; then
+ echo $_val;
return 0;
fi
+ return 1;
+}
+
+getarg() {
+ set +x
+ while [ $# -gt 0 ]; do
+ case $1 in
+ -y) if _dogetarg $2; then
+ echo 1
+ [ "$RDDEBUG" = "yes" ] && set -x
+ return 0
+ fi
+ shift 2;;
+ -n) if _dogetarg $2; then
+ echo 0;
+ [ "$RDDEBUG" = "yes" ] && set -x
+ return 1
+ fi
+ shift 2;;
+ *) if _dogetarg $1; then
+ [ "$RDDEBUG" = "yes" ] && set -x
+ return 0;
+ fi
+ shift;;
+ esac
+ done
[ "$RDDEBUG" = "yes" ] && set -x
return 1
}
-getargs() {
- set +x
- local o line found
- if [ -z "$CMDLINE" ]; then
- if [ -e /etc/cmdline ]; then
- while read line; do
- CMDLINE_ETC="$CMDLINE_ETC $line";
- done </etc/cmdline;
- fi
- read CMDLINE </proc/cmdline;
- CMDLINE="$CMDLINE $CMDLINE_ETC"
+getargbool() {
+ local _b
+ unset _b
+ local _default
+ _default=$1; shift
+ _b=$(getarg "$@")
+ [ $? -ne 0 -a -z "$_b" ] && _b=$_default
+ if [ -n "$_b" ]; then
+ [ $_b -eq 0 ] && return 1
+ [ $_b = "no" ] && return 1
fi
- for o in $CMDLINE; do
- if [ "$o" = "$1" ]; then
- [ "$RDDEBUG" = "yes" ] && set -x;
+ return 0
+}
+
+_dogetargs() {
+ set +x
+ local _o _found
+ unset _o
+ unset _found
+ _getcmdline
+
+ for _o in $CMDLINE; do
+ if [ "$_o" = "$1" ]; then
return 0;
fi
- if [ "${o%%=*}" = "${1%=}" ]; then
- echo -n "${o#*=} ";
- found=1;
+ if [ "${_o%%=*}" = "${1%=}" ]; then
+ echo -n "${_o#*=} ";
+ _found=1;
fi
done
- if [ -n "$found" ]; then
- [ "$RDDEBUG" = "yes" ] && set -x
- return 0;
+ [ -n "$_found" ] && return 0;
+ return 1;
+}
+
+getargs() {
+ local _val
+ unset _val
+ set +x
+ while [ $# -gt 0 ]; do
+ _val="$_val $(_dogetargs $1)"
+ shift
+ done
+ if [ -n "$_val" ]; then
+ echo -n $_val
+ [ "$RDDEBUG" = "yes" ] && set -x
+ return 0
fi
[ "$RDDEBUG" = "yes" ] && set -x
return 1;
}
+
# Prints value of given option. If option is a flag and it's present,
# it just returns 0. Otherwise 1 is returned.
# $1 = options separated by commas
if [ -z "$RDDEBUG" ]; then
if [ -e /proc/cmdline ]; then
RDDEBUG=no
- if getarg rdinitdebug || getarg rdnetdebug; then
+ if getargbool 0 rd.debug -y rdinitdebug -y rdnetdebug; then
RDDEBUG=yes
fi
fi
check_quiet() {
if [ -z "$DRACUT_QUIET" ]; then
DRACUT_QUIET="yes"
- getarg rdinfo && DRACUT_QUIET="no"
+ getargbool 0 rd.info -y rdinfo && DRACUT_QUIET="no"
getarg quiet || DRACUT_QUIET="yes"
fi
}
wait_for_loginit()
{
- if getarg rdinitdebug; then
+ if getargbool 0 rd.debug -y rdinitdebug -y rdnetdebug; then
set +x
exec 0<>/dev/console 1<>/dev/console 2<>/dev/console
# wait for loginit
echo $@
source_all emergency
echo
- if getarg rdshell || getarg rdbreak; then
+ if getargbool 0 rd.shell -y rdshell || getarg rd.break rdbreak; then
echo "Dropping to debug shell."
echo
export PS1="$_rdshell_name:\${PWD}# "
ln -s /proc/self/fd/1 /dev/stdout >/dev/null 2>&1
ln -s /proc/self/fd/2 /dev/stderr >/dev/null 2>&1
-if getarg rdinitdebug; then
+if getargbool 0 rd.debug -y rdinitdebug -y rdnetdebug; then
getarg quiet && DRACUT_QUIET="yes"
mkfifo /dev/initlog.pipe
/sbin/loginit $DRACUT_QUIET </dev/initlog.pipe >/dev/console 2>&1 &
source_conf /etc/conf.d
# run scriptlets to parse the command line
-getarg 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline"
+getarg 'rd.break=cmdline' 'rdbreak=cmdline' && emergency_shell -n cmdline "Break before cmdline"
source_all cmdline
[ -z "$root" ] && die "No or empty root= argument"
} > /tmp/root.info
# pre-udev scripts run before udev starts, and are run only once.
-getarg 'rdbreak=pre-udev' && emergency_shell -n pre-udev "Break before pre-udev"
+getarg 'rd.break=pre-udev' 'rdbreak=pre-udev' && emergency_shell -n pre-udev "Break before pre-udev"
source_all pre-udev
# start up udev and trigger cold plugs
UDEV_QUEUE_EMPTY="udevadm settle --timeout=1"
fi
-getarg rdudevinfo && udevadm control $UDEV_LOG_PRIO_ARG=info
-getarg rdudevdebug && udevadm control $UDEV_LOG_PRIO_ARG=debug
+getargbool 0 rd.udev.info -y rdudevinfo && udevadm control $UDEV_LOG_PRIO_ARG=info
+getargbool 0 rd.udev.debug -y rdudevdebug && udevadm control $UDEV_LOG_PRIO_ARG=debug
-getarg 'rdbreak=pre-trigger' && emergency_shell -n pre-trigger "Break before pre-trigger"
+getarg 'rd.break=pre-trigger' 'rdbreak=pre-trigger' && emergency_shell -n pre-trigger "Break before pre-trigger"
source_all pre-trigger
# then the rest
udevadm trigger --action=add $udevtriggeropts >/dev/null 2>&1
-getarg 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
+getarg 'rd.break=initqueue' 'rdbreak=initqueue' && emergency_shell -n initqueue "Break before initqueue"
-RDRETRY=$(getarg 'rd_retry=')
+RDRETRY=$(getarg rd.retry 'rd_retry=')
RDRETRY=${RDRETRY:-20}
RDRETRY=$(($RDRETRY*2))
# pre-mount happens before we try to mount the root filesystem,
# and happens once.
-getarg 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"
+getarg 'rd.break=pre-mount' 'rdbreak=pre-mount' && emergency_shell -n pre-mount "Break pre-mount"
source_all pre-mount
-getarg 'rdbreak=mount' && emergency_shell -n mount "Break mount"
+getarg 'rd.break=mount' 'rdbreak=mount' && emergency_shell -n mount "Break mount"
# mount scripts actually try to mount the root filesystem, and may
# be sourced any number of times. As soon as one suceeds, no more are sourced.
i=0
} | vinfo
# pre pivot scripts are sourced just before we switch over to the new root.
-getarg 'rdbreak=pre-pivot' && emergency_shell -n pre-pivot "Break pre-pivot"
+getarg 'rd.break=pre-pivot' 'rdbreak=pre-pivot' && emergency_shell -n pre-pivot "Break pre-pivot"
source_all pre-pivot
# by the time we get here, the root filesystem should be mounted.
emergency_shell
}
-getarg rdbreak && emergency_shell -n switch_root "Break before switch_root"
+getarg rd.break rdbreak && emergency_shell -n switch_root "Break before switch_root"
# stop udev queue before killing it
udevadm control --stop-exec-queue
fi
# Debug: Copy state
-if getarg rdcopystate; then
+if getargbool 0 rd.copystate -y rdcopystate; then
mkdir /dev/.initramfs/
cp /tmp/* /dev/.initramfs/ >/dev/null 2>&1
fi
-if getarg rd.timestamp; then
+if getargbool 1 rd.timestamp; then
export RDTIMESTAMP
else
unset RDTIMESTAMP
# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
# ex: ts=8 sw=4 sts=4 et filetype=sh
-for p in $(getargs rdblacklist=); do
+for p in $(getargs rd.module.blacklist rdblacklist=); do
echo "blacklist $p" >> /etc/modprobe.d/initramfsblacklist.conf
done
#!/bin/sh
-getarg rdshell || poweroff -f
+getarg rd.shell || poweroff -f
getarg failme && poweroff -f
KVERSION=${KVERSION-$(uname -r)}
# Uncomment this to debug failures
-#DEBUGFAIL="rdshell"
+#DEBUGFAIL="rd.shell"
test_run() {
$testdir/run-qemu -hda root.ext2 -m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "root=/dev/dracut/root rw quiet rd_retry=3 rdinfo console=ttyS0,115200n81 selinux=0 rdinitdebug rdnetdebug $DEBUGFAIL" \
+ -append "root=/dev/dracut/root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
-initrd initramfs.testing
grep -m 1 -q dracut-root-block-success root.ext2 || return 1
}
#!/bin/sh
-getarg rdshell || poweroff -f
+getarg rd.shell || poweroff -f
getarg failme && poweroff -f
KVERSION=${KVERSION-$(uname -r)}
# Uncomment this to debug failures
-#DEBUGFAIL="rdshell"
+#DEBUGFAIL="rd.shell"
test_run() {
$testdir/run-qemu -hda root.ext2 -m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "root=/dev/dracut/root rw quiet rd_retry=3 rdinfo console=ttyS0,115200n81 selinux=0 rdinitdebug rdnetdebug $DEBUGFAIL" \
+ -append "root=/dev/dracut/root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
-initrd initramfs.testing
grep -m 1 -q dracut-root-block-success root.ext2 || return 1
}
#!/bin/sh
-getarg rdshell || poweroff -f
+getarg rd.shell || poweroff -f
getarg failme && poweroff -f
KVERSION=${KVERSION-$(uname -r)}
# Uncomment this to debug failures
-DEBUGFAIL="rdshell"
+DEBUGFAIL="rd.shell"
client_run() {
echo "CLIENT TEST START: $@"
$testdir/run-qemu -hda root.ext2 -m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "$@ root=LABEL=root rw quiet rd_retry=3 rdinfo console=ttyS0,115200n81 selinux=0 rdinitdebug rdnetdebug $DEBUGFAIL " \
+ -append "$@ root=LABEL=root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL " \
-initrd initramfs.testing
if ! grep -m 1 -q dracut-root-block-success root.ext2; then
echo "CLIENT TEST END: $@ [FAIL]"
client_run || return 1
-# client_run rd_NO_MDADMCONF || return 1
+# client_run rd.md.conf=0 || return 1
- client_run rd_NO_LVM failme && return 1
+ client_run rd.lvm=0 failme && return 1
- client_run rd_LVM_VG=failme failme && return 1
+ client_run rd.lvm.vg=failme failme && return 1
- client_run rd_LVM_VG=dracut || return 1
+ client_run rd.lvm.vg=dracut || return 1
-# client_run rd_MD_UUID=$MD_UUID rd_NO_MDADMCONF || return 1
+# client_run rd.md.uuid=$MD_UUID rd.md.conf=0 || return 1
- client_run rd_LVM_VG=dummy1 rd_LVM_VG=dracut rd_LVM_VG=dummy2 rd_NO_LVMCONF failme && return 1
+ client_run rd.lvm.vg=dummy1 rd.lvm.vg=dracut rd.lvm.vg=dummy2 rd.lvm.conf=0 failme && return 1
-# client_run rd_MD_UUID=failme rd_NO_MDADMCONF failme && return 1
+# client_run rd.md.uuid=failme rd.md.conf=0 failme && return 1
- client_run rd_NO_MD failme && return 1
+ client_run rd.md=0 failme && return 1
-# client_run rd_MD_UUID=dummy1 rd_MD_UUID=$MD_UUID rd_MD_UUID=dummy2 rd_NO_MDADMCONF failme && return 1
+# client_run rd.md.uuid=dummy1 rd.md.uuid=$MD_UUID rd.md.uuid=dummy2 rd.md.conf=0 failme && return 1
return 0
}
#!/bin/sh
-getarg rdshell || poweroff -f
+getarg rd.shell || poweroff -f
getarg failme && poweroff -f
KVERSION=${KVERSION-$(uname -r)}
# Uncomment this to debug failures
-#DEBUGFAIL="rdshell" # udev.log-priority=debug
+#DEBUGFAIL="rd.shell" # udev.log-priority=debug
test_run() {
LUKSARGS=$(cat luks.txt)
echo "CLIENT TEST START: $LUKSARGS"
$testdir/run-qemu -hda root.ext2 -hdb check-success.img -m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "root=/dev/dracut/root rw quiet rd_retry=3 rdinfo console=ttyS0,115200n81 selinux=0 rdinitdebug rdnetdebug $LUKSARGS $DEBUGFAIL" \
+ -append "root=/dev/dracut/root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $LUKSARGS $DEBUGFAIL" \
-initrd initramfs.testing
grep -m 1 -q dracut-root-block-success check-success.img || return 1
echo "CLIENT TEST END: [OK]"
echo "CLIENT TEST START: Any LUKS"
$testdir/run-qemu -hda root.ext2 -hdb check-success.img -m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "root=/dev/dracut/root rw quiet rd_retry=3 rdinfo console=ttyS0,115200n81 selinux=0 rdinitdebug rdnetdebug $DEBUGFAIL" \
+ -append "root=/dev/dracut/root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
-initrd initramfs.testing
grep -m 1 -q dracut-root-block-success check-success.img || return 1
echo "CLIENT TEST END: [OK]"
echo "CLIENT TEST START: Wrong LUKS UUID"
$testdir/run-qemu -hda root.ext2 -hdb check-success.img -m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "root=/dev/dracut/root rw quiet rd_retry=3 rdinfo console=ttyS0,115200n81 selinux=0 rdinitdebug rdnetdebug $DEBUGFAIL rd_LUKS_UUID=failme" \
+ -append "root=/dev/dracut/root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL rd.luks.uuid=failme" \
-initrd initramfs.testing
grep -m 1 -q dracut-root-block-success check-success.img && return 1
echo "CLIENT TEST END: [OK]"
cryptoUUIDS=$(grep --binary-files=text -m 3 ID_FS_UUID root.ext2)
for uuid in $cryptoUUIDS; do
eval $uuid
- printf ' rd_LUKS_UUID=luks-%s ' $ID_FS_UUID
+ printf ' rd.luks.uuid=luks-%s ' $ID_FS_UUID
done > luks.txt
#!/bin/sh
-getarg rdshell || poweroff -f
+getarg rd.shell || poweroff -f
getarg failme && poweroff -f
KVERSION=${KVERSION-$(uname -r)}
# Uncomment this to debug failures
-DEBUGFAIL="rdshell"
+DEBUGFAIL="rd.shell"
#DEBUGFAIL="$DEBUGFAIL udev.log-priority=debug"
client_run() {
echo "CLIENT TEST START: $@"
$testdir/run-qemu -hda root.ext2 -hdb disk1 -hdc disk2 -m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "$@ root=LABEL=root rw quiet rd_retry=5 rdinitdebug console=ttyS0,115200n81 selinux=0 rdinfo $DEBUGFAIL" \
+ -append "$@ root=LABEL=root rw quiet rd.retry=5 rd.debug console=ttyS0,115200n81 selinux=0 rd.info $DEBUGFAIL" \
-initrd initramfs.testing
if ! grep -m 1 -q dracut-root-block-success root.ext2; then
echo "CLIENT TEST END: $@ [FAIL]"
}
test_run() {
- client_run rd_NO_MDIMSM || return 1
+ client_run rd.md.imsm || return 1
client_run || return 1
- client_run rd_NO_DM || return 1
+ client_run rd.dm=0 || return 1
# This test succeeds, because the mirror parts are found without
# assembling the mirror itsself, which is what we want
- client_run rd_NO_MD rd_NO_MDIMSM failme && return 1
- client_run rd_NO_MD failme && return 1
+ client_run rd.md=0 rd.md.imsm failme && return 1
+ client_run rd.md=0 failme && return 1
# the following test hangs on newer md
- #client_run rd_NO_DM rd_NO_MDIMSM rd_NO_MDADMCONF || return 1
+ #client_run rd.dm=0 rd.md.imsm rd.md.conf=0 || return 1
return 0
}
#!/bin/sh
-getarg rdshell || poweroff -f
+getarg rd.shell || poweroff -f
getarg failme && poweroff -f
KVERSION=${KVERSION-$(uname -r)}
# Uncomment this to debug failures
-#DEBUGFAIL="rdshell"
+#DEBUGFAIL="rd.shell"
run_server() {
# Start server first
-net nic,macaddr=$mac,model=e1000 \
-net socket,connect=127.0.0.1:12345 \
-kernel /boot/vmlinuz-$KVERSION \
- -append "$cmdline $DEBUGFAIL rdinitdebug rd_retry=10 rdinfo quiet rdnetdebug ro console=ttyS0,115200n81 selinux=0" \
+ -append "$cmdline $DEBUGFAIL rd.debug rd.retry=10 rd.info quiet ro console=ttyS0,115200n81 selinux=0" \
-initrd initramfs.testing
if [[ $? -ne 0 ]] || ! grep -m 1 -q nfs-OK client.img; then
#!/bin/sh
-getarg rdshell || poweroff -f
+getarg rd.shell || poweroff -f
getarg failme && poweroff -f
KVERSION=${KVERSION-$(uname -r)}
-#DEBUGFAIL="rdshell"
+#DEBUGFAIL="rd.shell"
run_server() {
# Start server first
-net nic,macaddr=52:54:00:12:34:00,model=e1000 \
-net socket,connect=127.0.0.1:12345 \
-kernel /boot/vmlinuz-$KVERSION \
- -append "root=LABEL=sysroot ip=192.168.50.101::192.168.50.1:255.255.255.0:iscsi-1:eth0:off netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target1 netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target2 rw quiet rd_retry=5 rdinitdebug rdinfo rdnetdebug console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
+ -append "root=LABEL=sysroot ip=192.168.50.101::192.168.50.1:255.255.255.0:iscsi-1:eth0:off netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target1 netroot=iscsi:192.168.50.1::::iqn.2009-06.dracut:target2 rw quiet rd.retry=5 rd.debug rd.info console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
-initrd initramfs.testing
grep -m 1 -q iscsi-OK client.img || return 1
-net nic,macaddr=52:54:00:12:34:00,model=e1000 \
-net socket,connect=127.0.0.1:12345 \
-kernel /boot/vmlinuz-$KVERSION \
- -append "root=dhcp rw quiet rd_retry=5 rdinitdebug rdinfo rdnetdebug console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
+ -append "root=dhcp rw quiet rd.retry=5 rd.debug rd.info console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
-initrd initramfs.testing
grep -m 1 -q iscsi-OK client.img || return 1
#!/bin/sh
-getarg rdshell || poweroff -f
+getarg rd.shell || poweroff -f
getarg failme && poweroff -f
KVERSION=${KVERSION-$(uname -r)}
# Uncomment this to debug failures
-#DEBUGFAIL="rdshell"
+#DEBUGFAIL="rd.shell"
run_server() {
# Start server first
-net nic,macaddr=$mac,model=e1000 \
-net socket,connect=127.0.0.1:12345 \
-kernel /boot/vmlinuz-$KVERSION \
- -append "$cmdline $DEBUGFAIL rdinitdebug rdinfo rdnetdebug ro quiet console=ttyS0,115200n81 selinux=0" \
+ -append "$cmdline $DEBUGFAIL rd.debug rd.info ro quiet console=ttyS0,115200n81 selinux=0" \
-initrd initramfs.testing
if [[ $? -ne 0 ]] || ! grep -m 1 -q nbd-OK flag.img; then
#!/bin/sh
-getarg rdshell || poweroff -f
+getarg rd.shell || poweroff -f
getarg failme && poweroff -f
KVERSION=${KVERSION-$(uname -r)}
# Uncomment this to debug failures
-#DEBUGFAIL="rdshell"
+#DEBUGFAIL="rd.shell"
run_server() {
# Start server first
-net socket,listen=127.0.0.1:12345 \
-serial udp:127.0.0.1:9999 \
-kernel /boot/vmlinuz-$KVERSION \
- -append "selinux=0 root=/dev/sda rdinitdebug rdinfo rdnetdebug rw quiet console=ttyS0,115200n81" \
+ -append "selinux=0 root=/dev/sda rd.debug rd.info rw quiet console=ttyS0,115200n81" \
-initrd initramfs.server -pidfile server.pid -daemonize || return 1
sudo chmod 644 server.pid || return 1
-drive if=ide,index=2,media=disk \
-drive if=ide,index=3,media=disk \
-kernel /boot/vmlinuz-$KVERSION \
- -append "$cmdline $DEBUGFAIL rd_retry=5 rdinitdebug rdinfo rdnetdebug ro quiet console=ttyS0,115200n81 selinux=0 rdcopystate" \
+ -append "$cmdline $DEBUGFAIL rd.retry=5 rd.debug rd.info ro quiet console=ttyS0,115200n81 selinux=0 rd.copystate" \
-initrd initramfs.testing
if [[ $? -ne 0 ]] || ! grep -m 1 -q OK client.img; then