mirror of
https://github.com/systemd/systemd.git
synced 2025-03-24 14:50:17 +03:00
test: rework run_qemu
It tries to find a suitable QEMU binary and will use KVM if present. We can now configure QEMU from outside with 4 variables : - $QEMU_BIN : path to QEMU's binary - $KERNEL_APPEND : arguments appended to kernel cmdline - $KERNEL_BIN : path to a kernel Default /boot/vmlinuz-$KERNEL_VER - $INITRD : path to an initramfs Default /boot/initramfs-${KERNEL_VER}.img - $QEMU_SMP : number of CPU simulated by QEMU. Default 1 (from Alexander Graf's script: http://www.spinics.net/lists/kvm/msg72389.html)
This commit is contained in:
parent
1a6dc6534e
commit
c6a77179a4
1
TODO
1
TODO
@ -165,7 +165,6 @@ Features:
|
||||
* test/:
|
||||
- add 'set -e' to scripts in test/
|
||||
- make stuff in test/ work with separate output dir
|
||||
- qemu wrapper script: http://www.spinics.net/lists/kvm/msg72389.html
|
||||
|
||||
* systemctl delete x.snapshot leaves no trace in logs (at least at default level).
|
||||
|
||||
|
@ -25,11 +25,24 @@ $ make all
|
||||
$ cd test/TEST-01-BASIC
|
||||
$ sudo make clean setup run
|
||||
|
||||
If you want to log in the testsuite virtual machine, you can specify
|
||||
additional kernel command line parameter with $DEBUGFAIL.
|
||||
QEMU
|
||||
====
|
||||
|
||||
$ sudo make DEBUGFAIL="systemd.unit=multi-user.target" clean setup run
|
||||
If you want to log in the testsuite virtual machine, you can specify
|
||||
additional kernel command line parameter with $KERNEL_APPEND.
|
||||
|
||||
$ sudo make KERNEL_APPEND="systemd.unit=multi-user.target" clean setup run
|
||||
|
||||
you can even skip the "clean" and "setup" if you want to run the machine again.
|
||||
|
||||
$ sudo make DEBUGFAIL="systemd.unit=multi-user.target" run
|
||||
$ sudo make KERNEL_APPEND="systemd.unit=multi-user.target" run
|
||||
|
||||
You can specify a different kernel and initramfs with $KERNEL_BIN and $INITRD.
|
||||
(Fedora's default kernel path and initramfs are used by default)
|
||||
|
||||
$ sudo make KERNEL_BIN=/boot/vmlinuz-foo INITRD=/boot/initramfs-bar clean check
|
||||
|
||||
A script will try to find your QEMU binary. If you want to specify a different
|
||||
one you can use $QEMU_BIN.
|
||||
|
||||
$ sudo make QEMU_BIN=/path/to/qemu/qemu-kvm clean check
|
||||
|
@ -5,9 +5,6 @@ TEST_DESCRIPTION="Basic systemd setup"
|
||||
|
||||
. $TEST_BASE_DIR/test-functions
|
||||
|
||||
# Uncomment this to debug failures
|
||||
#DEBUGFAIL="systemd.unit=multi-user.target"
|
||||
|
||||
check_result_qemu() {
|
||||
ret=1
|
||||
mkdir -p $TESTDIR/root
|
||||
@ -23,11 +20,10 @@ check_result_qemu() {
|
||||
}
|
||||
|
||||
test_run() {
|
||||
if check_qemu ; then
|
||||
run_qemu
|
||||
if run_qemu; then
|
||||
check_result_qemu || return 1
|
||||
else
|
||||
dwarn "can't run qemu-kvm, skipping"
|
||||
dwarn "can't run QEMU, skipping"
|
||||
fi
|
||||
if check_nspawn; then
|
||||
run_nspawn
|
||||
|
@ -5,9 +5,6 @@ TEST_DESCRIPTION="cryptsetup systemd setup"
|
||||
|
||||
. $TEST_BASE_DIR/test-functions
|
||||
|
||||
# Uncomment this to debug failures
|
||||
#DEBUGFAIL="systemd.unit=multi-user.target"
|
||||
|
||||
check_result_qemu() {
|
||||
ret=1
|
||||
mkdir -p $TESTDIR/root
|
||||
@ -28,11 +25,10 @@ check_result_qemu() {
|
||||
|
||||
|
||||
test_run() {
|
||||
if check_qemu ; then
|
||||
run_qemu
|
||||
if run_qemu; then
|
||||
check_result_qemu || return 1
|
||||
else
|
||||
dwarn "can't run qemu-kvm, skipping"
|
||||
dwarn "can't run QEMU, skipping"
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
@ -5,9 +5,6 @@ TEST_DESCRIPTION="Job-related tests"
|
||||
|
||||
. $TEST_BASE_DIR/test-functions
|
||||
|
||||
# Uncomment this to debug failures
|
||||
#DEBUGFAIL="systemd.unit=multi-user.target"
|
||||
|
||||
check_result_qemu() {
|
||||
ret=1
|
||||
mkdir -p $TESTDIR/root
|
||||
@ -23,11 +20,10 @@ check_result_qemu() {
|
||||
}
|
||||
|
||||
test_run() {
|
||||
if check_qemu ; then
|
||||
run_qemu
|
||||
if run_qemu; then
|
||||
check_result_qemu || return 1
|
||||
else
|
||||
dwarn "can't run qemu-kvm, skipping"
|
||||
dwarn "can't run QEMU, skipping"
|
||||
fi
|
||||
if check_nspawn; then
|
||||
run_nspawn
|
||||
|
@ -10,12 +10,63 @@ KERNEL_MODS="/lib/modules/$KERNEL_VER/"
|
||||
BASICTOOLS="sh bash setsid loadkeys setfont login sushell sulogin gzip sleep echo mount umount cryptsetup date dmsetup modprobe"
|
||||
DEBUGTOOLS="df free ls stty cat ps ln ip route dmesg dhclient mkdir cp ping dhclient strace less grep id tty touch du sort"
|
||||
|
||||
function find_qemu_bin() {
|
||||
# SUSE and Red Hat call the binary qemu-kvm
|
||||
# Debian and Gentoo call it kvm
|
||||
[ "$QEMU_BIN" ] || QEMU_BIN=$(which -a kvm qemu-kvm 2>/dev/null | grep '^/' -m1)
|
||||
|
||||
[ "$ARCH" ] || ARCH=$(uname -m)
|
||||
case $ARCH in
|
||||
x86_64)
|
||||
# QEMU's own build system calls it qemu-system-x86_64
|
||||
[ "$QEMU_BIN" ] || QEMU_BIN=$(which -a qemu-system-x86_64 2>/dev/null | grep '^/' -m1)
|
||||
;;
|
||||
i*86)
|
||||
# new i386 version of QEMU
|
||||
[ "$QEMU_BIN" ] || QEMU_BIN=$(which -a qemu-system-i386 2>/dev/null | grep '^/' -m1)
|
||||
|
||||
# i386 version of QEMU
|
||||
[ "$QEMU_BIN" ] || QEMU_BIN=$(which -a qemu 2>/dev/null | grep '^/' -m1)
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ ! -e "$QEMU_BIN" ]; then
|
||||
echo "Could not find a suitable QEMU binary" >&2
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
run_qemu() {
|
||||
qemu-kvm \
|
||||
-hda $TESTDIR/rootdisk.img \
|
||||
-m 512M -nographic \
|
||||
-net none -kernel /boot/vmlinuz-$KERNEL_VER \
|
||||
-append "root=/dev/sda1 systemd.log_level=debug raid=noautodetect loglevel=2 init=/usr/lib/systemd/systemd ro console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" || return 1
|
||||
[ "$KERNEL_BIN" ] || KERNEL_BIN=/boot/vmlinuz-$KERNEL_VER
|
||||
[ "$INITRD" ] || INITRD=/boot/initramfs-${KERNEL_VER}.img
|
||||
[ "$QEMU_SMP" ] || QEMU_SMP=1
|
||||
|
||||
find_qemu_bin || return 1
|
||||
|
||||
KERNEL_APPEND="root=/dev/sda1 \
|
||||
systemd.log_level=debug \
|
||||
raid=noautodetect \
|
||||
loglevel=2 \
|
||||
init=/usr/lib/systemd/systemd \
|
||||
ro \
|
||||
console=ttyS0 \
|
||||
selinux=0 \
|
||||
$KERNEL_APPEND \
|
||||
"
|
||||
|
||||
QEMU_OPTIONS="-machine accel=kvm:tcg \
|
||||
-smp $QEMU_SMP \
|
||||
-net none \
|
||||
-m 512M \
|
||||
-nographic \
|
||||
-kernel $KERNEL_BIN \
|
||||
"
|
||||
|
||||
if [ "$INITRD" ]; then
|
||||
QEMU_OPTIONS="$QEMU_OPTIONS -initrd $INITRD"
|
||||
fi
|
||||
|
||||
$QEMU_BIN $QEMU_OPTIONS -append "$KERNEL_APPEND" $TESTDIR/rootdisk.img || return 1
|
||||
}
|
||||
|
||||
run_nspawn() {
|
||||
@ -1043,10 +1094,6 @@ inst_libdir_file() {
|
||||
fi
|
||||
}
|
||||
|
||||
check_qemu() {
|
||||
command -v qemu-kvm &>/dev/null && [[ -c /dev/kvm ]]
|
||||
}
|
||||
|
||||
check_nspawn() {
|
||||
[[ -d /sys/fs/cgroup/systemd ]]
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user