qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Jan Kiszka <jan.kiszka@web.de>
To: Alexander Graf <agraf@suse.de>
Cc: "kvm@vger.kernel.org list" <kvm@vger.kernel.org>,
	qemu-devel Developers <qemu-devel@nongnu.org>,
	"linux-kernel@vger.kernel.org List"
	<linux-kernel@vger.kernel.org>, Pekka Enberg <penberg@kernel.org>,
	Avi Kivity <avi@redhat.com>,
	Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [Qemu-devel] [PATCH] KVM: Add wrapper script around QEMU to test kernels
Date: Fri, 11 May 2012 11:05:11 -0300	[thread overview]
Message-ID: <4FAD1C97.5080803@web.de> (raw)
In-Reply-To: <59D7E7EE-13D5-4D0C-B556-013A2897402E@suse.de>

[-- Attachment #1: Type: text/plain, Size: 6073 bytes --]

On 2012-05-11 10:42, Alexander Graf wrote:
> 
> On 06.11.2011, at 14:54, Jan Kiszka wrote:
> 
>> On 2011-08-24 23:38, Alexander Graf wrote:
>>> On LinuxCon I had a nice chat with Linus on what he thinks kvm-tool
>>> would be doing and what he expects from it. Basically he wants a
>>> small and simple tool he and other developers can run to try out and
>>> see if the kernel they just built actually works.
>>>
>>> Fortunately, QEMU can do that today already! The only piece that was
>>> missing was the "simple" piece of the equation, so here is a script
>>> that wraps around QEMU and executes a kernel you just built.
>>>
>>> If you do have KVM around and are not cross-compiling, it will use
>>> KVM. But if you don't, you can still fall back to emulation mode and
>>> at least check if your kernel still does what you expect. I only
>>> implemented support for s390x and ppc there, but it's easily extensible
>>> to more platforms, as QEMU can emulate (and virtualize) pretty much
>>> any platform out there.
>>>
>>> If you don't have qemu installed, please do so before using this script. Your
>>> distro should provide a package for it (might even call it "kvm"). If not,
>>> just compile it from source - it's not hard!
>>>
>>> To quickly get going, just execute the following as user:
>>>
>>>    $ ./Documentation/run-qemu.sh -r / -a init=/bin/bash
>>>
>>> This will drop you into a shell on your rootfs.
>>>
>>> Happy hacking!
>>>
>>> Signed-off-by: Alexander Graf <agraf@suse.de>
>>>
>>> ---
>>>
>>> v1 -> v2:
>>>
>>>  - fix naming of QEMU
>>>  - use grep -q for has_config
>>>  - support multiple -a args
>>>  - spawn gdb on execution
>>>  - pass through qemu options
>>>  - dont use qemu-system-x86_64 on i386
>>>  - add funny sentence to startup text
>>>  - more helpful error messages
>>> ---
>>> scripts/run-qemu.sh |  334 +++++++++++++++++++++++++++++++++++++++++++++++++++
>>> 1 files changed, 334 insertions(+), 0 deletions(-)
>>> create mode 100755 scripts/run-qemu.sh
>>>
>>> diff --git a/scripts/run-qemu.sh b/scripts/run-qemu.sh
>>> new file mode 100755
>>> index 0000000..5d4e185
>>> --- /dev/null
>>> +++ b/scripts/run-qemu.sh
>>> @@ -0,0 +1,334 @@
>>> +#!/bin/bash
>>> +#
>>> +# QEMU Launcher
>>> +#
>>> +# This script enables simple use of the KVM and QEMU tool stack for
>>> +# easy kernel testing. It allows to pass either a host directory to
>>> +# the guest or a disk image. Example usage:
>>> +#
>>> +# Run the host root fs inside a VM:
>>> +#
>>> +# $ ./scripts/run-qemu.sh -r /
>>> +#
>>> +# Run the same with SDL:
>>> +#
>>> +# $ ./scripts/run-qemu.sh -r / --sdl
>>> +# 
>>> +# Or with a PPC build:
>>> +#
>>> +# $ ARCH=ppc ./scripts/run-qemu.sh -r /
>>> +# 
>>> +# PPC with a mac99 model by passing options to QEMU:
>>> +#
>>> +# $ ARCH=ppc ./scripts/run-qemu.sh -r / -- -M mac99
>>> +#
>>> +
>>> +USE_SDL=
>>> +USE_VNC=
>>> +USE_GDB=1
>>> +KERNEL_BIN=arch/x86/boot/bzImage
>>> +MON_STDIO=
>>> +KERNEL_APPEND2=
>>> +SERIAL=ttyS0
>>> +SERIAL_KCONFIG=SERIAL_8250
>>> +BASENAME=$(basename "$0")
>>> +
>>> +function usage() {
>>> +	echo "
>>> +$BASENAME allows you to execute a virtual machine with the Linux kernel
>>> +that you just built. To only execute a simple VM, you can just run it
>>> +on your root fs with \"-r / -a init=/bin/bash\"
>>> +
>>> +	-a, --append parameters
>>> +		Append the given parameters to the kernel command line.
>>> +
>>> +	-d, --disk image
>>> +		Add the image file as disk into the VM.
>>> +
>>> +	-D, --no-gdb
>>> +		Don't run an xterm with gdb attached to the guest.
>>> +
>>> +	-r, --root directory
>>> +		Use the specified directory as root directory inside the guest.
>>> +
>>> +	-s, --sdl
>>> +		Enable SDL graphical output.
>>> +
>>> +	-S, --smp cpus
>>> +		Set number of virtual CPUs.
>>> +
>>> +	-v, --vnc
>>> +		Enable VNC graphical output.
>>> +
>>> +Examples:
>>> +
>>> +	Run the host root fs inside a VM:
>>> +	$ ./scripts/run-qemu.sh -r /
>>> +
>>> +	Run the same with SDL:
>>> +	$ ./scripts/run-qemu.sh -r / --sdl
>>> +	
>>> +	Or with a PPC build:
>>> +	$ ARCH=ppc ./scripts/run-qemu.sh -r /
>>> +	
>>> +	PPC with a mac99 model by passing options to QEMU:
>>> +	$ ARCH=ppc ./scripts/run-qemu.sh -r / -- -M mac99
>>> +"
>>> +}
>>> +
>>> +function require_config() {
>>> +	if [ "$(grep CONFIG_$1=y .config)" ]; then
>>> +		return
>>> +	fi
>>> +
>>> +	echo "You need to enable CONFIG_$1 for run-qemu to work properly"
>>> +	exit 1
>>> +}
>>> +
>>> +function has_config() {
>>> +	grep -q "CONFIG_$1=y" .config
>>> +}
>>> +
>>> +function drive_if() {
>>> +	if has_config VIRTIO_BLK; then
>>> +		echo virtio
>>> +	elif has_config ATA_PIIX; then
>>> +		echo ide
>>
>> + require_config "BLK_DEV_SD"
>>
>> Maybe there should also be a warning if no standard FS (ext[34], btrfs,
>> xfs etc.) is build into the kernel.
>>
>> Another thing, but that's just a recommendation for initrd-free mode:
>> DEVTMPFS_MOUNT
>>
>>> +	else
>>> +		echo "\
>>> +Your kernel must have either VIRTIO_BLK or ATA_PIIX
>>> +enabled for block device assignment" >&2
>>> +		exit 1
>>> +	fi
>>> +}
>>> +
>>> +GETOPT=`getopt -o a:d:Dhr:sS:v --long append,disk:,no-gdb,help,root:,sdl,smp:,vnc \
>>> +	-n "$(basename \"$0\")" -- "$@"`
>>> +
>>> +if [ $? != 0 ]; then
>>> +	echo "Terminating..." >&2
>>> +	exit 1
>>> +fi
>>> +
>>> +eval set -- "$GETOPT"
>>> +
>>> +while true; do
>>> +	case "$1" in
>>> +	-a|--append)
>>> +		KERNEL_APPEND2="$KERNEL_APPEND2 $KERNEL_APPEND2"
>>
>> That should be
>>
>> KERNEL_APPEND2="$KERNEL_APPEND2 $2"
>>
>>> +		shift
>>> +		;;
>>> +	-d|--disk)
>>> +		QEMU_OPTIONS="$QEMU_OPTIONS -drive \
>>> +			file=$2,if=$(drive_if),cache=unsafe"
>>
>> 		if [ $? != 0 ]; then
>> 			exit $?
>> 		fi
> 
> Not sure I understand this one. There's no program executing here...

