mirror of
https://github.com/linuxkit/linuxkit.git
synced 2025-10-14 04:18:25 +00:00
Passing accel=kvm:tcg causes it to try KVM first if available with a fallback to TCG (emulated/JIT mode) if it is not available. With this the boot logs gain: +Hypervisor detected: KVM and also -Booting paravirtualized kernel on bare hardware +Booting paravirtualized kernel on KVM Among various other noise. If I rename my host /dev/kvm then this is reversed, although with the following message: Could not access KVM kernel module: No such file or directory failed to initialize KVM: No such file or directory Back to tcg accelerator. Q35 is a more modern emulated platform based on the ICH9 host chipset rather than the default "pc" I440FX (Pentium Pro / Pentium II era) emulation. See http://wiki.qemu-project.org/Features/Q35 for more info. Switching to Q35 is not a requirement for enabling KVM but seemed like a reasonable change. Signed-off-by: Ian Campbell <ian.campbell@docker.com>
40 lines
925 B
Bash
Executable File
40 lines
925 B
Bash
Executable File
#!/bin/sh
|
|
|
|
QEMU_IMAGE=mobylinux/qemu:97973fb6721778c639676812ccb8bc3332e0a542@sha256:c08dac641a75fda3232a8ff3250f23d743aeac12aa4db02ec7926a42b79b0e69
|
|
|
|
# if not interactive
|
|
if [ ! -t 0 -a -z "$1" ]
|
|
then
|
|
# non interactive, tarball input
|
|
docker run -i --rm "$QEMU_IMAGE"
|
|
exit $?
|
|
fi
|
|
|
|
FILE=$1
|
|
FILE2=$2
|
|
CMDLINE=$3
|
|
[ -z "$FILE" ] && FILE="$PWD/moby"
|
|
|
|
BASE=$(basename "$FILE")
|
|
DIR=$(dirname "$FILE")
|
|
if [ ! -f "$FILE" -a -f $DIR/$BASE-initrd.img -a -f $DIR/$BASE-bzImage ]
|
|
then
|
|
FILE=$DIR/$BASE-initrd.img
|
|
FILE2=$DIR/$BASE-bzImage
|
|
fi
|
|
|
|
echo "$FILE" | grep -q '^/' || FILE="$PWD/$FILE"
|
|
if [ ! -z "$FILE2" ]
|
|
then
|
|
echo "$FILE2" | grep -q '^/' || FILE2="$PWD/$FILE2"
|
|
fi
|
|
|
|
if [ -c "/dev/kvm" ] ; then
|
|
DEVKVM="--device=/dev/kvm"
|
|
fi
|
|
BASE=$(basename "$FILE")
|
|
MOUNTS="-v $FILE:/tmp/$BASE"
|
|
BASE2=$(basename "$FILE2")
|
|
[ ! -z "$FILE2" ] && MOUNTS="$MOUNTS -v $FILE2:/tmp/$BASE2"
|
|
docker run -it --rm $MOUNTS $DEVKVM "$QEMU_IMAGE" $CMDLINE
|