没有图像的 QEMU 快照?

QEMU snapshot without an image?

我正在使用 VxWorks,这是一种用于嵌入式系统的实时操作系统。他们最近添加了 QEMU 支持,我一直在努力弄清楚。 (我对所有这些技术都很陌生。)我想检查点并重新启动虚拟机,即保存 RAM 和处理器状态,稍后从那个点重新加载它。

QEMU 对此称为“快照”有一些支持。但是,我所见和尝试的一切都需要 qcow2 格式的磁盘映像。但是我的模拟没有磁盘,程序直接加载到RAM中运行.

这是我的 QEMU 命令:

qemu-system-aarch64 -m 4096M -smp 4 -machnie xlnx-zcu102 -device loader,file=~/vxworks_21.03/workspace3/QEMU_helloWorld/default/vxWorks,addr=0x00100000  -nographic  -monitor telnet:127.0.0.1:35163,server,nowait  -serial telnet:127.0.0.1:39251,server  -device loader,file=~/vxworks_21.03/workspace3/vip_xlnx_zynqmp_smp_64/default/xlnx-zcu102-rev-1.1.dtb,addr=0x0f000000 -device loader,addr=0x000ffffc,data=0xd2a1e000,data-len=4 -device loader,addr=0x000ffffc,cpu-num=0   -nic user -nic user -nic user -nic user,id=n0,hostfwd=tcp:127.0.0.1:0-:1534,hostfwd=udp:127.0.0.1:0-:17185

然后我登录到监视器并:

$ telnet 127.0.0.1 35163
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
QEMU 5.2.0 monitor - type 'help' for more information
(qemu) savevm
Error: No block device can accept snapshots

我尝试了很多方法,比如创建一个空磁盘映像,或者 snapshot_blkdev 命令,但到目前为止没有成功。

主机是 RedHat Linux 8.4 运行ning 在 x86 桌面上,来宾是 ARM64。

事实证明,做快照需要磁盘映像,但您不必将其连接到来宾。为此,您将 qemu -drive 参数与 if=none 一起传递。像这样:

-drive if=none,format=qcow2,file=dummy.qcow2

所以这是有效的整个序列:

$ qemu-img create -f qcow2 dummy.qcow2 32M
$ qemu-system-aarch64 -m 4096M -smp 4 -machnie xlnx-zcu102 -device loader,file=vxWorks,addr=0x00100000  -nographic  -monitor telnet:127.0.0.1:35163,server,nowait  -serial telnet:127.0.0.1:39251,server  -device loader,file=xlnx-zcu102-rev-1.1.dtb,addr=0x0f000000 -device loader,addr=0x000ffffc,data=0xd2a1e000,data-len=4 -device loader,addr=0x000ffffc,cpu-num=0   -nic user -nic user -nic user -nic user,id=n0,hostfwd=tcp:127.0.0.1:0-:1534,hostfwd=udp:127.0.0.1:0-:17185 -snapshot -drive if=none,format=qcow2,file=dummy.qcow2

然后在监控终端savevm和loadvm工作:

$ telnet 127.0.0.1 35163
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
QEMU 5.2.0 monitor - type 'help' for more information
(qemu) savevm save1
(qemu) info snapshots
List of snapshots present on all disks:
ID        TAG               VM SIZE                DATE     VM CLOCK     ICOUNT
--        save1             44.3 MiB 2021-06-28 10:08:28 00:00:05.952
(qemu) loadvm save1

此信息来自 Peter Maydell 和他的博客 post:https://translatedcode.wordpress.com/2015/07/06/tricks-for-debugging-qemu-savevm-snapshots/