#!/bin/bash # qemu-boot-installed.sh – ETAP 2: uruchamia ZAINSTALOWANY system z wirtualnego # dysku (bez ISO) i zapisuje PEŁNY log startu jako tekst. # # Po co: gdy system nie wstaje, zrzut ekranu pokazuje tylko ostatnie linie. # Tutaj cały log (jądro + systemd + usługi) trafia do pliku, który można wkleić # albo przejrzeć grepem – od razu widać np. cykl zależności albo nieudane usługi. # # WAŻNE: zainstalowany system loguje na ttyS0 TYLKO wtedy, gdy ISO powstało # z włączoną konsolą szeregową: # sudo ./build-pagan.sh --serial-console # (albo PAGAN_SERIAL_CONSOLE=1 ./build-pagan.sh). Bez tego drugi etap będzie # pusty – logu po prostu nie ma gdzie zapisać. # # Użycie: # ./qemu-boot-installed.sh [/ścieżka/dysku] # MEM=2048 ./qemu-boot-installed.sh /tmp/pagan-install-test.img # # Domyślnie: /tmp/pagan-install-test.img (ten sam dysk, co qemu-install-test.sh). set -u cd "$(dirname "$0")" || exit 1 DISK="${1:-/tmp/pagan-install-test.img}" LOG="$PWD/qemu_boot-installed.log" if [ ! -f "$DISK" ]; then echo "Brak dysku: $DISK" echo "Najpierw zainstaluj system: ./qemu-install-test.sh $DISK" exit 1 fi echo "Dysk (zainstalowany system): $DISK" echo "Log serial: $LOG" echo "Uruchamiam QEMU bez ISO (zamknij okno po teście)..." echo "" : > "$LOG" qemu-system-x86_64 -enable-kvm -m "${MEM:-4096}" -smp 4 -cpu host \ -boot c \ -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:"$LOG" echo "" echo "════════════════════════════════════════════════════════════" echo " Log: $LOG ($(wc -l < "$LOG" 2>/dev/null || echo 0) linii)" echo "════════════════════════════════════════════════════════════" if [ ! -s "$LOG" ]; then cat <<'EOF' PUSTY LOG. Najczęstsze przyczyny: 1. ISO zbudowane bez konsoli szeregowej → zbuduj z: --serial-console 2. System nie doszedł nawet do jądra (problem bootloadera/GRUB-a). 3. QEMU nie wystartowało (patrz komunikat wyżej). EOF exit 0 fi echo "" echo "── Najważniejsze problemy (jeśli są) ──" grep -nE "ordering cycle|Ordering cycle|Could not|Dependency failed|FAILED|Timed out|timed out|not found|No such file|segfault|Kernel panic" "$LOG" \ | tail -30 || true echo "" echo "── Wynik usług (jeśli system doszedł do multi-user) ──" grep -nE "Reached target|Started |Failed to start|systemctl: " "$LOG" | tail -25 || true echo "" echo "── Ostatnie 25 linii ──" tail -25 "$LOG"