From cb70e627b164eddeef30128fd17f29b526365bb5 Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Sat, 20 Sep 2014 01:00:11 -0600 Subject: [PATCH] QEMU! --- Dockerfile | 13 +++++++++++++ start-qemu | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 Dockerfile create mode 100755 start-qemu diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..31309e4 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +FROM debian:sid + +RUN apt-get update && apt-get install -y \ + qemu-kvm \ + qemu-system \ + qemu-utils \ + --no-install-recommends + +EXPOSE 22 +EXPOSE 5900 + +COPY start-qemu /usr/local/bin/ +CMD ["start-qemu"] diff --git a/start-qemu b/start-qemu new file mode 100755 index 0000000..cefd76e --- /dev/null +++ b/start-qemu @@ -0,0 +1,50 @@ +#!/bin/bash +set -e + +# main available options: +# QEMU_CPU=n (cores) +# QEMU_RAM=nnn (megabytes) +# QEMU_HDA (filename) +# QEMU_HDA_SIZE (bytes, suffixes like "G" allowed) +# QEMU_CDROM (filename) + +hostArch="$(uname -m)" +qemuArch="${QEMU_ARCH:-$hostArch}" +qemu="${QEMU_BIN:-qemu-system-$qemuArch}" +qemuArgs=() + +if [ -e /dev/kvm ]; then + qemuArgs+=( -enable-kvm ) +elif [ "$hostArch" = "$qemuArch" ]; then + echo >&2 + echo >&2 'warning: /dev/kvm not found' + echo >&2 ' PERFORMANCE WILL SUFFER' + echo >&2 ' (hint: docker run --device /dev/kvm ...)' + echo >&2 + sleep 3 +fi + +qemuArgs+=( -smp "${QEMU_CPU:-1}" ) +qemuArgs+=( -m "${QEMU_RAM:-512}" ) + +if [ "$QEMU_HDA" ]; then + if [ ! -f "$QEMU_HDA" -o ! -s "$QEMU_HDA" ]; then + qemu-img create "$QEMU_HDA" "${QEMU_HDA_SIZE:-8G}" + fi + qemuArgs+=( -hda "$QEMU_HDA" ) +fi + +if [ "$QEMU_CDROM" ]; then + qemuArgs+=( -cdrom "$QEMU_CDROM" ) +fi + +qemuArgs+=( + -net nic + -net user,hostname="$(hostname)",hostfwd=tcp:':22'-':22' + -vnc ':0' + -serial stdio + "$@" +) + +set -x +exec "$qemu" "${qemuArgs[@]}"