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

PaganLinux/qemu-boot-installed.sh main

74 linii Raw ← Powrót
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
#!/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"