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