Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arm 使用QEMU装载ubi映像时出现问题_Arm_Qemu_Ubifs - Fatal编程技术网

Arm 使用QEMU装载ubi映像时出现问题

Arm 使用QEMU装载ubi映像时出现问题,arm,qemu,ubifs,Arm,Qemu,Ubifs,我试图用qemu模拟nand闪存,并使用它在虚拟机上挂载现有的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

我试图用qemu模拟nand闪存,并使用它在虚拟机上挂载现有的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设备?

您必须通过
id
参数链接
-drive
-device

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无法神奇地猜到您打算为驱动器定义
-设备nand

错误信息就在这里


编辑 我承认,我对QEMU命令行中的语法层也没有很好的理解。 而且,这本书不是最容易阅读的;然而,它有这样一段话:

通过在定义块设备的-device参数中为drive属性指定其节点名,使用-blockdev创建的块驱动程序节点可用于来宾设备

-blockdev
在此上下文中是
-drive
的同义词

如果我能正确解释的话,这句话的意思是

  • -device[…],id=foo
    -drive[…],id=foo
你应该用

  • -device[…],drive=foo
    -drive[…],id=foo

无法测试此ATM,但这两种方法中的任何一种都可以让它为您工作。

很好!它解决了这个问题。但是,现在它给了我另一个关于机器类型支持的错误:
qemu系统arm:-drive if=mtd,format=raw,file=100000.uubi,id=myubiflash:machine type不支持if=mtd,bus=0,unit=0
对此有什么想法吗?@PRVS尝试运行
qemu系统arm-machine help
并选择您模拟的arm板<代码>-机器病毒可能是一个不错的选择,谢谢。我的问题是,可以模拟的arm不支持NAND,因此,我很难找到解决方案。您想做什么/调试?如果您只需要文件,可以在x86主机上循环装载ubi并与qemu系统共享。