<p dir="ltr"><br>
On 10 Dec 2013 02:44, "Ronny Chevalier" <<a href="mailto:chevalier.ronny@gmail.com">chevalier.ronny@gmail.com</a>> wrote:<br>
><br>
> Do we really want to add a compat for several distributions ? Because<br>
> why not Archlinux, Ubuntu,... too ?<br>
> I used Fedora's path by default because it was in the previous script.</p>
<p dir="ltr">Maybe just use the path created by our kernel-install script?</p>
<p dir="ltr">Cheers,</p>
<p dir="ltr">Tom</p>
<p dir="ltr">> 2013/12/8 Shawn Landden <<a href="mailto:shawn@churchofgit.com">shawn@churchofgit.com</a>>:<br>
> > On Sat, Dec 7, 2013 at 3:01 PM, Ronny Chevalier<br>
> > <<a href="mailto:chevalier.ronny@gmail.com">chevalier.ronny@gmail.com</a>> wrote:<br>
> >> It tries to find a suitable QEMU binary and will use KVM if present.<br>
> >> We can now configure QEMU from outside with 4 variables :<br>
> >>   - $QEMU_BIN : path to QEMU's binary<br>
> >>   - $KERNEL_APPEND : arguments appended to kernel cmdline<br>
> >>   - $KERNEL_BIN : path to a kernel<br>
> >>     Default /boot/vmlinuz-$KERNEL_VER<br>
> >>   - $INITRD : path to an initramfs<br>
> >>     Default /boot/initramfs-${KERNEL_VER}.img<br>
> >>   - $QEMU_SMP : number of CPU simulated by QEMU.<br>
> >>     Default 1<br>
> >><br>
> >> (from Alexander Graf's script: <a href="http://www.spinics.net/lists/kvm/msg72389.html">http://www.spinics.net/lists/kvm/msg72389.html</a>)<br>
> >> ---<br>
> >>  TODO                            |  1 -<br>
> >>  test/README.testsuite           | 19 ++++++++++--<br>
> >>  test/TEST-01-BASIC/test.sh      |  8 ++---<br>
> >>  test/TEST-02-CRYPTSETUP/test.sh |  8 ++---<br>
> >>  test/TEST-03-JOBS/test.sh       |  8 ++---<br>
> >>  test/test-functions             | 65 +++++++++++++++++++++++++++++++++++------<br>
> >>  6 files changed, 78 insertions(+), 31 deletions(-)<br>
> >><br>
> >> diff --git a/TODO b/TODO<br>
> >> index 9698082..f493dbb 100644<br>
> >> --- a/TODO<br>
> >> +++ b/TODO<br>
> >> @@ -168,7 +168,6 @@ Features:<br>
> >>  * test/:<br>
> >>    - add 'set -e' to scripts in test/<br>
> >>    - make stuff in test/ work with separate output dir<br>
> >> -  - qemu wrapper script: <a href="http://www.spinics.net/lists/kvm/msg72389.html">http://www.spinics.net/lists/kvm/msg72389.html</a><br>
> >><br>
> >>  * systemctl delete x.snapshot leaves no trace in logs (at least at default level).<br>
> >><br>
> >> diff --git a/test/README.testsuite b/test/README.testsuite<br>
> >> index 54d0eaa..2ae85a2 100644<br>
> >> --- a/test/README.testsuite<br>
> >> +++ b/test/README.testsuite<br>
> >> @@ -25,11 +25,24 @@ $ make all<br>
> >>  $ cd test/TEST-01-BASIC<br>
> >>  $ sudo make clean setup run<br>
> >><br>
> >> +QEMU<br>
> >> +====<br>
> >> +<br>
> >>  If you want to log in the testsuite virtual machine, you can specify<br>
> >> -additional kernel command line parameter with $DEBUGFAIL.<br>
> >> +additional kernel command line parameter with $KERNEL_APPEND.<br>
> >><br>
> >> -$ sudo make DEBUGFAIL="systemd.unit=multi-user.target" clean setup run<br>
> >> +$ sudo make KERNEL_APPEND="systemd.unit=multi-user.target" clean setup run<br>
> >><br>
> >>  you can even skip the "clean" and "setup" if you want to run the machine again.<br>
> >><br>
> >> -$ sudo make DEBUGFAIL="systemd.unit=multi-user.target" run<br>
> >> +$ sudo make KERNEL_APPEND="systemd.unit=multi-user.target" run<br>
> >> +<br>
> >> +You can specify a different kernel and initramfs with $KERNEL_BIN and $INITRD.<br>
> >> +(Fedora's default kernel path and initramfs are used by default)<br>
> >> +<br>
> >> +$ sudo make KERNEL_BIN=/boot/vmlinuz-foo INITRD=/boot/initramfs-bar clean check<br>
> >> +<br>
> >> +A script will try to find your QEMU binary. If you want to specify a different<br>
> >> +one you can use $QEMU_BIN.<br>
> >> +<br>
> >> +$ sudo make QEMU_BIN=/path/to/qemu/qemu-kvm clean check<br>
> >> diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh<br>
> >> index aaf63f4..84ccf26 100755<br>
> >> --- a/test/TEST-01-BASIC/test.sh<br>
> >> +++ b/test/TEST-01-BASIC/test.sh<br>
> >> @@ -5,9 +5,6 @@ TEST_DESCRIPTION="Basic systemd setup"<br>
> >><br>
> >>  . $TEST_BASE_DIR/test-functions<br>
> >><br>
> >> -# Uncomment this to debug failures<br>
> >> -#DEBUGFAIL="systemd.unit=multi-user.target"<br>
> >> -<br>
> >>  check_result_qemu() {<br>
> >>      ret=1<br>
> >>      mkdir -p $TESTDIR/root<br>
> >> @@ -23,11 +20,10 @@ check_result_qemu() {<br>
> >>  }<br>
> >><br>
> >>  test_run() {<br>
> >> -    if check_qemu ; then<br>
> >> -        run_qemu<br>
> >> +    if run_qemu; then<br>
> >>          check_result_qemu || return 1<br>
> >>      else<br>
> >> -        dwarn "can't run qemu-kvm, skipping"<br>
> >> +        dwarn "can't run QEMU, skipping"<br>
> >>      fi<br>
> >>      if check_nspawn; then<br>
> >>          run_nspawn<br>
> >> diff --git a/test/TEST-02-CRYPTSETUP/test.sh b/test/TEST-02-CRYPTSETUP/test.sh<br>
> >> index 86617df..d7e8776 100755<br>
> >> --- a/test/TEST-02-CRYPTSETUP/test.sh<br>
> >> +++ b/test/TEST-02-CRYPTSETUP/test.sh<br>
> >> @@ -5,9 +5,6 @@ TEST_DESCRIPTION="cryptsetup systemd setup"<br>
> >><br>
> >>  . $TEST_BASE_DIR/test-functions<br>
> >><br>
> >> -# Uncomment this to debug failures<br>
> >> -#DEBUGFAIL="systemd.unit=multi-user.target"<br>
> >> -<br>
> >>  check_result_qemu() {<br>
> >>      ret=1<br>
> >>      mkdir -p $TESTDIR/root<br>
> >> @@ -28,11 +25,10 @@ check_result_qemu() {<br>
> >><br>
> >><br>
> >>  test_run() {<br>
> >> -    if check_qemu ; then<br>
> >> -        run_qemu<br>
> >> +    if run_qemu; then<br>
> >>          check_result_qemu || return 1<br>
> >>      else<br>
> >> -        dwarn "can't run qemu-kvm, skipping"<br>
> >> +        dwarn "can't run QEMU, skipping"<br>
> >>      fi<br>
> >>      return 0<br>
> >>  }<br>
> >> diff --git a/test/TEST-03-JOBS/test.sh b/test/TEST-03-JOBS/test.sh<br>
> >> index 6303258..41e02e2 100755<br>
> >> --- a/test/TEST-03-JOBS/test.sh<br>
> >> +++ b/test/TEST-03-JOBS/test.sh<br>
> >> @@ -5,9 +5,6 @@ TEST_DESCRIPTION="Job-related tests"<br>
> >><br>
> >>  . $TEST_BASE_DIR/test-functions<br>
> >><br>
> >> -# Uncomment this to debug failures<br>
> >> -#DEBUGFAIL="systemd.unit=multi-user.target"<br>
> >> -<br>
> >>  check_result_qemu() {<br>
> >>      ret=1<br>
> >>      mkdir -p $TESTDIR/root<br>
> >> @@ -23,11 +20,10 @@ check_result_qemu() {<br>
> >>  }<br>
> >><br>
> >>  test_run() {<br>
> >> -    if check_qemu ; then<br>
> >> -        run_qemu<br>
> >> +    if run_qemu; then<br>
> >>          check_result_qemu || return 1<br>
> >>      else<br>
> >> -        dwarn "can't run qemu-kvm, skipping"<br>
> >> +        dwarn "can't run QEMU, skipping"<br>
> >>      fi<br>
> >>      if check_nspawn; then<br>
> >>          run_nspawn<br>
> >> diff --git a/test/test-functions b/test/test-functions<br>
> >> index a184ed7..87d3a73 100644<br>
> >> --- a/test/test-functions<br>
> >> +++ b/test/test-functions<br>
> >> @@ -10,12 +10,63 @@ KERNEL_MODS="/lib/modules/$KERNEL_VER/"<br>
> >>  BASICTOOLS="sh bash setsid loadkeys setfont login sushell sulogin gzip sleep echo mount umount cryptsetup date dmsetup modprobe"<br>
> >>  DEBUGTOOLS="df free ls stty cat ps ln ip route dmesg dhclient mkdir cp ping dhclient strace less grep id tty touch du sort"<br>
> >><br>
> >> +function find_qemu_bin() {<br>
> >> +    # SUSE and Red Hat call the binary qemu-kvm<br>
> >> +    # Debian and Gentoo call it kvm<br>
> >> +    [ "$QEMU_BIN" ] || QEMU_BIN=$(which -a kvm qemu-kvm 2>/dev/null | grep '^/' -m1)<br>
> >> +<br>
> >> +    [ "$ARCH" ] || ARCH=$(uname -m)<br>
> >> +    case $ARCH in<br>
> >> +    x86_64)<br>
> >> +        # QEMU's own build system calls it qemu-system-x86_64<br>
> >> +        [ "$QEMU_BIN" ] || QEMU_BIN=$(which -a qemu-system-x86_64 2>/dev/null | grep '^/' -m1)<br>
> >> +        ;;<br>
> >> +    i*86)<br>
> >> +        # new i386 version of QEMU<br>
> >> +        [ "$QEMU_BIN" ] || QEMU_BIN=$(which -a qemu-system-i386 2>/dev/null | grep '^/' -m1)<br>
> >> +<br>
> >> +        # i386 version of QEMU<br>
> >> +        [ "$QEMU_BIN" ] || QEMU_BIN=$(which -a qemu 2>/dev/null | grep '^/' -m1)<br>
> >> +        ;;<br>
> >> +    esac<br>
> >> +<br>
> >> +    if [ ! -e "$QEMU_BIN" ]; then<br>
> >> +        echo "Could not find a suitable QEMU binary" >&2<br>
> >> +        return 1<br>
> >> +    fi<br>
> >> +}<br>
> >> +<br>
> >>  run_qemu() {<br>
> >> -    qemu-kvm \<br>
> >> -        -hda $TESTDIR/rootdisk.img \<br>
> >> -        -m 512M -nographic \<br>
> >> -        -net none -kernel /boot/vmlinuz-$KERNEL_VER \<br>
> >> -        -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<br>
> >> +    [ "$KERNEL_BIN" ] || KERNEL_BIN=/boot/vmlinuz-$KERNEL_VER<br>
> >> +    [ "$INITRD" ]     || INITRD=/boot/initramfs-${KERNEL_VER}.img<br>
> >> +    [ "$QEMU_SMP" ]   || QEMU_SMP=1<br>
> > test -e /boot/initramfd-${KERNEL_VER}.img<br>
> > and<br>
> > test -e /boot/initrd.img-${KERNEL_VER}<br>
> ><br>
> > for compat with Debian<br>
> ><br>
> > (alternatively Debian also has /vmlinuz and /initrd.img )<br>
> ><br>
> >> +<br>
> >> +    find_qemu_bin || return 1<br>
> >> +<br>
> >> +    KERNEL_APPEND="root=/dev/sda1 \<br>
> >> +systemd.log_level=debug \<br>
> >> +raid=noautodetect \<br>
> >> +loglevel=2 \<br>
> >> +init=/usr/lib/systemd/systemd \<br>
> >> +ro \<br>
> >> +console=ttyS0 \<br>
> >> +selinux=0 \<br>
> >> +$KERNEL_APPEND \<br>
> >> +"<br>
> >> +<br>
> >> +    QEMU_OPTIONS="-machine accel=kvm:tcg \<br>
> >> +-smp $QEMU_SMP \<br>
> >> +-net none \<br>
> >> +-m 512M \<br>
> >> +-nographic \<br>
> >> +-kernel $KERNEL_BIN \<br>
> >> +"<br>
> >> +<br>
> >> +    if [ "$INITRD" ]; then<br>
> >> +        QEMU_OPTIONS="$QEMU_OPTIONS -initrd $INITRD"<br>
> >> +    fi<br>
> >> +<br>
> >> +    $QEMU_BIN $QEMU_OPTIONS -append "$KERNEL_APPEND" $TESTDIR/rootdisk.img || return 1<br>
> >>  }<br>
> >><br>
> >>  run_nspawn() {<br>
> >> @@ -1043,10 +1094,6 @@ inst_libdir_file() {<br>
> >>      fi<br>
> >>  }<br>
> >><br>
> >> -check_qemu() {<br>
> >> -    command -v qemu-kvm &>/dev/null && [[ -c /dev/kvm ]]<br>
> >> -}<br>
> >> -<br>
> >>  check_nspawn() {<br>
> >>      [[ -d /sys/fs/cgroup/systemd ]]<br>
> >>  }<br>
> >> --<br>
> >> 1.8.4.2<br>
> >><br>
> >> _______________________________________________<br>
> >> systemd-devel mailing list<br>
> >> <a href="mailto:systemd-devel@lists.freedesktop.org">systemd-devel@lists.freedesktop.org</a><br>
> >> <a href="http://lists.freedesktop.org/mailman/listinfo/systemd-devel">http://lists.freedesktop.org/mailman/listinfo/systemd-devel</a><br>
> _______________________________________________<br>
> systemd-devel mailing list<br>
> <a href="mailto:systemd-devel@lists.freedesktop.org">systemd-devel@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/systemd-devel">http://lists.freedesktop.org/mailman/listinfo/systemd-devel</a><br>
</p>