#!/bin/bash set -e DISK="/opt/qemu/alpine.raw" SEED="/opt/qemu/seed.iso" RAM="8G" CORES=4 echo "Starting VM (Q35, 4 cores, CPU max, cache=unsafe)..." qemu-system-x86_64 \ -smp $CORES,sockets=1,cores=$CORES \ -cpu max \ -m "$RAM" \ -drive file="$DISK",format=raw,if=virtio,cache=unsafe,aio=threads,discard=unmap \ -drive file="$SEED",format=raw,if=virtio,cache=unsafe \ -netdev user,id=net0,hostfwd=tcp::2222-:22 \ -device virtio-net,netdev=net0 \ -vga virtio \ -display vnc=:0 \ -daemonize \ -machine pc-q35-7.2,accel=tcg \ -rtc base=localtime,clock=host \ -no-shutdown \ -no-reboot # Start noVNC port 7860 websockify --web=/novnc 7860 localhost:5900 & echo "================================================" echo " ๐Ÿ–ฅ๏ธ VNC: http://localhost:7860/vnc.html" echo " ๐Ÿ” SSH: ssh alpine@localhost -p 2222" echo " ๐Ÿงพ Login: alpine / root" echo "================================================" # Wait SSH for i in {1..30}; do nc -z localhost 2222 && echo "โœ… VM ready!" && break echo "โณ Waiting SSH..." sleep 2 done wait