一个典型的启动命令

qemu-system-x86_64 \
    -name "ubuntu24.04-debug" \
    -machine pc-q35-10.1,acpi=on \
    -accel kvm \
    -cpu host \
    -m 16G \
    -smp 16 \
    -drive file=./image.snapshot1,format=qcow2,if=virtio,id=virtio-disk0 \
    -serial mon:stdio \
    -nographic \
    -netdev user,id=net0 \
    -device virtio-net-pci,netdev=net0 \
    -object rng-random,id=rng0,filename=/dev/urandom \
    -device virtio-rng-pci,rng=rng0 \
    -s -S \
    -kernel bzImage \
    -initrd initrd.img \
    -append 'root=UUID=f54185df-7b0a-4d5c-8abd-6b098c042f1d ro console=ttyS0 nokaslr'

参数

-s: -gdb tcp::1234的意思 -S: Do not start CPU at startup (you must type ‘c’ in the monitor). 等gdb附加,在gdb里c也行 nokaslr: 不开随机化符号地址会变,怎么重新定位我不会 -serial=mon:stdio: 表示串口和监视器共用stdio console=ttyS0: 串口当控制台

注意

vmlinux是给调试器用的,bzImage才是引导用的