Files
linuxkit/base/qemu/qemu.sh
Justin Cormack 007a42ad41 Use docker run to run tests and interactive containers
Using docker build is slower and needs lots of Dockerfiles,
while a single image with a careful script can accept any type
of image, either with `-v` to share into `/tmp` for interactive
use (where you need the input and a tty, or by adding a tarball
for cases where there is no login such as running tests, so you
can still use a remote daemon in these cases.

Signed-off-by: Justin Cormack <justin.cormack@docker.com>
2017-01-24 23:41:06 +00:00

42 lines
987 B
Bash
Executable File

#!/bin/sh
set -e
cd /tmp
# extract. BSD tar auto recognises compression, unlike GNU tar
# only if stdin is a tty, if so need files volume mounted...
[ -t 0 ] || bsdtar xzf -
TGZ="$(find . -name '*.tgz' -or -name '*.tar.gz')"
[ -n "$TGZ" ] && bsdtar xzf "$TGZ"
ISO="$(find . -name '*.iso')"
RAW="$(find . -name '*.raw')"
INITRD="$(find . -name '*.img')"
KERNEL="$(find . -name vmlinuz64 -or -name bzImage)"
if [ -n "$ISO" ]
then
ARGS="-cdrom $ISO -drive file=systemdisk.img,format=raw"
elif [ -n "$RAW" ]
then
# should test with more drives
ARGS="-drive file=$RAW,format=raw"
elif [ -n "KERNEL" ]
then
ARGS="-kernel $KERNEL"
if [ -n "$INITRD" ]
then
ARGS="$ARGS -initrd $INITRD"
fi
ARGS="$ARGS -append console=ttyS0 -drive file=systemdisk.img,format=raw"
else
echo "no recognised boot media" >2
exit 1
fi
echo "$ARGS" | grep -q systemdisk && qemu-img create -f raw systemdisk.img 256M
qemu-system-x86_64 -device virtio-rng-pci -serial stdio -vnc none -m 1024 $ARGS $*