arm - 使用 QEMU 安装 ubi 映像时出现问题
问题描述
我正在尝试使用qemu模拟nand flash,并使用它在虚拟机上安装现有的ubifs映像。
我添加了一个nand设备和一个mtd类型的驱动器,得到以下命令:
$ qemu-system-arm -nographic -M virt -m 64 -device nand,chip_id=0x59 -drive if=mtd,format=raw,file=data.ubi -kernel openwrt-armvirt-32-zImage-initramfs
Warning: Orphaned drive without device: id=mtd0,file=data.ubi,if=mtd,bus=0,unit=0
[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.19.56 (buildbot@builds) (gcc version 7.4.0 (OpenWrt GCC 7.4.0 r10348-577174cf60)) #0 SMP Tue Jun 25 14:46:01 2019
[ 0.000000] CPU: ARMv7 Processor [412fc0f1] revision 1 (ARMv7), cr=30c5387d
[ 0.000000] CPU: div instructions available: patching division code
[ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, PIPT instruction cache
[ 0.000000] OF: fdt: Machine model: linux,dummy-virt
[ 0.000000] Memory policy: Data cache writealloc
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv0.2 detected in firmware.
...
我无法访问data.ubi可能是因为以下警告:
“警告:没有设备的孤立驱动器”
如何正确将ubi映像添加到nand设备?
解决方案
您必须通过参数链接-drive
and :-device
id
qemu-system-arm \
`: [...]` \
-device nand,chip_id=0x59,id=myubiflash \
-drive if=mtd,format=raw,file=data.ubi,id=myubiflash \
`: [...]`
如果您真的仔细阅读了该消息,您会注意到驱动器 ID 默认为mtd0
:
警告:没有设备的孤立驱动器:id=mtd0 ,file=data.ubi,if=mtd,bus=0,unit=0
当然 qemu 不能神奇地猜出你的意思是-device nand
为驱动器定义 。
错误消息就在此处。
编辑
我承认,我对 QEMU 命令行中的语法层也没有完全理解。此外,QEMU 文档也不是最容易阅读的;但是它有这段话:
使用 -blockdev 创建的块驱动程序节点可用于来宾设备,方法是在定义块设备的 -device 参数中为驱动器属性指定其节点名称。
-blockdev
-drive
在这种情况下是同义词。
如果我能正确解释的话,这个的意思是,而不是
-device […],id=foo
,-drive […],id=foo
你应该使用
-device […],drive=foo
,-drive […],id=foo
无法测试此 ATM,但其中任何一个都应该适合您。
推荐阅读
- java - 使用 ViewModel 时如何获取插入实体的 id?
- java - JDK 11:java.lang.NoClassDefFoundError:javax/xml/ws/handler/soap/SOAPHandler
- list - Tcl/Tk:如何追加或插入嵌套列表?
- netbeans-8 - 如何更改深色 L & F 上的突出显示
- python - user32.SwitchDesktop 仅在调试模式下工作 - Python Windows 服务
- c# - 在实体框架的外部列表中使用 .skip() 的最佳方法
- python - NameError 和 SyntaxError 之间的区别
- python - 如何编写一个grafana简单的json到python中的json表查询
- random-forest - H2ORandomForestEstimator 与 min_samples_split?
- android - Android Studio 中未启用翻译编辑器