hdmistat/test/qemu-ubuntu-test/run-qemu.sh
2025-07-24 14:32:50 +02:00

73 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
cd "/Users/user/dev/hdmistat/qemu-ubuntu-test"
echo "Starting QEMU ARM64 Ubuntu with cloud-init..."
echo ""
echo "Login: ubuntu / ubuntu"
echo "SSH available on port 2223: ssh ubuntu@localhost -p 2223"
echo "VNC available on port 5902 (password: vncvnc)"
echo ""
echo "hdmistat will be installed automatically via cloud-init"
echo "Check cloud-init status with: cloud-init status"
echo ""
echo "Press Ctrl+A, X to quit"
echo ""
# Create fresh disk image from base image
echo "Creating fresh disk image..."
qemu-img create -f qcow2 -F qcow2 -b ubuntu-22.04-server-cloudimg-arm64.img hdmistat-test.qcow2 8G
# Find EFI firmware and vars
EFI_CODE=""
EFI_VARS=""
for dir in /nix/store/*/share/qemu /run/current-system/sw/share/qemu; do
if [ -f "$dir/edk2-aarch64-code.fd" ]; then
EFI_CODE="$dir/edk2-aarch64-code.fd"
if [ -f "$dir/edk2-arm-vars.fd" ]; then
EFI_VARS="$dir/edk2-arm-vars.fd"
fi
break
fi
done
# Create a copy of EFI vars if found
if [ -n "$EFI_VARS" ] && [ ! -f "efivars.fd" ]; then
cp "$EFI_VARS" efivars.fd
chmod u+rw efivars.fd
fi
BIOS_ARGS=""
if [ -n "$EFI_CODE" ]; then
# Use pflash method for UEFI boot (not -bios)
BIOS_ARGS="-drive if=pflash,file=$EFI_CODE,format=raw,readonly=on"
if [ -f "efivars.fd" ]; then
BIOS_ARGS="$BIOS_ARGS -drive if=pflash,format=raw,file=efivars.fd"
fi
fi
qemu-system-aarch64 \
-M virt \
-accel hvf \
-cpu host \
-smp 4 \
-m 2G \
-nographic \
-object secret,id=vncsec0,data=vncvnc \
-drive file=hdmistat-test.qcow2,format=qcow2,if=virtio \
-drive file=cloud-init.iso,format=raw,if=virtio \
-netdev user,id=net0,hostfwd=tcp::2223-:22 \
-device virtio-net-pci,netdev=net0 \
-device virtio-gpu-pci \
-display default,show-cursor=on \
-vnc :2,password-secret=vncsec0 \
-serial mon:stdio \
-virtfs local,path="/Users/user/dev/hdmistat",mount_tag=hdmistat,security_model=none,id=hdmistat \
$BIOS_ARGS \
${@}
# Clean up disk image after QEMU exits
echo ""
echo "Cleaning up disk image for fresh start next time..."
rm -f hdmistat-test.qcow2
echo "Disk image removed. Next run will start fresh with cloud-init."