# create root filesystem
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
dd if=/dev/zero of="$TESTDIR"/root.img bs=200MiB count=1 status=none && sync "$TESTDIR"/root.img
mkfs.ext4 -q -L dracut -d "$TESTDIR"/dracut.*/initramfs/ "$TESTDIR"/root.img && sync "$TESTDIR"/root.img
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
-i ./fstab /etc/fstab \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
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
--add-confdir test-makeroot \
-I "mkfs.btrfs" \
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+ -f "$TESTDIR"/initramfs.makeroot
# Create the blank file to use as a root filesystem
declare -a disk_args=()
# Create what will eventually be our root filesystem
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- "$TESTDIR"/tmp-initramfs.root "$KVERSION"
+ "$TESTDIR"/tmp-initramfs.root
KVERSION=$(determine_kernel_version "$TESTDIR"/tmp-initramfs.root)
# create root filesystem
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
dd if=/dev/zero of="$TESTDIR"/root.img bs=200MiB count=1 status=none && sync "$TESTDIR"/root.img
mkfs.ext4 -q -L dracut -d "$TESTDIR"/dracut.*/initramfs/ "$TESTDIR"/root.img && sync "$TESTDIR"/root.img
# Create what will eventually be our root filesystem onto an overlay
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
# pass enviroment variables to make the root filesystem
$(if command -v cryptsetup > /dev/null; then echo "-a crypt -I cryptsetup"; fi) \
$(if [ "$TEST_FSTYPE" = "zfs" ]; then echo "-a zfs"; else echo "-I mkfs.${TEST_FSTYPE} --add-drivers ${TEST_FSTYPE}"; fi) \
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+ -f "$TESTDIR"/initramfs.makeroot
# LVM
test_makeroot "$TEST_FSTYPE" "disk" "rd.md=0 rd.luks=0"
# Create what will eventually be our root filesystem onto an overlay
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
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
-a "bash crypt lvm mdraid" \
-I "grep cryptsetup" \
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+ -f "$TESTDIR"/initramfs.makeroot
# Create the blank files to use as a root filesystem
declare -a disk_args=()
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
-i ./test-init.sh /sbin/init-persist \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
mkdir -p "$TESTDIR"/rootfs && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/rootfs && rm -rf "$TESTDIR"/dracut.*
# test to make sure /proc /sys and /dev is not needed inside the generated initrd
# Create what will eventually be our root filesystem onto an overlay
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
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
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
--nomdadmconf \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+ -f "$TESTDIR"/initramfs.makeroot
declare -a disk_args=()
# shellcheck disable=SC2034 # disk_index used in qemu_add_drive
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
-a "$dracut_modules" \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
KVERSION=$(determine_kernel_version "$TESTDIR"/initramfs.root)
# Create what will eventually be our root filesystem onto an overlay
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
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
-i ./create-root.sh /lib/dracut/hooks/initqueue/01-create-root.sh \
--nomdadmconf \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+ -f "$TESTDIR"/initramfs.makeroot
declare -a disk_args=()
# shellcheck disable=SC2034 # disk_index used in qemu_add_drive
--kernel-only \
-m "kernel-modules qemu" \
-d "ext4 sd_mod" \
- -f "$TESTDIR"/initramfs-test "$KVERSION"
+ -f "$TESTDIR"/initramfs-test
# vanilla kernel-independent systemd-based minimal initrd without dracut specific customizations
# since dracut-systemd is not included in the generated initrd, only systemd options are supported during boot
# shellcheck disable=SC2153
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
KVERSION=$(determine_kernel_version "$TESTDIR"/initramfs.root)
--add-confdir test-root \
-a "url-lib nfs" \
-I "ip grep setsid" \
- -f "$TESTDIR"/initramfs.root "$KVERSION" || return 1
+ -f "$TESTDIR"/initramfs.root || return 1
KVERSION=$(determine_kernel_version "$TESTDIR"/initramfs.root)
export kernel=$KVERSION
"$DRACUT" -N --keep --tmpdir "$TESTDIR" \
--add-confdir test-root \
-I "ip grep setsid" \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
mkdir -p -- "$TESTDIR"/overlay/source/var/lib/nfs/rpc_pipefs
-I "setsid blockdev" \
-i ./create-client-root.sh /lib/dracut/hooks/initqueue/01-create-client-root.sh \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+ -f "$TESTDIR"/initramfs.makeroot
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
-I "modprobe chmod ip setsid pidof tgtd tgtadm /etc/passwd" \
--install-optional "/etc/netconfig dhcpd /etc/group /etc/nsswitch.conf /etc/rpc /etc/protocols /etc/services /usr/etc/nsswitch.conf /usr/etc/rpc /usr/etc/protocols /usr/etc/services" \
-i "./dhcpd.conf" "/etc/dhcpd.conf" \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
mkdir -p "$TESTDIR"/overlay/source/var/lib/dhcpd
"$DRACUT" -N -i "$TESTDIR"/overlay / \
--add-confdir test-makeroot \
-i ./create-server-root.sh /lib/dracut/hooks/initqueue/01-create-server-root.sh \
- -f "$TESTDIR"/initramfs.makeroot "$KVERSION"
+ -f "$TESTDIR"/initramfs.makeroot
rm -rf -- "$TESTDIR"/overlay
declare -a disk_args=()
-i "./server.link" "/etc/systemd/network/01-server.link" \
-i ./wait-if-server.sh /lib/dracut/hooks/pre-mount/99-wait-if-server.sh \
--no-hostonly-cmdline -N \
- -f "$TESTDIR"/initramfs.server "$KVERSION"
+ -f "$TESTDIR"/initramfs.server
# Make client's dracut image
test_dracut \
--add-confdir test-root \
-I "ip grep setsid" \
--no-hostonly --no-hostonly-cmdline --nohardlink \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
mkdir -p -- "$TESTDIR"/overlay/source/var/lib/nfs/rpc_pipefs
cp ./client-init.sh "$TESTDIR"/overlay/source/sbin/init
--add-confdir test-root \
-I "ip grep" \
--no-hostonly --no-hostonly-cmdline --nohardlink \
- -f "$TESTDIR"/initramfs.root "$KVERSION"
+ -f "$TESTDIR"/initramfs.root
mkdir -p "$TESTDIR"/overlay/source && mv "$TESTDIR"/dracut.*/initramfs/* "$TESTDIR"/overlay/source && rm -rf "$TESTDIR"/dracut.*
cp ./client-init.sh "$TESTDIR"/overlay/source/sbin/init
QEMU_CPU="${QEMU_CPU:-max}"
set_vmlinux_env() {
- VMLINUZ=${VMLINUZ-"/lib/modules/${KVERSION}/vmlinuz"}
- if ! [ -f "$VMLINUZ" ]; then
- VMLINUZ="/lib/modules/${KVERSION}/vmlinux"
- fi
+ if [[ ${KVERSION-} ]]; then
+ VMLINUZ=${VMLINUZ-"/lib/modules/${KVERSION}/vmlinuz"}
+ if ! [ -f "$VMLINUZ" ]; then
+ VMLINUZ="/lib/modules/${KVERSION}/vmlinux"
+ fi
- if ! [ -f "$VMLINUZ" ]; then
- [[ -f /etc/machine-id ]] && read -r MACHINE_ID < /etc/machine-id
+ if ! [ -f "$VMLINUZ" ]; then
+ [[ -f /etc/machine-id ]] && read -r MACHINE_ID < /etc/machine-id
- if [[ ${MACHINE_ID-} ]] && { [[ -d /boot/${MACHINE_ID} ]] || [[ -L /boot/${MACHINE_ID} ]]; }; then
- VMLINUZ="/boot/${MACHINE_ID}/$KVERSION/linux"
- elif [ -f "/boot/vmlinuz-${KVERSION}" ]; then
- VMLINUZ="/boot/vmlinuz-${KVERSION}"
- elif [ -f "/boot/vmlinux-${KVERSION}" ]; then
- VMLINUZ="/boot/vmlinux-${KVERSION}"
- elif [ -f "/boot/kernel-${KVERSION}" ]; then
- VMLINUZ="/boot/kernel-${KVERSION}"
- elif [ -f "/boot/Image-${KVERSION}" ]; then
- VMLINUZ="/boot/Image-${KVERSION}"
+ if [[ ${MACHINE_ID-} ]] && { [[ -d /boot/${MACHINE_ID} ]] || [[ -L /boot/${MACHINE_ID} ]]; }; then
+ VMLINUZ="/boot/${MACHINE_ID}/$KVERSION/linux"
+ elif [ -f "/boot/vmlinuz-${KVERSION}" ]; then
+ VMLINUZ="/boot/vmlinuz-${KVERSION}"
+ elif [ -f "/boot/vmlinux-${KVERSION}" ]; then
+ VMLINUZ="/boot/vmlinux-${KVERSION}"
+ elif [ -f "/boot/kernel-${KVERSION}" ]; then
+ VMLINUZ="/boot/kernel-${KVERSION}"
+ elif [ -f "/boot/Image-${KVERSION}" ]; then
+ VMLINUZ="/boot/Image-${KVERSION}"
+ fi
fi
- fi
-
- if ! [ -f "$VMLINUZ" ]; then
+ else
VMLINUZ=$(find /boot/vmlinuz-* -type f 2> /dev/null | tail -1)
+ ! [ -f "$VMLINUZ" ] && VMLINUZ=$(find /lib/modules/ -type f -name vmlinuz 2> /dev/null | tail -1)
fi
if ! [ -f "$VMLINUZ" ]; then
- echo "Could not find a Linux kernel version $KVERSION to test with!" >&2
+ echo "Could not find a Linux kernel version to test with!" >&2
echo "Please install linux." >&2
exit 1
fi
fi
# pick up configuration from $TESTDIR/dracut.conf.d when running the tests
- TEST_DRACUT_ARGS+=" --confdir $TESTDIR/dracut.conf.d --add-confdir test --keep --tmpdir $TESTDIR/initrd --kver $KVERSION"
+ TEST_DRACUT_ARGS+=" --confdir $TESTDIR/dracut.conf.d --add-confdir test --keep --tmpdir $TESTDIR/initrd"
# include $TESTDIR"/overlay if exists
if [ -d "$TESTDIR"/overlay ]; then
done
}
-determine_kernel_version() {
- # inspired by kernel version detection in lsinitrd.sh
-
- # Some test containers do not include systemd-detect-virt, so let's just assume
- # we are running inside a container already
-
- # shellcheck disable=SC2012
- [[ ${KVERSION-} ]] || KVERSION="$(cd /lib/modules && ls -1v | tail -1)"
- # shellcheck disable=SC2012
- [[ ${KVERSION-} ]] || KVERSION="$(cd /usr/lib/modules && ls -1v | tail -1)"
- [[ ${KVERSION-} ]] || KVERSION="$(uname -r)"
-
- export KVERSION
-}
-
-set_test_envonment_variables() {
- determine_kernel_version
-}
-
command -v test_check &> /dev/null || test_check() {
:
}
case $1 in
--run)
echo "TEST RUN: $TEST_DESCRIPTION"
- set_test_envonment_variables
test_check && test_run
exit $?
;;
--setup)
echo "TEST SETUP: $TEST_DESCRIPTION"
- set_test_envonment_variables
test_check && test_setup
exit $?
;;
exit $?
;;
--all)
- set_test_envonment_variables
if ! test_check 2 &> test${TEST_RUN_ID:+-$TEST_RUN_ID}.log; then
if [[ ${V-} == "1" || ${V-} == "2" ]]; then
cat test${TEST_RUN_ID:+-$TEST_RUN_ID}.log