我正在为aarch64使用qemu模拟器,并希望创建一个外部检查点(或快速转发),以便在我创建检查点时保存所有我需要重新启动系统。 (事实上,我想跳过启动步骤)我只在qemu VM快照和快进上找到了一些东西,但它对模拟器不起作用。 qemu模拟器有没有检查点功能?
答案 0 :(得分:1)
savevm快照应该可以执行您想要的操作。简短的回答是您需要为要保存的快照设置QCOW2磁盘,然后在监视器中可以使用'savevm'命令拍摄快照。然后命令行'-loadvm'选项将允许您从那里恢复。这一切都可以很好地模拟AArch64。
https://translatedcode.wordpress.com/2015/07/06/tricks-for-debugging-qemu-savevm-snapshots/有一个更详细的教程。
答案 1 :(得分:0)
最小例子
Pete的答案对我有用,但让我提供一个完全可重复的例子。
关键步骤是将图像转换为qcow2,如下所述:https://docs.openstack.org/image-guide/convert-images.html
cd buildroot/output.x86_64~/images
qemu-img convert -f raw -O qcow2 rootfs.ext2 rootfs.ext2.qcow2
使用的最终QEMU命令是:
./buildroot/output.x86_64~/host/usr/bin/qemu-system-x86_64 -m 128M -monitor telnet::45454,server,nowait -netdev user,hostfwd=tcp::45455-:45455,id=net0 -smp 1 -M pc -append 'root=/dev/vda nopat nokaslr norandmaps printk.devkmsg=on printk.time=y console=ttyS0' -device edu -device virtio-net-pci,netdev=net0 -drive file=./buildroot/output.x86_64~/images/rootfs.ext2.qcow2,if=virtio,format=qcow2 -kernel ./buildroot/output.x86_64~/images/bzImage -nographic
要测试它,请登录VM,然后运行:
i=0; while true; do echo $i; i=$(($i + 1)); sleep 1; done
然后在另一个shell上打开监视器:
telnet localhost 45454
savevm my_snap_id
计票继续进行。然后,如果我们加载vm:
loadvm my_snap_id
计数可以追溯到我们保存的地方。这表明CPU和内存状态已被恢复。
我们还可以验证磁盘状态是否也已反转。旅客:
echo 0 >f
显示器:
savevm my_snap_id
旅客:
echo 1 >f
显示器:
loadvm my_snap_id
旅客:
cat f
输出为0
。