]> git.ipfire.org Git - thirdparty/dracut.git/blobdiff - test/TEST-04-FULL-SYSTEMD/test.sh
TEST-04-FULL-SYSTEMD: report failure on rootfs creation
[thirdparty/dracut.git] / test / TEST-04-FULL-SYSTEMD / test.sh
index 1fcbeeb854f2128d8708664377088b78598ab9eb..4ef6e672625c6c2fe70e628fe6fbafe25403cb65 100755 (executable)
@@ -17,22 +17,22 @@ client_run() {
 
     dd if=/dev/zero of=$TESTDIR/result bs=1M count=1
     $testdir/run-qemu \
-       -drive format=raw,index=0,media=disk,file=$TESTDIR/root.btrfs \
-       -drive format=raw,index=1,media=disk,file=$TESTDIR/usr.btrfs \
-       -drive format=raw,index=2,media=disk,file=$TESTDIR/result \
-       -m 512M  -smp 2 -nographic \
-       -net none \
+        -drive format=raw,index=0,media=disk,file=$TESTDIR/root.btrfs \
+        -drive format=raw,index=1,media=disk,file=$TESTDIR/usr.btrfs \
+        -drive format=raw,index=2,media=disk,file=$TESTDIR/result \
+        -m 512M  -smp 2 -nographic \
+        -net none \
         -no-reboot \
-       -append "panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts rd.retry=3 console=ttyS0,115200n81 selinux=0 $DEBUGOUT rd.shell=0 $DEBUGFAIL" \
-       -initrd $TESTDIR/initramfs.testing
+        -append "panic=1 systemd.crash_reboot root=LABEL=dracut $client_opts rd.retry=3 console=ttyS0,115200n81 selinux=0 $DEBUGOUT rd.shell=0 $DEBUGFAIL" \
+        -initrd $TESTDIR/initramfs.testing
 
     if (($? != 0)); then
-       echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
+        echo "CLIENT TEST END: $test_name [FAILED - BAD EXIT]"
         return 1
     fi
 
     if ! grep -F -m 1 -q dracut-root-block-success $TESTDIR/result; then
-       echo "CLIENT TEST END: $test_name [FAILED]"
+        echo "CLIENT TEST END: $test_name [FAILED]"
         return 1
     fi
     echo "CLIENT TEST END: $test_name [OK]"
@@ -56,9 +56,9 @@ test_setup() {
     export kernel=$KVERSION
     # Create what will eventually be our root filesystem onto an overlay
     (
-       export initdir=$TESTDIR/overlay/source
-       mkdir -p $initdir
-       . $basedir/dracut-init.sh
+        export initdir=$TESTDIR/overlay/source
+        mkdir -p $initdir
+        . $basedir/dracut-init.sh
 
         for d in usr/bin usr/sbin bin etc lib "$libdir" sbin tmp usr var var/log dev proc sys sysroot root run; do
             if [ -L "/$d" ]; then
@@ -71,49 +71,47 @@ test_setup() {
         ln -sfn /run "$initdir/var/run"
         ln -sfn /run/lock "$initdir/var/lock"
 
-       inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
-           mount dmesg dhclient mkdir cp ping dhclient \
-           umount strace less setsid tree systemctl reset
+        inst_multiple sh df free ls shutdown poweroff stty cat ps ln ip \
+                      mount dmesg mkdir cp ping \
+                      umount strace less setsid tree systemctl reset
 
-       for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
+        for _terminfodir in /lib/terminfo /etc/terminfo /usr/share/terminfo; do
             [ -f ${_terminfodir}/l/linux ] && break
-       done
-       inst_multiple -o ${_terminfodir}/l/linux
-       inst "$basedir/modules.d/35network-legacy/dhclient-script.sh" "/sbin/dhclient-script"
-       inst "$basedir/modules.d/35network-legacy/ifup.sh" "/sbin/ifup"
-       inst_multiple grep
+        done
+        inst_multiple -o ${_terminfodir}/l/linux
+        inst_multiple grep
         inst_simple ./fstab /etc/fstab
         rpm -ql systemd | xargs -r $DRACUT_INSTALL ${initdir:+-D "$initdir"} -o -a -l
         inst /lib/systemd/system/systemd-remount-fs.service
         inst /lib/systemd/systemd-remount-fs
         inst /lib/systemd/system/systemd-journal-flush.service
         inst /etc/sysconfig/init
-       inst /lib/systemd/system/slices.target
-       inst /lib/systemd/system/system.slice
-       inst_multiple -o /lib/systemd/system/dracut*
+        inst /lib/systemd/system/slices.target
+        inst /lib/systemd/system/system.slice
+        inst_multiple -o /lib/systemd/system/dracut*
 
         # make a journal directory
         mkdir -p $initdir/var/log/journal
 
         # install some basic config files
         inst_multiple -o  \
-           /etc/machine-id \
-           /etc/adjtime \
-            /etc/sysconfig/init \
-            /etc/passwd \
-            /etc/shadow \
-            /etc/group \
-            /etc/shells \
-            /etc/nsswitch.conf \
-            /etc/pam.conf \
-            /etc/securetty \
-            /etc/os-release \
-            /etc/localtime
+                      /etc/machine-id \
+                      /etc/adjtime \
+                      /etc/passwd \
+                      /etc/shadow \
+                      /etc/group \
+                      /etc/shells \
+                      /etc/nsswitch.conf \
+                      /etc/pam.conf \
+                      /etc/securetty \
+                      /etc/os-release \
+                      /etc/localtime
 
         # we want an empty environment
         > $initdir/etc/environment
 
         # setup the testsuite target
+        mkdir -p $initdir/etc/systemd/system
         cat >$initdir/etc/systemd/system/testsuite.target <<EOF
 [Unit]
 Description=Testsuite target
@@ -143,15 +141,15 @@ EOF
         # make the testsuite the default target
         ln -fs testsuite.target $initdir/etc/systemd/system/default.target
 
-#         mkdir -p $initdir/etc/rc.d
-#         cat >$initdir/etc/rc.d/rc.local <<EOF
-# #!/bin/bash
-# exit 0
-# EOF
+        #         mkdir -p $initdir/etc/rc.d
+        #         cat >$initdir/etc/rc.d/rc.local <<EOF
+        # #!/bin/bash
+        # exit 0
+        # EOF
 
         # install basic tools needed
         inst_multiple sh bash setsid loadkeys setfont \
-            login sushell sulogin gzip sleep echo mount umount
+                      login sushell sulogin gzip sleep echo mount umount
         inst_multiple modprobe
 
         # install libnss_files for login
@@ -171,6 +169,8 @@ EOF
         # install dbus socket and service file
         inst /usr/lib/systemd/system/dbus.socket
         inst /usr/lib/systemd/system/dbus.service
+        inst /usr/lib/systemd/system/dbus-broker.service
+        inst /usr/lib/systemd/system/dbus-daemon.service
 
         (
             echo "FONT=eurlatgr"
@@ -180,11 +180,11 @@ EOF
         # install basic keyboard maps and fonts
         for i in \
             /usr/lib/kbd/consolefonts/eurlatgr* \
-            /usr/lib/kbd/keymaps/{legacy/,/}include/* \
-            /usr/lib/kbd/keymaps/{legacy/,/}i386/include/* \
-            /usr/lib/kbd/keymaps/{legacy/,/}i386/qwerty/us.*; do
-                [[ -f $i ]] || continue
-                inst $i
+                /usr/lib/kbd/keymaps/{legacy/,/}include/* \
+                /usr/lib/kbd/keymaps/{legacy/,/}i386/include/* \
+                /usr/lib/kbd/keymaps/{legacy/,/}i386/qwerty/us.*; do
+            [[ -f $i ]] || continue
+            inst $i
         done
 
         # some basic terminfo files
@@ -217,65 +217,69 @@ EOF
         inst /lib/modules/$kernel/modules.builtin
         # generate module dependencies
         if [[ -d $initdir/lib/modules/$kernel ]] && \
-            ! depmod -a -b "$initdir" $kernel; then
-                dfatal "\"depmod -a $kernel\" failed."
-                exit 1
+               ! depmod -a -b "$initdir" $kernel; then
+            dfatal "\"depmod -a $kernel\" failed."
+            exit 1
         fi
-
+        # disable some services
+        systemctl --root "$initdir" mask systemd-update-utmp
+        systemctl --root "$initdir" mask systemd-tmpfiles-setup
     )
 
     # second, install the files needed to make the root filesystem
     (
-       export initdir=$TESTDIR/overlay
-       . $basedir/dracut-init.sh
-       inst_multiple sfdisk mkfs.btrfs btrfs poweroff cp umount sync
-       inst_hook initqueue 01 ./create-root.sh
+        export initdir=$TESTDIR/overlay
+        . $basedir/dracut-init.sh
+        inst_multiple sfdisk mkfs.btrfs btrfs poweroff cp umount sync
+        inst_hook initqueue 01 ./create-root.sh
         inst_hook initqueue/finished 01 ./finished-false.sh
-       inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+        inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
     )
 
     # 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 / \
-       -m "dash udev-rules btrfs base rootfs-block fs-lib kernel-modules qemu" \
-       -d "piix ide-gd_mod ata_piix btrfs sd_mod" \
-        --nomdadmconf \
-        --nohardlink \
-        --no-hostonly-cmdline -N \
-       -f $TESTDIR/initramfs.makeroot $KVERSION || return 1
+                       -m "bash udev-rules btrfs base rootfs-block fs-lib kernel-modules qemu" \
+                       -d "piix ide-gd_mod ata_piix btrfs sd_mod" \
+                       --nomdadmconf \
+                       --nohardlink \
+                       --no-hostonly-cmdline -N \
+                       -f $TESTDIR/initramfs.makeroot $KVERSION || return 1
 
     # Invoke KVM and/or QEMU to actually create the target filesystem.
     rm -rf -- $TESTDIR/overlay
 
     $testdir/run-qemu \
-       -drive format=raw,index=0,media=disk,file=$TESTDIR/root.btrfs \
-       -drive format=raw,index=1,media=disk,file=$TESTDIR/usr.btrfs \
-       -m 512M  -smp 2 -nographic -net none \
-       -append "root=/dev/fakeroot rw rootfstype=btrfs quiet console=ttyS0,115200n81 selinux=0" \
-       -initrd $TESTDIR/initramfs.makeroot  || return 1
-    grep -F -m 1 -q dracut-root-block-created $TESTDIR/root.btrfs || return 1
-
+        -drive format=raw,index=0,media=disk,file=$TESTDIR/root.btrfs \
+        -drive format=raw,index=1,media=disk,file=$TESTDIR/usr.btrfs \
+        -m 512M  -smp 2 -nographic -net none \
+        -append "root=/dev/fakeroot rw rootfstype=btrfs quiet console=ttyS0,115200n81 selinux=0" \
+        -initrd $TESTDIR/initramfs.makeroot  || return 1
+    if ! grep -F -m 1 -q dracut-root-block-created $TESTDIR/root.btrfs; then
+        echo "Could not create root filesystem"
+        return 1
+    fi
 
     (
-       export initdir=$TESTDIR/overlay
-       . $basedir/dracut-init.sh
-       inst_multiple poweroff shutdown
-       inst_hook shutdown-emergency 000 ./hard-off.sh
+        export initdir=$TESTDIR/overlay
+        . $basedir/dracut-init.sh
+        inst_multiple poweroff shutdown
+        inst_hook shutdown-emergency 000 ./hard-off.sh
         inst_hook emergency 000 ./hard-off.sh
-       inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
+        inst_simple ./99-idesymlinks.rules /etc/udev/rules.d/99-idesymlinks.rules
     )
 
     [ -e /etc/machine-id ] && EXTRA_MACHINE="/etc/machine-id"
     [ -e /etc/machine-info ] && EXTRA_MACHINE+=" /etc/machine-info"
 
     sudo $basedir/dracut.sh -l -i $TESTDIR/overlay / \
-       -a "debug systemd i18n qemu" \
-       ${EXTRA_MACHINE:+-I "$EXTRA_MACHINE"} \
-        -o "dash network plymouth lvm mdraid resume crypt caps dm terminfo usrmount kernel-network-modules rngd" \
-       -d "piix ide-gd_mod ata_piix btrfs sd_mod i6300esb ib700wdt" \
-        --no-hostonly-cmdline -N \
-       -f $TESTDIR/initramfs.testing $KVERSION || return 1
+         -a "debug systemd i18n qemu" \
+         ${EXTRA_MACHINE:+-I "$EXTRA_MACHINE"} \
+         -o "dash network plymouth lvm mdraid resume crypt caps dm terminfo usrmount kernel-network-modules rngd" \
+         -d "piix ide-gd_mod ata_piix btrfs sd_mod i6300esb ib700wdt" \
+         --no-hostonly-cmdline -N \
+         -f $TESTDIR/initramfs.testing $KVERSION || return 1
 
     rm -rf -- $TESTDIR/overlay
 }