#!/bin/bash # qemu-test-klog.sh – test ISO z PEŁNYM logiem rozruchu (serial ttyS0). # Podaje QEMU kernel+initrd wprost z ISO i dopisuje console=ttyS0 (-append), # więc kernel/systemd piszą cały boot do qemu_boot.log (niezależnie od tego, # czy grub w ISO ma console= w cmdline). 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 echo "ISO: $ISO" MNT=/tmp/pagan-iso mkdir -p "$MNT" # Stary mount ISO (loop) potrafi wisieć po przebudowie – pliki w nim to wtedy # initramfs/kernel ze STAREGO obrazu (często uszkodzony initramfs → panic # „Initramfs unpacking failed: uncompression error”). ZAWSZE odmontuj i zamontuj # świeżo wybrany (najnowszy) ISO. if mountpoint -q "$MNT"; then echo "Odświeżam montowanie ISO (usuwam stary mount)..." sudo umount "$MNT" 2>/dev/null || sudo umount -l "$MNT" 2>/dev/null || true fi sudo mount -o loop "$ISO" "$MNT" || { echo "mount ISO nieudany (sudo?)"; exit 1; } KERNEL="$(ls "$MNT"/boot/vmlinuz-* 2>/dev/null | head -n1)" INITRD="$(ls "$MNT"/boot/initramfs* 2>/dev/null | head -n1)" if [ -z "${KERNEL:-}" ] || [ -z "${INITRD:-}" ]; then echo "Nie znalazłem kernel/initrd w $MNT/boot:" ls -l "$MNT/boot" 2>/dev/null exit 1 fi echo "kernel: $KERNEL" echo "initrd: $INITRD" : > qemu_boot.log qemu-system-x86_64 -enable-kvm -m 4096 -smp 4 -cpu host \ -cdrom "$ISO" \ -kernel "$KERNEL" \ -initrd "$INITRD" \ -append "pagan.live rw console=ttyS0,115200 systemd.journald.forward_to_console=yes" \ -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_boot.log" 2>&1 | tee "$PWD/qemu_run.log" echo "" echo "=== Logi ===" echo "qemu_boot.log: $(wc -l < qemu_boot.log 2>/dev/null || echo 0) linii" echo "qemu_run.log: $(wc -l < qemu_run.log 2>/dev/null || echo 0) linii"