我正在为 aarch64 使用 qemu 模拟器,并希望创建一个外部检查点(或快速转发)以保存从创建检查点时重新启动系统所需的所有内容。(其实我是想跳过开机步骤)我只在qemu VM快照和快进上发现了一些东西,但对模拟器不起作用。qemu 模拟器有检查点功能吗?
2086 次
2 回答
2
最小的例子
彼得的回答对我有用,但让我提供一个完全可重现的例子。
关键步骤是将图像转换为 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
计数继续。然后,如果我们加载虚拟机:
loadvm my_snap_id
计数回到我们保存的地方。这表明 CPU 和内存状态已恢复。
我们还可以验证磁盘状态是否也反转了。来宾:
echo 0 >f
监视器:
savevm my_snap_id
来宾:
echo 1 >f
监视器:
loadvm my_snap_id
来宾:
cat f
输出是0
.
于 2018-02-10T18:50:16.037 回答
2
savevm 快照应该做你想做的事。简短的回答是,您需要为要保存的快照设置一个 QCOW2 磁盘,然后在监视器中您可以使用“savevm”命令拍摄快照。然后命令行“-loadvm”选项将让您从那里恢复。这一切在模拟 AArch64 时都可以正常工作。
https://translatedcode.wordpress.com/2015/07/06/tricks-for-debugging-qemu-savevm-snapshots/有更详细的教程。
于 2016-10-31T17:58:53.653 回答