Unverified Commit 73b9c31b authored by Kroese's avatar Kroese Committed by GitHub
Browse files

feat: Enable Hyper-V on Windows guests (#365)

parent 54198a09
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ EXPOSE 22 5900 8006
ENV CPU_CORES "1"
ENV RAM_SIZE "1G"
ENV DISK_SIZE "16G"
ENV BOOT "http://www.example.com/image.iso"
ENV BOOT "http://example.com/image.iso"

ARG VERSION_ARG "0.0"
RUN echo "$VERSION_ARG" > /run/version
+1 −0
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ if [[ "${BOOT_MODE,,}" != "legacy" ]]; then

    BOOT_OPTS="$BOOT_OPTS -chardev socket,id=chrtpm,path=/dev/shm/tpm/swtpm-sock"
    BOOT_OPTS="$BOOT_OPTS -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0"
    BOOT_OPTS="$BOOT_OPTS -no-hpet -global kvm-pit.lost_tick_policy=discard -global ICH9-LPC.disable_s3=1"

    mkdir -p /dev/shm/tpm
    swtpm socket -t -d --tpmstate dir=/dev/shm/tpm --ctrl type=unixio,path=/dev/shm/tpm/swtpm-sock --tpm2
+2 −2
Original line number Diff line number Diff line
@@ -6,8 +6,8 @@ SERIAL_OPTS="-serial mon:stdio"
USB_OPTS="-device qemu-xhci -device usb-tablet"
MON_OPTS="-monitor telnet:localhost:7100,server,nowait,nodelay"
RAM_OPTS=$(echo "-m $RAM_SIZE" | sed 's/MB/M/g;s/GB/G/g;s/TB/T/g')
CPU_OPTS="-cpu $CPU_MODEL -smp $CPU_CORES,sockets=1,dies=1,cores=$CPU_CORES,threads=1"
MAC_OPTS="-machine type=q35${SECURE},graphics=off,dump-guest-core=off,hpet=off${KVM_OPTS}"
CPU_OPTS="-cpu $CPU_FLAGS -smp $CPU_CORES,sockets=1,dies=1,cores=$CPU_CORES,threads=1"
MAC_OPTS="-machine type=q35${SECURE},graphics=off,vmport=off,dump-guest-core=off,hpet=off${KVM_OPTS}"
DEV_OPTS="-device virtio-balloon-pci,id=balloon0,bus=pcie.0,addr=0x4"
DEV_OPTS="$DEV_OPTS -object rng-random,id=objrng0,filename=/dev/urandom"
DEV_OPTS="$DEV_OPTS -device virtio-rng-pci,rng=objrng0,id=rng0,bus=pcie.0,addr=0x1c"
+19 −4
Original line number Diff line number Diff line
@@ -4,8 +4,8 @@ set -Eeuo pipefail
# Docker environment variables

: "${KVM:="Y"}"
: "${CPU_FLAGS:=""}"
: "${CPU_MODEL:="host"}"
: "${CPU_FEATURES:="+ssse3,+sse4.1,+sse4.2"}"

[ "$ARCH" != "amd64" ] && KVM="N"

@@ -36,20 +36,35 @@ fi

if [[ "$KVM" != [Nn]* ]]; then

  CPU_FEATURES="kvm=on"
  KVM_OPTS=",accel=kvm -enable-kvm"

  if [[ "${BOOT_MODE,,}" == "windows" ]]; then

    CPU_FEATURES="kvm=on,+hypervisor,+invtsc,l3-cache=on,migratable=no,hv_passthrough"

  fi

else

  KVM_OPTS=""
  CPU_FEATURES="+ssse3,+sse4.1,+sse4.2"

  if [[ "${CPU_MODEL,,}" == "host"* ]]; then

  if [[ "$CPU_MODEL" == "host"* ]]; then
    if [[ "$ARCH" == "amd64" ]]; then
      CPU_MODEL="max,$CPU_FEATURES"
      CPU_MODEL="max"
    else
      CPU_MODEL="qemu64,$CPU_FEATURES"
      CPU_MODEL="qemu64"
    fi

  fi
fi

if [ -z "$CPU_FLAGS" ]; then
  CPU_FLAGS="$CPU_MODEL,$CPU_FEATURES"
else
  CPU_FLAGS="$CPU_MODEL,$CPU_FEATURES,$CPU_FLAGS"
fi

return 0