force mounting _/_ and _/usr_ (if it is a separate device) read-write.
See also ro option.
+**rd.auto=1**::
+ enable autoassembly of special devices like cryptoLUKS, dmraid, mdraid or lvm.
+ Default is off as of dracut version >= 024.
+
**rd.fstab=0**::
do not honor special mount options for the root filesystem found in
_/etc/fstab_ of the real root.
printf -- 'warn "crypto LUKS UUID "%s" not found"\n' $luksid
} >> $hookdir/emergency/90-crypt.sh
done
- else
+ elif getargbool 0 rd.auto; then
if [ -z "$DRACUT_SYSTEMD" ]; then
{
printf -- 'ENV{ID_FS_TYPE}=="crypto_LUKS", RUN+="%s ' $(command -v initqueue)
DM_RAIDS=$(getargs rd.dm.uuid -d rd_DM_UUID=)
-DM_CLEANUP="no"
+if [ -n "$DM_RAIDS" ] || getargbool 0 rd.auto; then
-# run dmraid if udev has settled
-info "Scanning for dmraid devices $DM_RAIDS"
-SETS=$(dmraid -c -s)
+ DM_CLEANUP="no"
-if [ "$SETS" = "no raid disks" -o "$SETS" = "no raid sets" ]; then
- return
-fi
+ # run dmraid if udev has settled
+ info "Scanning for dmraid devices $DM_RAIDS"
+ SETS=$(dmraid -c -s)
+
+ if [ "$SETS" = "no raid disks" -o "$SETS" = "no raid sets" ]; then
+ return
+ fi
-info "Found dmraid sets:"
-echo $SETS|vinfo
+ info "Found dmraid sets:"
+ echo $SETS|vinfo
-if [ -n "$DM_RAIDS" ]; then
+ if [ -n "$DM_RAIDS" ]; then
# only activate specified DM RAIDS
- for r in $DM_RAIDS; do
- for s in $SETS; do
- if [ "${s##$r}" != "$s" ]; then
- info "Activating $s"
- dmraid -ay -i -p --rm_partitions "$s" 2>&1 | vinfo
- [ -e "/dev/mapper/$s" ] && kpartx -a -p p "/dev/mapper/$s" 2>&1 | vinfo
- udevsettle
- fi
+ for r in $DM_RAIDS; do
+ for s in $SETS; do
+ if [ "${s##$r}" != "$s" ]; then
+ info "Activating $s"
+ dmraid -ay -i -p --rm_partitions "$s" 2>&1 | vinfo
+ [ -e "/dev/mapper/$s" ] && kpartx -a -p p "/dev/mapper/$s" 2>&1 | vinfo
+ udevsettle
+ fi
+ done
done
- done
-else
+ else
# scan and activate all DM RAIDS
- for s in $SETS; do
- info "Activating $s"
- dmraid -ay -i -p --rm_partitions "$s" 2>&1 | vinfo
- [ -e "/dev/mapper/$s" ] && kpartx -a -p p "/dev/mapper/$s" 2>&1 | vinfo
- done
-fi
+ for s in $SETS; do
+ info "Activating $s"
+ dmraid -ay -i -p --rm_partitions "$s" 2>&1 | vinfo
+ [ -e "/dev/mapper/$s" ] && kpartx -a -p p "/dev/mapper/$s" 2>&1 | vinfo
+ done
+ fi
-need_shutdown
+ need_shutdown
+
+fi
info "rd.md.ddf=0: no MD RAID for SNIA ddf raids"
udevproperty rd_NO_MDDDF=1
fi
+
+DM_RAIDS=$(getargs rd.dm.uuid -d rd_DM_UUID=)
+
+if [ -z "$DM_RAIDS" ] && ! getargbool 0 rd.auto; then
+ udevproperty rd_NO_DM=1
+fi
rm -f /etc/lvm/lvm.conf
fi
-if ! getargbool 1 rd.lvm -d -n rd_NO_LVM; then
+LV_DEVS="$(getargs rd.lvm.vg -d rd_LVM_VG=) $(getargs rd.lvm.lv -d rd_LVM_LV=)"
+
+if ! getargbool 1 rd.lvm -d -n rd_NO_LVM \
+ || ( [ -z "$LV_DEVS" ] && ! getargbool 0 rd.auto ); 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 -d rd_LVM_VG=) $(getargs rd.lvm.lv -d rd_LVM_LV=); do
+ for dev in $LV_DEVS; do
wait_for_dev "/dev/$dev"
done
fi
MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=)
-if ! [ -n "$MD_UUID" ] && ! getargbool 1 rd.md -d -n rd_NO_MD; then
+if ( ! [ -n "$MD_UUID" ] && ! getargbool 0 rd.auto ) || ! getargbool 1 rd.md -d -n rd_NO_MD; then
info "rd.md=0: removing MD RAID activation"
udevproperty rd_NO_MD=1
else
-hda $DISKIMAGE \
-m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "root=/dev/dracut/root rd.auto=1 rw rd.retry=10 console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
+ -append "root=/dev/dracut/root rd.auto rw rd.retry=10 console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
-initrd $TESTDIR/initramfs.testing
grep -m 1 -q dracut-root-block-success $DISKIMAGE || return 1
}
-hda $TESTDIR/root.ext2 \
-m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "root=/dev/dracut/root rw quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
+ -append "root=/dev/dracut/root rw rd.auto=1 quiet rd.retry=3 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
-initrd $TESTDIR/initramfs.testing
grep -m 1 -q dracut-root-block-success $TESTDIR/root.ext2 || return 1
}
test_run() {
eval $(grep --binary-files=text -m 1 MD_UUID $TESTDIR/root.ext2)
echo "MD_UUID=$MD_UUID"
+ read LUKS_UUID < $TESTDIR/luksuuid
- client_run || return 1
+ client_run failme && return 1
+ client_run rd.auto || return 1
- client_run rd.md.uuid=$MD_UUID rd.md.conf=0 || return 1
+ client_run rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.md.conf=0 rd.lvm.vg=dracut || return 1
- client_run rd.md.uuid=failme rd.md.conf=0 failme && return 1
+ client_run rd.luks.uuid=$LUKS_UUID rd.md.uuid=failme rd.md.conf=0 rd.lvm.vg=dracut 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=dracut || return 1
- client_run rd.lvm.lv=dracut/failme failme && return 1
- client_run rd.lvm.lv=dracut/root || return 1
+ client_run rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.lvm=0 failme && return 1
+ client_run rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.lvm=0 rd.auto=1 failme && return 1
+ client_run rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.lvm.vg=failme failme && return 1
+ client_run rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.lvm.vg=dracut || return 1
+ client_run rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.lvm.lv=dracut/failme failme && return 1
+ client_run rd.luks.uuid=$LUKS_UUID rd.md.uuid=$MD_UUID rd.lvm.lv=dracut/root || return 1
return 0
}
grep -m 1 -q dracut-root-block-created $TESTDIR/root.ext2 || return 1
eval $(grep --binary-files=text -m 1 MD_UUID $TESTDIR/root.ext2)
eval $(grep -a -m 1 ID_FS_UUID $TESTDIR/root.ext2)
+ echo $ID_FS_UUID > $TESTDIR/luksuuid
(
export initdir=$TESTDIR/overlay
-hdb $TESTDIR/check-success.img \
-m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "root=/dev/dracut/root rw quiet rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $LUKSARGS $DEBUGFAIL" \
+ -append "root=/dev/dracut/root rw quiet rd.auto rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $LUKSARGS $DEBUGFAIL" \
-initrd $TESTDIR/initramfs.testing
grep -m 1 -q dracut-root-block-success $TESTDIR/check-success.img || return 1
echo "CLIENT TEST END: [OK]"
-hdb $TESTDIR/check-success.img \
-m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "root=/dev/dracut/root rw quiet rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
+ -append "root=/dev/dracut/root rw quiet rd.auto rd.retry=20 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL" \
-initrd $TESTDIR/initramfs.testing
grep -m 1 -q dracut-root-block-success $TESTDIR/check-success.img || return 1
echo "CLIENT TEST END: [OK]"
-hdb $TESTDIR/check-success.img \
-m 256M -nographic \
-net none -kernel /boot/vmlinuz-$KVERSION \
- -append "root=/dev/dracut/root rw quiet rd.retry=10 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL rd.luks.uuid=failme" \
+ -append "root=/dev/dracut/root rw quiet rd.auto rd.retry=10 rd.info console=ttyS0,115200n81 selinux=0 rd.debug $DEBUGFAIL rd.luks.uuid=failme" \
-initrd $TESTDIR/initramfs.testing
grep -m 1 -q dracut-root-block-success $TESTDIR/check-success.img && return 1
echo "CLIENT TEST END: [OK]"
-net nic,macaddr=52:54:00:12:34:00,model=e1000 \
-net socket,connect=127.0.0.1:12330 \
-kernel /boot/vmlinuz-$KVERSION \
- -append "$* rw quiet rd.retry=5 rd.debug rd.info console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
+ -append "$* rw quiet rd.auto rd.retry=5 rd.debug rd.info console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" \
-initrd $TESTDIR/initramfs.testing
if ! grep -m 1 -q iscsi-OK $TESTDIR/client.img; then
echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
-net nic,macaddr=$mac,model=e1000 \
-net socket,connect=127.0.0.1:12340 \
-kernel /boot/vmlinuz-$KVERSION \
- -append "$cmdline $DEBUGFAIL rd.debug rd.info rd.retry=10 ro quiet console=ttyS0,115200n81 selinux=0" \
+ -append "$cmdline $DEBUGFAIL rd.debug rd.auto rd.info rd.retry=10 ro quiet console=ttyS0,115200n81 selinux=0" \
-initrd $TESTDIR/initramfs.testing
if [[ $? -ne 0 ]] || ! grep -m 1 -q nbd-OK $TESTDIR/flag.img; then
# ...:02 receives a dhcp root-path
# PXE Style BOOTIF=
-# client_test "MULTINIC root=nfs BOOTIF=" \
-# 00 01 02 \
-# "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00" \
-# "eth0" || return 1
+ client_test "MULTINIC root=nfs BOOTIF=" \
+ 00 01 02 \
+ "root=nfs:192.168.50.1:/nfs/client BOOTIF=52-54-00-12-34-00" \
+ "eth0" || return 1
# PXE Style BOOTIF= with dhcp root-path
client_test "MULTINIC root=dhcp BOOTIF=" \