Arm qemu没有';无法识别块设备文件

Arm qemu没有';无法识别块设备文件,arm,virtualization,qemu,kvm,block-device,Arm,Virtualization,Qemu,Kvm,Block Device,我有一个模拟ARM vexpress-a9的QEMU工作图像,我这样运行它: sudo qemu系统arm-m 512M-m vexpress-a9-D qemu.log-D unmp-kernel buildroot-2019.02.5/output/images/zImage-dtb buildroot-2019.02.5/output/images/vexpress-v2p-ca9.dtb-附加“console=ttyam0115200 kgdboc=kbd,ttyam0115200 ip

我有一个模拟ARM vexpress-a9的QEMU工作图像,我这样运行它:

sudo qemu系统arm-m 512M-m vexpress-a9-D qemu.log-D unmp-kernel buildroot-2019.02.5/output/images/zImage-dtb buildroot-2019.02.5/output/images/vexpress-v2p-ca9.dtb-附加“console=ttyam0115200 kgdboc=kbd,ttyam0115200 ip=dhcp nokaslr”-initrd buildroot-2019.02.5/output/images/rootfs.cpio-nographic-net nic-net网桥,br=mybridge-s

我现在想添加一个用于持久存储的硬盘,然后将控制权从基于busybox initrd的rootfs转移到Linux提供的完整版本。所以我把它添加到命令行中

sudo qemu系统arm-m 1024M-m vexpress-a9-D qemu.log-drive if=none,format=raw,file=disk.img-kernel buildroot-2019.02.5/output/images/zImage-dtb buildroot-2019.02.5/output/images/vexpress-v2p-ca9.dtb-追加“console=ttyam0115200kgdboc=kbd,ttyam0115200ip=dhcp nokaslr”-initrd buildroot-2019.02.5/output/images/rootfs.cpio-nographic-net nic-net bridge,br=mybridge-s

当然,我首先创建一个磁盘映像并将其格式化为ext2:
qemu img create disk.img 10G&&mkfs.ext2-F disk.img

从日志消息中,我看到它根本无法检测到这一点。有人能总结一下块设备是如何与Qemu一起工作的吗。我知道较旧的
-hda
已更改为较新的
-drive
选项可以分别结合前端和后端的繁琐规范。但我不知道基本情况以及我为什么会遇到这个问题

我基本上希望
从initrd切换到成熟的Linux rootfs,但这只是第一步

从日志消息中,我看到它根本无法检测到这一点

这是因为您尚未创建连接到该驱动器的QEMU设备

有人能总结一下块设备是如何与Qemu一起工作的吗

前端代表来宾的某种硬件,后端与主机上的备份存储交互。您可以使用
-device
选项创建前端,并使用
-drive
选项阻塞后端。您为驱动器提供一个id,并从设备中引用该id。例如,这就是我如何将virtio blk pci设备连接到我的virt机器上的磁盘映像:
-设备virtio blk pci,drive=vd0-drive file=rootfs.ext2,format=raw,id=vd0

qemu系统arm-设备帮助
将为您提供支持的设备类型列表,
qemu系统arm-设备,帮助
将显示
特定设备类型
属性的详细帮助