Add UEFI support (#236)

* OVMF
This commit is contained in:
Nate Choe 2023-12-10 15:16:11 -06:00 committed by GitHub
parent 6ef07f2ca3
commit 743743c3e7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 26 additions and 1 deletions

View file

@ -16,6 +16,7 @@ RUN apt-get update && apt-get -y upgrade && \
netcat-openbsd \ netcat-openbsd \
qemu-system-x86 \ qemu-system-x86 \
qemu-utils \ qemu-utils \
ovmf \
&& apt-get clean \ && apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

21
src/boot.sh Normal file
View file

@ -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

View file

@ -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" 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" 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 ' ') ARGS=$(echo "$ARGS" | sed 's/\t/ /g' | tr -s ' ')
return 0 return 0

View file

@ -13,3 +13,5 @@ case "${DISPLAY,,}" in
DISPLAY_OPTS="-nographic -display none" DISPLAY_OPTS="-nographic -display none"
;; ;;
esac esac
return 0

View file

@ -11,6 +11,7 @@ cd /run
. disk.sh # Initialize disks . disk.sh # Initialize disks
. display.sh # Initialize display . display.sh # Initialize display
. network.sh # Initialize network . network.sh # Initialize network
. boot.sh # Configure boot
. config.sh # Configure arguments . config.sh # Configure arguments
trap - ERR trap - ERR