QEMU使用vexpress-a9启动报No 'PCI' bus found for device 'nvme'错误求助
问题根因
- 你选择的
vexpress-a9模拟机型对应的硬件本身未搭载PCI/PCIe总线控制器,即便QEMU全局支持PCI接口的NVMe设备,也无法在无对应总线的机型上挂载该类设备,这是报错的核心原因。 - 额外的镜像格式警告是因为未给qcow2格式的磁盘显式指定格式参数,QEMU默认探测为raw格式触发的权限限制提示。
解决方案
场景1:可更换模拟机型(推荐)
直接选用支持PCIe总线的ARM virt 机型,该机型是QEMU专为虚拟化场景设计的ARM平台,原生支持NVMe设备。修改后的启动命令参考:
qemu-system-arm -nographic -M virt -m 1024M -kernel arch/arm/boot/zImage -append "rdinit=/linuxrc console=ttyAMA0 loglevel=8" -device nvme,drive=nvme0,serial=deadbeaf1,num_queues=8 -drive file=disk.qcow2,if=none,id=nvme0,format=qcow2
注意如果你的内核是专为vexpress-a9编译的,需要重新编译适配virt平台的内核后再使用该命令。
场景2:必须保留vexpress-a9机型
放弃使用NVMe设备,更换为该机型支持的存储介质即可,比如virtio-blk块设备、SD卡。以下是替换为virtio-blk的启动命令片段,替换原有NVMe相关参数即可:
-device virtio-blk-device,drive=blk0 -drive file=disk.qcow2,if=none,id=blk0,format=qcow2
内容的提问来源于stack exchange,提问作者geshifei
相关产品推荐
相关产品推荐

