首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QEMU安装ubi映像时遇到的问题

使用QEMU安装ubi映像时遇到的问题
EN

Stack Overflow用户
提问于 2019-07-01 17:58:33
回答 1查看 3.4K关注 0票数 1

我试图用qemu来模拟nand闪存,并使用它在虚拟机上挂载一个存在的ubifs映像。

我添加了一个nand设备和一个mtd类型的驱动器,结果得到以下命令:

代码语言:javascript
复制
$ 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设备中?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-02 09:14:42

您必须通过一个-drive参数链接-deviceid

代码语言:javascript
复制
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

不能测试这个自动取款机,但是任何一个都可以让它对你起作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56840319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档