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

PaganLinux/qemu-test-klog.sh main

53 linii Raw ← Powrót
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"