🔒 Repository is read-only – file editing is disabled.
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"