一个典型的启动命令
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才是引导用的