Not sure either. Does drive_if exit the complete script when it fails?
Maybe it was related to this, give it a try again.

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 262 bytes --]

  reply	other threads:[~2012-05-11 14:05 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-24 21:38 [Qemu-devel] [PATCH] KVM: Add wrapper script around QEMU to test kernels Alexander Graf
2011-08-25 18:01 ` Blue Swirl
2011-11-06  0:03   ` Alexander Graf
2011-11-06 13:54 ` Jan Kiszka
2012-05-11 13:42   ` Alexander Graf
2012-05-11 14:05     ` Jan Kiszka [this message]
  -- strict thread matches above, loose matches on Subject: below --
2012-05-11 15:46 Alexander Graf
2011-11-07 14:34 青云
2011-11-06  1:35 Alexander Graf
2011-11-06  1:14 ` Andreas Färber
2011-11-06 10:04 ` Pekka Enberg
2011-11-06 10:07   ` Avi Kivity
2011-11-06 10:12     ` Pekka Enberg
2011-11-06 10:23       ` Avi Kivity
2011-11-06 11:08         ` Pekka Enberg
2011-11-06 11:50           ` Avi Kivity
2011-11-06 12:14             ` Pekka Enberg
2011-11-06 12:27               ` Avi Kivity
2011-11-06 12:32                 ` Pekka Enberg
2011-11-06 12:43                   ` Avi Kivity
2011-11-06 13:06                     ` Pekka Enberg
2011-11-06 15:56                       ` Avi Kivity
2011-11-06 16:35                         ` Pekka Enberg
2011-11-06 16:50                           ` Avi Kivity
2011-11-06 17:08                             ` Anthony Liguori
2011-11-06 18:09                               ` Pekka Enberg
2011-11-07  1:38                                 ` Anthony Liguori
2011-11-07  6:45                                   ` Pekka Enberg
2011-11-06 18:31                               ` Ted Ts'o
2011-11-06 18:54                                 ` Pekka Enberg
2011-11-06 18:58                                   ` Pekka Enberg
2011-11-06 23:19                                     ` Ted Ts'o
2011-11-07  6:42                                       ` Pekka Enberg
2011-11-07 17:03                                         ` Vince Weaver
2011-11-07 17:59                                           ` Ingo Molnar
2011-11-07 20:03                                             ` Frank Ch. Eigler
2011-11-07 20:09                                               ` Pekka Enberg
2011-11-07 20:35                                                 ` Ted Ts'o
2011-11-08  5:29                                             ` Vince Weaver
2011-11-08 12:07                                               ` Ingo Molnar
2011-11-08 13:08                                                 ` Arnaldo Carvalho de Melo
2011-11-09  6:04                                                   ` Vince Weaver
2011-11-07 19:53                                           ` Pekka Enberg
2011-11-07 20:32                                             ` Ted Ts'o
2011-11-07 21:36                                               ` Pekka Enberg
2011-11-07 22:19                                                 ` Anthony Liguori
2011-11-07 23:42                                                   ` Theodore Tso
2011-11-07 10:31                                 ` Kevin Wolf
2011-11-07 11:38                                   ` Pekka Enberg
2011-11-07 11:59                                     ` Kevin Wolf
2011-11-06 16:19                       ` Jan Kiszka
2011-11-06 16:30                         ` Pekka Enberg
2011-11-06 16:39                           ` Jan Kiszka
2011-11-06 17:11                             ` Pekka Enberg
2011-11-06 17:23                               ` Jan Kiszka
2011-11-06 17:55                                 ` Pekka Enberg
2011-11-06 16:39                         ` Pekka Enberg
2011-11-07 10:11                         ` Gerd Hoffmann
2011-11-07 10:18                           ` Pekka Enberg
2011-11-06 17:10                       ` Anthony Liguori
2011-11-06 17:15                       ` Alexander Graf
2011-11-06 17:28                         ` Pekka Enberg
2011-11-06 17:30                           ` Alexander Graf
2011-11-06 18:05                             ` Pekka Enberg
2011-11-06 19:14                               ` Paolo Bonzini
2011-11-06 19:19                                 ` Pekka Enberg
2011-11-06 22:08                             ` Frank Ch. Eigler
2011-11-07  6:58                               ` Pekka Enberg
2011-11-06 19:11                           ` Paolo Bonzini
2011-11-06 19:17                             ` Pekka Enberg
2011-11-06 20:01                               ` Paolo Bonzini
2011-11-06 20:17                                 ` Pekka Enberg
2011-11-07  8:00                                   ` Paolo Bonzini
2011-11-07  8:09                                     ` Pekka Enberg
2011-11-07  8:20                                       ` Paolo Bonzini
2011-11-07  8:45                                         ` Pekka Enberg
2011-11-07  8:52                                           ` Paolo Bonzini
2011-11-07  8:57                                             ` Pekka Enberg
2011-11-07  8:13                                     ` Pekka Enberg
2011-11-06 20:31                                 ` Pekka Enberg
2011-11-07 10:23                           ` Gerd Hoffmann
2011-11-07 10:30                             ` Sasha Levin
2011-11-07 11:02                               ` Paolo Bonzini
2011-11-07 11:44                                 ` Pekka Enberg
2011-11-07 12:18                                   ` Gerd Hoffmann
2011-11-07 12:21                                     ` Pekka Enberg
2011-11-07 12:26                               ` Avi Kivity
2011-11-07 12:29                                 ` Pekka Enberg
2011-11-07 12:43                                   ` Ted Ts'o
2011-11-07 12:44                                   ` Avi Kivity
2011-11-07 11:34                             ` Pekka Enberg
2011-11-07 11:57                               ` Ingo Molnar
2011-11-07 13:17                                 ` Anthony Liguori
2011-11-07 12:08                               ` Gerd Hoffmann
2011-11-07 12:29                                 ` Ted Ts'o
2011-11-07 12:42                                   ` Pekka Enberg
2011-11-07 12:47                                     ` Ted Ts'o
2011-11-07 12:59                                       ` Pekka Enberg
2011-11-07 13:12                                       ` Pekka Enberg
2011-11-08 13:29                                         ` Karel Zak
2011-11-08 14:30                                           ` Pekka Enberg
2011-11-06 13:11                     ` Pekka Enberg
2011-11-06 17:09                       ` Alexander Graf
2011-11-06 12:27             ` Pekka Enberg
2011-11-08 14:41 ` Avi Kivity
2011-11-08 14:52   ` Christoph Hellwig
2011-11-08 14:55     ` Sasha Levin
2011-11-08 14:57     ` Avi Kivity
2011-11-08 14:59       ` Christoph Hellwig
2011-11-08 17:34         ` Alexander Graf
2011-11-08 17:36           ` Avi Kivity
2011-11-08 15:04     ` Jan Kiszka
2011-11-08 15:26     ` Pekka Enberg
2011-11-08 15:28       ` Christoph Hellwig
2011-08-23 22:16 [Qemu-devel] [PATCH] KVM: Add wrapper script around Qemu " Alexander Graf
2011-08-24  5:19 ` Pekka Enberg
2011-08-24  5:31   ` Américo Wang
2011-08-24 20:35     ` Alexander Graf
2011-08-25  3:44       ` Américo Wang
2011-11-05 23:47         ` Alexander Graf
2011-08-24  8:25 ` Avi Kivity
2011-08-24  9:16   ` Jan Kiszka
2011-08-24 21:06     ` Alexander Graf
2011-08-24 17:40 ` Blue Swirl
2011-08-24 19:17   ` Avi Kivity
2011-08-24 21:17   ` Alexander Graf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FAD1C97.5080803@web.de \
    --to=jan.kiszka@web.de \
    --cc=agraf@suse.de \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=penberg@kernel.org \
    --cc=qemu-devel@nongnu.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).