100ASK T113S3 Pro Buildroot 根文件系统适配
本章目标
生成能够从 ubi0:rootfs 启动的 Buildroot 系统,并同时提供构建 Linux RAM installer 所需的 BusyBox、MTD 和 UBI 工具。
输入文件
configs/dshanpi_t113s3pro_nand_defconfig
board/dshanpi/t113s3pro/linux.fragment
board/dshanpi/t113s3pro/rootfs_overlay/
board/dshanpi/t113s3pro/make-fel-installer-initramfs.sh
board/dshanpi/t113s3pro/installer-init
Buildroot 板级配置
架构和系统身份
BR2_arm=y
BR2_cortex_a7=y
BR2_ARM_FPU_VFPV4=y
BR2_TARGET_GENERIC_HOSTNAME="t113s3pro-mainline"
BR2_TARGET_GENERIC_GETTY_PORT="ttyS3"
根文件系统格式
BR2_TARGET_ROOTFS_UBIFS=y
BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f000
BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x800
BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=1900
BR2_TARGET_ROOTFS_UBIFS_RT_ZLIB=y
BR2_TARGET_ROOTFS_UBI=y
BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x20000
BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048
参数对应已验证 NAND:
| 参数 | 值 |
|---|---|
| 最小 I/O | 2048 字节 |
| PEB | 131072 字节 |
| LEB | 126976 字节 |
| 子页 | 2048 字节 |
| 最大 LEB | 1900 |
| 压缩 | zlib |
更换 NAND 后必须重新计算,不得只修改 DTS 容量。
用户空间组件
常规系统启用:
- BusyBox;
- eudev 动态设备节点;
mtd-utils;ethtool;iproute2;- UART3 getty;
- DHCP 网络配置。
rootfs overlay 中:
/init转交/sbin/init,兼容经过验证的启动参数;/etc/profile.d/mainline-release.sh登录时输出主线系统身份和uname;/etc/network/interfaces启用 loopback 和eth0DHCP。
生成 UBIFS 和 UBI
Buildroot 先生成:
out/mainline/t113s3pro/images/rootfs.ubifs
封装脚本再使用 ubinize 创建仅包含一个动态卷的 sys.ubi:
[rootfs]
mode=ubi
image=rootfs.ubifs
vol_id=0
vol_type=dynamic
vol_name=rootfs
vol_flags=autoresize
因此三个对象必须区分:
MTD 分区名:sys
UBI 设备: ubi0
UBI 卷名: rootfs
构建 RAM installer 用户空间
make-fel-installer-initramfs.sh 从 Buildroot target 中复制:
- BusyBox 及必要 applet;
- glibc loader、libc 和 libresolv;
flash_erase、nandwrite、nanddump;ubiformat、ubiattach、ubidetach、ubinfo;- 板级
installer-init; - payload 地址、长度和 SHA-256。
生成结果为:
fel-base-initramfs.cpio.gz
它是独立 RAM 环境,不是最终 UBIFS rootfs。
编译验证
test -s out/mainline/t113s3pro/images/rootfs.ubifs
test -s out/t113s3pro-mainline-fel/sys.ubi
test -s out/t113s3pro-mainline-fel/fel-base-initramfs.cpio.gz
test -x out/mainline/t113s3pro/target/sbin/init
test -x out/mainline/t113s3pro/target/usr/sbin/ubiformat
test -x out/mainline/t113s3pro/target/usr/sbin/nandwrite
板端启动后检查:
mount | grep 'ubi0:rootfs'
ubinfo -a
test -x /sbin/init
cat /etc/hostname
预期输出
DshanPi T113S3 Pro - mainline Buildroot
t113s3pro-mainline login:
失败处理
| 现象 | 优先检查 |
|---|---|
找不到 /sbin/init | rootfs overlay、Buildroot init 选择 |
没有 ttyS3 登录 | getty port、UART3 console、设备节点 |
| 安装器缺少命令 | Buildroot BR2_PACKAGE_MTD 子选项 |
ubiformat 失败 | PEB、页大小、OOB/ECC 和坏块状态 |
| UBIFS 挂载失败 | LEB、min I/O、卷名和内核 UBIFS 配置 |
回滚和证据
根文件系统生成失败不会写板。保存 Buildroot .config、rootfs.ubifs 和 sys.ubi 的哈希。已经写入后若 /sbin/init 检查失败,安装器会进入 UART3 emergency shell,不应继续自动重启。