hi3516ev100 rootfs 挂载后 readonly 问题解决

修改u-boot bootargs 参数
添加 rw 选项
root=/dev/mtdblock2 rw

<think>我们根据用户需求调整配置:ubi0挂载在mtd2上作为rootfs,ubi1挂载在mtd3上作为system卷。 需要修改内核启动参数、文件系统创建和烧录步骤。 步骤: 1. 内核启动参数(bootargs)配置 2. 创建rootfs和system的UBI镜像(注意调整mtd分区号) 3. 烧录到对应MTD分区 4. 系统挂载配置(fstab) 注意:mtd2对应ubi0,mtd3对应ubi1。</think>### 嵌入式Linux系统配置示例:ubi0(rootfs@mtd2) + ubi1(system@mtd3) #### 一、内核启动参数配置(bootargs) ```bash # U-Boot环境变量设置 setenv bootargs \ ubi.mtd=2,2048 \ # mtd2附加到ubi0,保留2048个PEB处理坏块 ubi.mtd=3,1024 \ # mtd3附加到ubi1 root=ubi0:rootfs \ # ubi0的rootfs卷作为根 rootfstype=ubifs \ # 根文件系统类型 rootflags=sync \ # 同步写入保证安全 ubi.block=0,system \ # ubi1的system卷映射为块设备 console=ttyS0,115200n8 saveenv ``` **关键参数说明**: - `ubi.mtd=2,2048`:MTD分区2映射到UBI设备0 - `ubi.mtd=3,1024`:MTD分区3映射到UBI设备1 - `root=ubi0:rootfs`:通过卷名指定根文件系统[^2] --- #### 二、内核配置(确保支持UBI/UBIFS) ```bash # 配置内核选项 make menuconfig ``` **必选配置**: ```ini # Device Drivers ---> # Memory Technology Device (MTD) support ---> # UBI - Unsorted block images ---> [*] Enable UBI [*] MTD devices auto-attach support # 自动附加MTD设备 # File systems ---> # Miscellaneous filesystems ---> [*] UBIFS file system support [*] Extended attributes support [*] Advanced compression options ``` 编译并更新内核: ```bash make zImage && cp arch/arm/boot/zImage /tftp/ ``` --- #### 三、文件系统镜像制作 ##### 1. 创建rootfs镜像(ubi0@mtd2) ```bash # 生成UBIFS镜像 mkfs.ubifs -r /path/to/rootfs -m 2048 -e 124KiB -c 2000 -o rootfs.ubifs # ubinize配置文件 (ubinize_rootfs.cfg) [rootfs] mode=ubi vol_id=0 vol_name=rootfs vol_type=dynamic vol_size=150MiB # 根据实际调整 image=rootfs.ubifs # 生成UBI镜像 ubinize -o rootfs.ubi -m 2048 -p 128KiB ubinize_rootfs.cfg ``` ##### 2. 创建system镜像(ubi1@mtd3) ```bash # 生成UBIFS镜像 mkfs.ubifs -r /path/to/system -m 2048 -e 124KiB -c 1000 -o system.ubifs # ubinize配置文件 (ubinize_system.cfg) [system] mode=ubi vol_id=0 vol_name=system vol_type=static # 静态卷适合只读分区 image=system.ubifs # 生成UBI镜像 ubinize -o system.ubi -m 2048 -p 128KiB ubinize_system.cfg ``` --- #### 四、烧录与挂载 ##### 烧写到NAND: ```bash # 擦除MTD分区 flash_erase /dev/mtd2 0 0 flash_erase /dev/mtd3 0 0 # 烧写镜像 nandwrite -p /dev/mtd2 rootfs.ubi nandwrite -p /dev/mtd3 system.ubi ``` ##### 系统启动后验证: ```bash # 检查MTD分区 cat /proc/mtd # 查看UBI设备 ubiattach -m 2 # 附加mtd2到ubi0 ubiattach -m 3 # 附加mtd3到ubi1 ubinfo -a # 验证挂载点 mount | grep -E "rootfs|system" # 预期输出: # ubi0:rootfs on / type ubifs (rw,noatime,sync) # /dev/ubiblock0_0 on /system type squashfs (ro,noatime) ``` --- #### 五、自动挂载配置(/etc/fstab) ```ini # <file system> <mount point> <type> <options> <dump> <pass> ubi0:rootfs / ubifs defaults,noatime,sync 0 1 /dev/ubiblock0_0 /system squashfs ro,noatime 0 2 ``` --- ### 故障排查指南 1. **UBI附加失败**: ```bash dmesg | grep -i ubi # 查看内核日志 ubiattach -m 2 -d 0 # 手动附加设备 ``` 2. **挂载错误处理**: ```bash # 检查卷是否存在 ls /sys/class/ubi/ubi0/ubi0_0 # 手动挂载测试 mount -t ubifs ubi0:rootfs /mnt ``` 3. **NAND坏块处理**: $$ \text{所需PEB} = \frac{\text{镜像大小}}{\text{PEB大小}} \times 1.2 + \text{保留块} $$ 示例:128MB镜像需至少预留 150 个PEB > **提示**:首次启动时在U-Boot中执行`ubi part rootfs`可预初始化UBI设备[^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值