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

添加/data分区至Yocto镜像wks文件后无登录提示问题排查

问题原因分析

你遇到的问题核心是MBR分区表的主分区数量限制:MBR格式最多支持4个主分区,当你添加第5个data分区时,wic工具会自动将原第4个分区(root1)转为扩展分区,再把root1和data作为逻辑分区放入扩展分区内,也就是启动日志里的<p5 p6>。这直接导致原root1的分区编号从mmcblk0p4变成了mmcblk0p5,但系统启动时仍按原有配置尝试挂载mmcblk0p4——而这个分区现在是不具备文件系统的扩展分区,系统无法正常加载根文件系统,自然不会出现登录提示。

解决办法
  1. 改用GPT分区表(推荐)
    GPT分区表没有主分区数量限制,能彻底避免分区编号混乱。在你的wks文件开头添加分区表类型声明即可:

    parted --gpt --align 1024
    

    保留原有所有分区配置,生成的镜像中每个分区都会是独立主分区,编号不会异常变动。

  2. 调整MBR分区布局
    如果必须使用MBR,手动规划分区结构,将其中一个主分区改为扩展分区,把root1和data作为逻辑分区放入:

    part --source bootimg-partition --ondisk mmcblk --fstype=vfat --label boot --active --align 1024 --size 16
    part --source rawcopy --sourceparams="file=u-boot-with-spl.sfp" --ondisk mmcblk --system-id=a2 --align 1024 --fixed-size 1M
    part --source rootfs --ondisk mmcblk --fstype=ext4 --label root0 --align 1024
    # 创建扩展分区,用于容纳root1和data
    part --ondisk mmcblk --fstype=extended --align 1024
    # 逻辑分区root1
    part --source rootfs --ondisk mmcblk --fstype=ext4 --label root1 --align 1024 --inside-extended
    # 逻辑分区data
    part /data --ondisk mmcblk --fstype=ext4 --label data --align 1024 --size 16M --inside-extended
    
  3. 用分区标签替代设备编号
    不管使用哪种分区表,都建议在启动参数和fstab中用分区标签(LABEL)指定分区,而非固定设备编号:

    • 在u-boot的bootargs里设置root=LABEL=root1,替换原有的root=/dev/mmcblk0p4
    • 在根文件系统的/etc/fstab中,data分区的挂载项用LABEL=data替代/dev/mmcblk0pX
      这样即便分区编号变化,系统也能通过标签定位到正确分区。
验证步骤

生成镜像后,用fdisk -l或blkid命令查看分区信息,确认:

  • root0/root1分区的标签与设备编号对应正确
  • data分区正常存在且可正常挂载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 20:50:10