🔒 Repository is read-only – file editing is disabled.

PaganLinux/qemu-install-test.sh main

53 linii Raw ← Powrót
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
#!/bin/bash
# qemu-install-test.sh – test INSTALATORA PaganLinux w QEMU.
# Boot z ISO (BIOS/SeaBIOS) + WIRTUALNY DYSK, na który instalujesz system.
#
# Użycie:
#   ./qemu-install-test.sh [plik-dysku]        # domyślnie /tmp/pagan-install-test.img (20G)
#   SIZE=30G ./qemu-install-test.sh /tmp/test.img
#
# W VM dysk widnieje jako /dev/sda – instalator instaluje NA NIEGO.
# Dysk to zwykły plik na hoście; fizyczne dyski hosta nie są ruszane.
# Po instalacji: uruchom ponownie bez ISO:  qemu-system-x86_64 -enable-kvm -m 4096 \
#   -drive file=/tmp/pagan-install-test.img,format=raw,if=ide \
#   -netdev user,id=n1 -device virtio-net-pci,netdev=n1 \
#   -device qemu-xhci,id=xhci -device usb-tablet,bus=xhci.0 -device virtio-vga -display gtk
# (usb-tablet = mysz absolutna: kursor chodzi za kursorem hosta, bez grabowania.
#  UWAGA: QEMU 11 nie tworzy domyślnego kontrolera USB – bez `qemu-xhci` pada
#  „No 'usb-bus' bus found for device 'usb-tablet'”. W działającej VM można
#  dodać w locie z monitora QEMU: Ctrl+Alt+2 → device_add qemu-xhci,id=xhci →
#  device_add usb-tablet,bus=xhci.0 → Ctrl+Alt+1)
set -u
cd "$(dirname "$0")" || exit 1

ISO="$(ls -t ISO/Pagan-Linux-*.iso 2>/dev/null | head -n1)"
if [ -z "${ISO:-}" ]; then
    echo "Brak ISO (ISO/Pagan-Linux-*.iso) w: $(pwd)"
    exit 1
fi

DISK="${1:-/tmp/pagan-install-test.img}"
SIZE="${SIZE:-20G}"

if [ ! -f "$DISK" ]; then
    echo "Tworzę wirtualny dysk: $DISK (${SIZE}, sparse)..."
    truncate -s "$SIZE" "$DISK" || { echo "Nie udało się utworzyć dysku $DISK"; exit 1; }
fi

echo "ISO : $ISO"
echo "Dysk: $DISK  → w VM jako /dev/sda (instalacja trafi tutaj; dyski hosta nietknięte)"
echo "Sieć: user-mode (gość dostaje DHCP 10.0.2.15, brama/DNS 10.0.2.2/10.0.2.3)"
echo "      w live sprawdź: nmcli device status; ip a; ping -c1 10.0.2.2"
echo "      UWAGA: sieć działa tylko wtedy, gdy w obrazie JEST NetworkManager.service"
echo "      (bez niej live nie podnosi interfejsu – to NIE wina QEMU)."
echo "(log serial: qemu_install.log)"

: > qemu_install.log
exec qemu-system-x86_64 -enable-kvm -m "${MEM:-4096}" -smp 4 -cpu host \
    -boot d \
    -cdrom "$ISO" \
    -drive file="$DISK",format=raw,if=ide \
    -netdev user,id=n1 -device virtio-net-pci,netdev=n1 \
    -device qemu-xhci,id=xhci -device usb-tablet,bus=xhci.0 \
    -device virtio-vga -display gtk \
    -serial file:"$PWD/qemu_install.log"