#!/usr/bin/env bash # run-vm.sh — boot de la imagen rootfs en QEMU con KVM. # # Inputs: # $1 — imagen disco (qcow2 o raw) con el rootfs ya parchado # $@ — args adicionales a qemu # # Default: 4 GiB RAM, 2 vCPU, virtio-net, OpenGL para GNOME shell. set -euo pipefail DISK="${1:-}" shift || true if [[ -z "$DISK" || ! -f "$DISK" ]]; then echo "Uso: $0 [args extra de qemu]" >&2 echo "Genera la imagen con scripts/build-rootfs.sh primero." >&2 exit 1 fi # Boot config: redirige init a ente-zero. Usa los flags que el initramfs # de la imagen base entienda — `init=` es universal para GRUB-equivalentes. KERNEL_CMDLINE="root=/dev/vda1 rw console=ttyS0,115200 init=/usr/local/bin/ente-zero RUST_LOG=info" # Config QEMU. -display gtk con OpenGL para GNOME shell. -display none # para CI/headless (el test verifica solamente boot via console). DISPLAY_FLAGS="${ENTE_VM_DISPLAY:--display gtk,gl=on}" exec qemu-system-x86_64 \ -enable-kvm \ -cpu host \ -smp 2 \ -m 4G \ -drive "file=$DISK,if=virtio" \ -netdev user,id=net0 \ -device virtio-net-pci,netdev=net0 \ -serial mon:stdio \ $DISPLAY_FLAGS \ -append "$KERNEL_CMDLINE" \ "$@"