在qemu中抓取vmcore

107 阅读1分钟

qemu提供了一个dump-guest-memory的命令,可以获取Guest系统的内存镜像:

image.png

演示

还以下边命令启动虚拟机:

sudo qemu-system-aarch64 -M virt \
    -cpu cortex-a57 \
    -nographic \
    -smp 2 \
    -m 2G \
    -kernel ./linux/llvm-build/arch/arm64/boot/Image \
    -append "nokaslr console=ttyAMA0 rootwait root=/dev/vda rw rootfstype=ext4 noinitrd" \
    -drive if=none,file=./buildroot-2024.11-rc3/output/images/rootfs.ext4,id=hd0 \
    -device virtio-blk-device,drive=hd0

触发一个crash:

echo c > /proc/sysrq-trigger

image.png

Ctrl+a c进入qemumonitor模式,输入dump-guest-memory <vmcore-filename>命令,回车:

image.png

然后就可以用crash-utility加载该vmcore文件进行离线分析了。

参考:zhuanlan.zhihu.com/p/673783406