T113 UBIFS 系统cat /proc/mtd的算出来的rootfs 是对的,df-h显示的空间是错的,怎么解决
时间: 2025-07-21 21:59:41 浏览: 3
<think>我们面对的是UBIFS文件系统,在/proc/mtd中显示的分区大小正确,但df -h显示的空间错误。这通常是因为UBIFS的卷大小没有更新,或者UBI卷没有重新调整大小。
解决步骤:
1. 确认当前UBI卷的状态
2. 调整UBI卷的大小
3. 重新挂载或刷新文件系统
具体操作如下:</think>### 解决 T113 UBIFS 分区大小显示不一致问题
当 `cat /proc/mtd` 显示分区大小正确(如 256MB),但 `df -h` 显示错误(如仍为 128MB)时,这是典型的 **UBI 卷大小未更新** 问题。以下是针对 UBIFS 的完整解决方案:
---
#### **步骤 1:确认 UBI 卷状态**
```bash
ubinfo -a # 查看所有 UBI 设备及卷信息
```
- 检查 `Size` 是否匹配新 Flash 容量
- 记录目标卷编号(如 `ubi0_0`)
---
#### **步骤 2:调整 UBI 卷大小**
```bash
# 卸载目标卷(根文件系统需在救援模式操作)
umount /
# 删除并重建卷(保留LEB/PEB参数)
ubirmvol /dev/ubi0 -n 0 # 删除卷0
ubimkvol /dev/ubi0 -N rootfs -m -s 256MiB # 重建卷(-m自动占满空间)
```
> **关键参数**:
> - `-m` 让卷自动占用所有可用空间
> - `-s` 指定最小容量(可选)
---
#### **步骤 3:刷新文件系统**
1. **重建 UBIFS**:
```bash
mkfs.ubifs -r /mnt/backup -o rootfs.ubifs -m 2048 -e 126976 -c 2048
ubiupdatevol /dev/ubi0_0 rootfs.ubifs
```
2. **或直接挂载**(若数据已备份):
```bash
mount -t ubifs ubi0:rootfs / # 强制内核识别新尺寸
```
---
#### **步骤 4:内核级刷新(必要时)**
```bash
# 解除 UBI 设备关联
ubidetach -p /dev/mtdX # X为rootfs的MTD编号
# 重新附加并刷新
ubiformat /dev/mtdX # 格式化MTD
ubiattach -m X # 重新关联
```
---
#### **验证命令**
```bash
# 确认卷大小
ubinfo /dev/ubi0_0 | grep Size
# 检查文件系统容量
df -h / | awk 'NR==2 {print $2}'
# 查看内核日志
dmesg | grep ubi
```
> **注意**:
> - 操作前**必须备份数据**(`ubiupdatevol -t` 可创建临时快照)
> - `mkfs.ubifs` 参数需与原系统一致(`-m` 页大小, `-e` 可擦除块大小)
> - 若为只读系统,需在 U-Boot 阶段更新 UBI 配置
阅读全文
相关推荐

















