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

Yocto构建Raspberry Pi CM3镜像后,如何烧写至eMMC?

嘿,作为刚入门Yocto的新手能搞定Raspberry Pi CM3的自定义镜像已经超棒了!我来帮你理清这些文件的作用,以及怎么把镜像烧写到eMMC里,不用慌~

先搞懂你生成的这些文件都是啥

先给你逐个拆解下这些文件的用途,搞懂了就不会乱:

  • rpi-basic-image-raspberrypi-cm3.rootfs.tar.bz2:根文件系统的压缩包,里面是整个系统的所有文件,解压后可以放到root分区里
  • rpi-basic-image-raspberrypi-cm3.rootfs.ext3:ext3格式的根文件系统镜像文件,是已经打包好的分区镜像,直接就能写到root分区
  • image-kernelversion-machine.bin:Linux内核镜像(一般是zImage或者Image格式),CM3启动时需要加载它
  • rpi-basic-image-raspberrypi-cm3.rootfs.rpi-sdimg:这是最省心的完整镜像!Yocto已经帮你把boot分区、root分区,还有所有启动必需的文件都打包好了,直接烧写就能用
  • bootcode.bin:树莓派的第一阶段启动固件,CM3从eMMC启动时必须要有它
  • .dtb/.dtbo:设备树文件,用来描述CM3的硬件配置(比如GPIO、外设等),启动时内核需要加载对应的设备树
eMMC的分区要求

Raspberry Pi CM3的eMMC只需要两个主分区,非常简单:

  1. Boot分区:必须是FAT32格式,大小建议至少64MB(我一般设128MB足够用),用来存放启动固件、内核、设备树和启动配置文件
  2. Rootfs分区:推荐用ext4格式(ext3也可以,但ext4性能更好),剩下的eMMC空间都给这个分区,用来存放根文件系统
两种烧写方案(新手推荐第一种)

方案1:用完整镜像直接烧写(最省心,新手首选)

这个方案不需要你手动分区或复制文件,Yocto已经帮你搞定一切了:

  1. 把CM3的eMMC挂载到电脑上:可以用CM3IO开发板,或者买个USB转eMMC的适配器,让电脑把CM3识别成一个U盘
  2. 确认eMMC的设备节点:打开终端运行lsblk,找到对应的设备(比如/dev/sdX,注意别把电脑自己的硬盘当成eMMC!可以通过容量和挂载点判断)
  3. 烧写镜像:用dd命令把完整镜像写到eMMC,替换成你的设备节点:
    sudo dd if=rpi-basic-image-raspberrypi-cm3.rootfs.rpi-sdimg of=/dev/sdX bs=4M status=progress
    
  4. 等待烧写完成,然后运行sudo sync确保所有数据都写入eMMC,再拔掉设备就行

方案2:手动分区烧写(适合需要自定义分区大小或内容的情况)

如果你想自己控制分区大小或者修改boot分区里的配置,可以用这个方法:

  1. 同样先把eMMC挂载到电脑,找到设备节点/dev/sdX
  2. 用fdisk工具分区:
    sudo fdisk /dev/sdX
    
    然后按以下步骤操作:
    • 输入o:创建新的DOS分区表
    • 输入n:创建第一个分区(boot分区),选择主分区(p),起始扇区默认,大小输入+128M
    • 输入t:修改分区类型,再输入c把分区类型改成W95 FAT32 (LBA)
    • 输入n:创建第二个分区(root分区),选择主分区(p),起始扇区默认,大小用剩下的全部空间
    • 输入w:保存分区表并退出
  3. 格式化分区:
    # 格式化boot分区为FAT32
    sudo mkfs.vfat /dev/sdX1
    # 格式化root分区为ext4(用ext3的话换成mkfs.ext3)
    sudo mkfs.ext4 /dev/sdX2
    
  4. 挂载分区:
    mkdir -p /tmp/boot /tmp/root
    sudo mount /dev/sdX1 /tmp/boot
    sudo mount /dev/sdX2 /tmp/root
    
  5. 复制boot分区需要的文件:
    把这些文件都复制到/tmp/boot里:
    • bootcode.bin
    • 内核镜像(建议重命名为kernel.img,树莓派默认识别这个名字):sudo cp image-kernelversion-machine.bin /tmp/boot/kernel.img
    • 对应的设备树文件(比如bcm2837-rpi-cm3.dtb)
    • 还要注意复制start.elf、fixup.dat、config.txt和cmdline.txt(这些文件Yocto应该也生成了,一般在你的镜像输出目录里,找不到的话可以从rpi-sdimg里提取)
    • config.txt里至少要指定设备树,比如dtb=bcm2837-rpi-cm3.dtb;cmdline.txt里要指定根分区:root=/dev/mmcblk0p2 rootfstype=ext4 rw
  6. 部署根文件系统:二选一即可
    • 用ext3镜像直接写入:
      sudo dd if=rpi-basic-image-raspberrypi-cm3.rootfs.ext3 of=/dev/sdX2 bs=4M status=progress
      
    • 或者解压tar包:
      sudo tar -xjf rpi-basic-image-raspberrypi-cm3.rootfs.tar.bz2 -C /tmp/root/
      
  7. 卸载分区并同步数据:
    sudo umount /tmp/boot /tmp/root
    sudo sync
    
文件选择总结
  • 如果用完整镜像方案:只需要rpi-basic-image-raspberrypi-cm3.rootfs.rpi-sdimg这一个文件,其他都不用管
  • 如果用手动分区方案:
    • Boot分区需要:bootcode.bin、内核镜像、对应的.dtb、start.elf、fixup.dat、config.txt、cmdline.txt
    • Root分区需要:rpi-basic-image-raspberrypi-cm3.rootfs.ext3 或者 rpi-basic-image-raspberrypi-cm3.rootfs.tar.bz2(二选一)
注意事项
  • 一定要确认eMMC的设备节点,别写错成电脑的硬盘,不然会丢失数据!
  • 烧写前如果eMMC里有重要数据,记得先备份
  • 烧写完成后一定要运行sync,确保数据完全写入再拔掉设备

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:13:44