# Uncomment these to debug failures
#DEBUGFAIL="rd.shell rd.debug rd.live.debug loglevel=7"
-#DEBUGTOOLS="setsid ls cat sfdisk"
test_run() {
dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
declare -a disk_args=()
- # shellcheck disable=SC2034
declare -i disk_index=0
qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root
}
test_setup() {
- mkdir -p -- "$TESTDIR"/overlay/source
# Create what will eventually be our root filesystem onto an overlay
- (
- # shellcheck disable=SC2030
- # shellcheck disable=SC2031
- export initdir="$TESTDIR"/overlay/source
- # shellcheck disable=SC1090
- . "$basedir"/dracut-init.sh
- (
- cd "$initdir" || exit
- mkdir -p -- dev sys proc etc var/run tmp
- mkdir -p root usr/bin usr/lib usr/lib64 usr/sbin
- )
- inst_simple /etc/os-release
- [[ -f /etc/machine-id ]] && read -r MACHINE_ID < /etc/machine-id
-
- inst ./test-init.sh /sbin/init
- inst_simple "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh"
- inst_simple "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh"
- inst_binary "${basedir}/dracut-util" "/usr/bin/dracut-util"
- ln -s dracut-util "${initdir}/usr/bin/dracut-getarg"
- ln -s dracut-util "${initdir}/usr/bin/dracut-getargs"
-
- inst_multiple mkdir ln dd stty mount poweroff grep "$DEBUGTOOLS"
-
- cp -a -- /etc/ld.so.conf* "$initdir"/etc
- ldconfig -r "$initdir"
- )
+ "$basedir"/dracut.sh -l --keep --tmpdir "$TESTDIR" \
+ -m "test-root" \
+ -i ./test-init.sh /sbin/init \
+ -i "${basedir}/modules.d/99base/dracut-lib.sh" "/lib/dracut-lib.sh" \
+ -i "${basedir}/modules.d/99base/dracut-dev-lib.sh" "/lib/dracut-dev-lib.sh" \
+ --no-hostonly --no-hostonly-cmdline --nomdadmconf --nohardlink \
+ -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
# second, install the files needed to make the root filesystem
- (
- # shellcheck disable=SC2030
- # shellcheck disable=SC2031
- export initdir=$TESTDIR/overlay
- # shellcheck disable=SC1090
- . "$basedir"/dracut-init.sh
- inst_multiple sfdisk poweroff cp umount sync dd mkfs.ext4 mksquashfs
- inst_hook initqueue 01 ./create-root.sh
- inst_hook initqueue/finished 01 ./finished-false.sh
- )
-
# create an initramfs that will create the target root filesystem.
# We do it this way so that we do not risk trashing the host mdraid
# devices, volume groups, encrypted partitions, etc.
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
- --modules "rootfs-block qemu" \
+ --modules "test-makeroot rootfs-block qemu" \
--drivers "ext4 sd_mod" \
+ --install "sfdisk mkfs.ext4 mksquashfs" \
+ --include ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
--no-hostonly --no-hostonly-cmdline --no-early-microcode --nofscks --nomdadmconf --nohardlink --nostrip \
--force "$TESTDIR"/initramfs.makeroot "$KVERSION" || return 1
rm -rf -- "$TESTDIR"/overlay
dd if=/dev/zero of="$TESTDIR"/marker.img bs=1MiB count=1
dd if=/dev/zero of="$TESTDIR"/root.img bs=1MiB count=160
declare -a disk_args=()
- # shellcheck disable=SC2034
declare -i disk_index=0
qemu_add_drive_args disk_index disk_args "$TESTDIR"/marker.img marker
qemu_add_drive_args disk_index disk_args "$TESTDIR"/root.img root
return 1
fi
- (
- # shellcheck disable=SC2030
- # shellcheck disable=SC2031
- export initdir="$TESTDIR"/overlay
- # shellcheck disable=SC1090
- . "$basedir"/dracut-init.sh
- inst_multiple poweroff shutdown mkfs.ext4
- inst_hook shutdown-emergency 000 ./hard-off.sh
- inst_hook emergency 000 ./hard-off.sh
- )
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
- --modules "dash dmsquash-live qemu" \
+ --modules "test dash dmsquash-live qemu" \
--omit "rngd" \
--drivers "ext4 sd_mod" \
+ --install "mkfs.ext4" \
--no-hostonly --no-hostonly-cmdline \
--force "$TESTDIR"/initramfs.testing "$KVERSION" || return 1
- ls -sh "$TESTDIR"/initramfs.testing
-
"$basedir"/dracut.sh -l -i "$TESTDIR"/overlay / \
- --modules "dmsquash-live-autooverlay qemu" \
+ --modules "test dmsquash-live-autooverlay qemu" \
--omit "rngd" \
--drivers "ext4 sd_mod" \
+ --install "mkfs.ext4" \
--no-hostonly --no-hostonly-cmdline \
--force "$TESTDIR"/initramfs.testing-autooverlay "$KVERSION" || return 1
- ls -sh "$TESTDIR"/initramfs.testing-autooverlay
-
rm -rf -- "$TESTDIR"/overlay
}