You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改QEMU ARM64 Yocto镜像的设备树?

解决Yocto构建QEMU ARM64镜像时自定义设备树的问题

先明确QEMU ARM64实际使用的设备树

你修改foundation-v8.dtsi无效,是因为QEMU ARM64默认采用的是virt平台的设备树(比如virt.dts),而非Foundation v8的设备树——后者针对的是ARM Foundation Model硬件,并非QEMU虚拟机环境。

要确认当前镜像使用的DTB:

  • 进入Yocto构建目录下的tmp/deploy/images/qemuarm64/,找到后缀为.dtb的文件(通常是qemuarm64.dtb)
  • 用设备树编译器反编译查看内容:
    dtc -I dtb -O dts qemuarm64.dtb > dumped.dts
    
    打开dumped.dts就能看到实际对应的源DTS结构,以此为基础修改才会生效。

在Yocto中添加自定义设备树的正确方式

不要直接修改内核源码树里的DTS,Yocto推荐通过自定义Layer管理修改:

  1. 在你的自定义Layer中创建路径:recipes-kernel/linux/linux-yocto/files/
  2. 将修改好的DTS文件(比如基于virt.dts修改的my-virt-custom.dts)放到这个files目录下
  3. 同目录下创建linux-yocto_%.bbappend文件,内容如下:
    FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
    # 替换默认DTB(若要追加则用+=)
    KERNEL_DEVICETREE = "my-virt-custom.dtb"
    
  4. 重新构建内核和镜像:bitbake core-image-minimal(或你使用的镜像名称)

确保QEMU启动时加载自定义DTB

如果Yocto生成的启动脚本未自动使用新DTB,可在conf/local.conf中添加QEMU启动参数:

QEMU_EXTRA_OPTIONS += "-dtb ${DEPLOY_DIR_IMAGE}/my-virt-custom.dtb"

验证修改是否生效

启动QEMU镜像后,在系统内查看/proc/device-tree目录,检查你添加或修改的节点是否存在,比如:

ls /proc/device-tree/my-custom-node

内容的提问来源于stack exchange,提问作者Sauber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 17:05:09