add "rd.auto" parameter and switch off automatic assembly
No automatic assembly is done anymore by default. You will have to
specify exactly what devices to assemble
("rd.md.uuid=" "rd.luks.uuid" ...)
or use "rd.auto=1" or "rd.auto" on the kernel command line.
For big servers with thousands of disks we don't want to assemble
everything by default (error prone, slow).
master
parent
103281f3b6
commit
e064127729
|
|
@ -69,6 +69,10 @@ rootfstype=ext3
|
|||
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.
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ else
|
|||
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)
|
||||
|
|
|
|||
|
|
@ -6,38 +6,42 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
|
|||
|
||||
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)
|
||||
|
||||
info "Found dmraid sets:"
|
||||
echo $SETS|vinfo
|
||||
if [ "$SETS" = "no raid disks" -o "$SETS" = "no raid sets" ]; then
|
||||
return
|
||||
fi
|
||||
|
||||
if [ -n "$DM_RAIDS" ]; then
|
||||
info "Found dmraid sets:"
|
||||
echo $SETS|vinfo
|
||||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -16,3 +16,9 @@ if ! command -v mdadm >/dev/null || ! getargbool 1 rd.md.ddf -n rd_NO_MDDDF -n
|
|||
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
|
||||
|
|
|
|||
|
|
@ -5,11 +5,14 @@ if [ -e /etc/lvm/lvm.conf ] && ! getargbool 1 rd.lvm.conf -d -n rd_NO_LVMCONF; t
|
|||
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
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
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
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ test_run() {
|
|||
-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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ test_run() {
|
|||
-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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,18 +32,21 @@ client_run() {
|
|||
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
|
||||
}
|
||||
|
||||
|
|
@ -107,6 +110,7 @@ test_setup() {
|
|||
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
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ test_run() {
|
|||
-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]"
|
||||
|
|
@ -30,7 +30,7 @@ test_run() {
|
|||
-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]"
|
||||
|
|
@ -43,7 +43,7 @@ test_run() {
|
|||
-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]"
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ run_client() {
|
|||
-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]"
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ client_test() {
|
|||
-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
|
||||
|
|
|
|||
|
|
@ -91,10 +91,10 @@ test_client() {
|
|||
# ...: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=" \
|
||||
|
|
|
|||
Loading…
Reference in New Issue