diff --git a/Dockerfile b/Dockerfile index a3239a7..f0f9504 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,7 @@ RUN apt-get update && apt-get -y upgrade && \ netcat-openbsd \ qemu-system-x86 \ qemu-utils \ + ovmf \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* diff --git a/src/boot.sh b/src/boot.sh new file mode 100644 index 0000000..24be0e6 --- /dev/null +++ b/src/boot.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +# Docker environment variables + +: ${BOOT_MODE:='legacy'} # Display type + +case "${BOOT_MODE,,}" in + uefi) + BOOT_OPTS="-bios /usr/share/OVMF/OVMF_CODE.fd" + ;; + legacy) + BOOT_OPTS="" + ;; + *) + info "Unknown boot mode '${BOOT_MODE}', defaulting to 'legacy'" + BOOT_OPTS="" + ;; +esac + +return 0 diff --git a/src/config.sh b/src/config.sh index 0a26215..a80bb2b 100644 --- a/src/config.sh +++ b/src/config.sh @@ -28,7 +28,7 @@ MAC_OPTS="-machine type=q35,usb=off,dump-guest-core=off,hpet=off${KVM_OPTS}" SERIAL_OPTS="-serial mon:stdio -device virtio-serial-pci,id=virtio-serial0,bus=pcie.0,addr=0x3" EXTRA_OPTS="-device virtio-balloon-pci,id=balloon0 -object rng-random,id=rng0,filename=/dev/urandom -device virtio-rng-pci,rng=rng0" -ARGS="$DEF_OPTS $CPU_OPTS $RAM_OPTS $MAC_OPTS $SERIAL_OPTS $NET_OPTS $DISK_OPTS $DISPLAY_OPTS $EXTRA_OPTS $ARGUMENTS" +ARGS="$DEF_OPTS $CPU_OPTS $RAM_OPTS $MAC_OPTS $SERIAL_OPTS $NET_OPTS $DISK_OPTS $DISPLAY_OPTS $BOOT_OPTS $EXTRA_OPTS $ARGUMENTS" ARGS=$(echo "$ARGS" | sed 's/\t/ /g' | tr -s ' ') return 0 diff --git a/src/display.sh b/src/display.sh index 237b184..34d5226 100644 --- a/src/display.sh +++ b/src/display.sh @@ -13,3 +13,5 @@ case "${DISPLAY,,}" in DISPLAY_OPTS="-nographic -display none" ;; esac + +return 0 diff --git a/src/entry.sh b/src/entry.sh index fede698..cce345f 100755 --- a/src/entry.sh +++ b/src/entry.sh @@ -11,6 +11,7 @@ cd /run . disk.sh # Initialize disks . display.sh # Initialize display . network.sh # Initialize network +. boot.sh # Configure boot . config.sh # Configure arguments trap - ERR