58 lines
1.5 KiB
Bash
Executable file
58 lines
1.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Node01 VM Launch Script
|
|
# Connects to multicast socket network 230.0.0.1:1234
|
|
# Boots via PXE
|
|
|
|
set -euo pipefail
|
|
|
|
MCAST_ADDR="230.0.0.1:1234"
|
|
MAC_ADDR="52:54:00:00:01:01"
|
|
DISK="node01.qcow2"
|
|
VNC_DISPLAY=":1"
|
|
SERIAL_LOG="node01-serial.log"
|
|
|
|
# Check if disk exists
|
|
if [ ! -f "$DISK" ]; then
|
|
echo "Error: Disk image $DISK not found"
|
|
exit 1
|
|
fi
|
|
|
|
# Check if already running
|
|
if pgrep -f "qemu-system-x86_64.*$DISK" > /dev/null; then
|
|
echo "Node01 VM is already running (PID: $(pgrep -f "qemu-system-x86_64.*$DISK"))"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Starting Node01 VM..."
|
|
echo " MAC: $MAC_ADDR"
|
|
echo " Multicast: $MCAST_ADDR"
|
|
echo " VNC: $VNC_DISPLAY (port 5901)"
|
|
echo " Serial log: $SERIAL_LOG"
|
|
echo " Boot: PXE (network boot enabled)"
|
|
|
|
# Launch QEMU with:
|
|
# - 8 vCPUs, 16GB RAM (per T036 spec)
|
|
# - Multicast socket networking
|
|
# - VNC display
|
|
# - Serial console logging
|
|
# - PXE boot enabled via iPXE ROM
|
|
|
|
exec qemu-system-x86_64 \
|
|
-name node01 \
|
|
-machine type=q35,accel=kvm \
|
|
-cpu host \
|
|
-smp 8 \
|
|
-m 16G \
|
|
-drive file="$DISK",if=virtio,format=qcow2 \
|
|
-netdev socket,mcast="$MCAST_ADDR",id=mcast0 \
|
|
-device virtio-net-pci,netdev=mcast0,mac="$MAC_ADDR" \
|
|
-boot order=n \
|
|
-vnc "$VNC_DISPLAY" \
|
|
-serial telnet:localhost:4441,server,nowait \
|
|
-daemonize \
|
|
-pidfile node01.pid
|
|
|
|
echo "Node01 VM started (PID: $(cat node01.pid))"
|
|
echo "Connect via VNC: vncviewer localhost:5901"
|
|
echo "Connect via Telnet: telnet localhost 4441"
|
|
echo "Serial log: tail -f $SERIAL_LOG"
|