1,了解和查看系统磁盘空间
这是一个新装的系统,从挂载点截图信息可以看出,/根目录只有300M,并没有占满16G的emmc空间
/dev/root 和 /dev/mmcblk1p2 指的是同一个东西,只是“名字”不同、出现的层面不同。
/dev/root 是一个“符号链接”,不是真实设备节点
在 OpenWrt 里,你可以 ls -l /dev/root 看一下,通常会看到:
text
/dev/root -> mmcblk1p2
或者在某些实现里,/dev/root 是一个由内核 root= 参数解析出来的虚拟/兼容设备名。
它的作用是:
-
内核启动时用 root=/dev/mmcblk1p2 找到根分区;
-
但很多老脚本、mount、df 习惯把根设备显示成 /dev/root;
-
于是系统就保留 /dev/root 作为“根设备”的统一别名。
所以 /dev/root 不是另一块设备,它就是 /dev/mmcblk1p2 的马甲。
两个区域显示的是“不同来源的信息”
上面「已挂载的文件系统」表:
下面「挂载点」配置表:
-
这一栏是 OpenWrt 的 fstab / 挂载配置(/etc/config/fstab)。
-
它显示的是你配置了哪些设备、挂到哪、用什么文件系统。
-
这里写 /dev/mmcblk1p2,是按 UUID 识别出来的真实块设备。
-
这是“配置意图”。
一个在讲“现在实际挂的是谁”,一个在讲“我配置的是谁”。它们指向同一分区,所以不矛盾。
2,开始扩展/根目录容量
直接给 /dev/root 扩容是不可能的,必须分两步走:
-
扩大物理分区(mmcblk1p2)的大小。
-
扩大其上的文件系统(ext4)。
直接扩容当前根分区就行
第一步:确认物理分区确实有 14.6G
fdisk -l /dev/mmcblk1
你会看到 p2 的 End 扇区是 30775295(约 14.6G),但文件系统只用了 300M。
第二步:删除并重建 p2 分区(不会丢数据)
fdisk /dev/mmcblk1
按顺序输入以下命令
p (打印当前分区表,确认 p2 的 Start 扇区是 66048)
d (删除分区)
2 (选择要删除的分区号,即 p2)
n (新建分区)
p (主分区)
2 (分区号还是 2)
66048 (First sector,必须和原来 p2 的 Start 一致,不要回车默认)
(Last sector 直接回车,用满所有剩余空间)
N (如果提示 "Do you want to remove the signature?",选 N)
w (写入并退出)
注意:输入 w 时,fdisk 会提示 GPT PMBR size mismatch,这是正常现象,按 y 确认写入即可。
第三步:安装分区所需的工具包
opkg update
opkg install parted e2fsprogs resize2fs
刷新分区表
partprobe /dev/mmcblk1
如果没有 partprobe,用 blockdev --rereadpt /dev/mmcblk1 也行。
第四步:扩展 ext4 文件系统 这里注意,因为/dev/mmcblk1p2正挂载在/目录使用中,所以无法直接卸载,也无法用 e2fsck 或 resize2fs 对它进行常规操作
resize2fs /dev/mmcblk1p2
会报错 umount /dev/mmcblk1p2 umount: can't unmount /dev/mmcblk1p2: Invalid argument
正确做法:离线扩容(通过 U 盘启动)
现在必须从 U 盘启动系统,在 U 盘环境下对 eMMC 的根分区进行离线扩容。这是最标准、最稳妥的做法。
具体步骤:
-
插入 U 盘:用你前那个能正常启动的 ImmortalWrt U 盘,插到 Wyse 3040 上。
-
从 U 盘启动:开机按 F12,选择从 USB 启动。
-
确认 eMMC 分区未挂载:在 U 盘系统里执行:
mount | grep mmcblk1
如果显示 `mmcblk1p2` 已挂载,先卸载:
umount /dev/mmcblk1p2
- 检查并扩容文件系统:
e2fsck -f /dev/mmcblk1p2
esize2fs /dev/mmcblk1p2
如果扩容成功会提示
The filesystem on /dev/mmcblk1p2 is now XXXXXXX blocks long.
- 关机,拔 U 盘,重启:执行
poweroff,拔掉 U 盘,再开机。系统应该就能从扩容后的 eMMC 启动了。
扩容后遇到的问题解决方案
1,关机重启,他就一直卡着,要usb,不启动系统
插上usb启动盘能顺利进入系统(启动盘中的分区没有被扩容修改,所以能直接读取到启动)

这个问题非常经典:扩容完成后,eMMC 上分区的 UUID 变了,但 GRUB 引导文件里的 root=PARTUUID=... 还在找旧的 UUID,导致系统找不到根分区。
在没插 U 盘时,系统卡住是因为它找不到旧的根分区,只能等待(或者从 USB 引导)。现在需要用 U 盘启动系统作为“救援盘”,去修改 eMMC 里的 GRUB 配置,把路径改成固定的分区名 /dev/mmcblk1p2。
1. 从 U 盘启动进入救援系统
插上你的 U 盘(保证里面有能正常运行的系统),开机按 F12 选择从 USB 启动,进入 U 盘里的 ImmortalWrt。
2. 挂载 eMMC 的引导分区
eMMC 的引导分区是 /dev/mmcblk1p1,需要把它挂载到 U 盘系统的某个临时目录:
# 创建临时挂载点
mkdir -p /mnt/emmc_boot
# 挂载 eMMC 的引导分区
mount /dev/mmcblk1p1 /mnt/emmc_boot
3. 修改 GRUB 配置文件
用 vi 编辑 eMMC 里的 grub.cfg:
vi /mnt/emmc_boot/grub/grub.cfg
- 找到以 `linux` 开头的那一行。
- 按 `i` 键进入编辑模式。
- 把 `root=PARTUUID=xxxxx` 这一段,**改成 `root=/dev/mmcblk1p2`**(这是物理分区路径,扩容后它不会变,比 UUID 更稳定)。
- **顺便确认一下**:如果这行里还有 `console=ttyS0,115200n8`,也把它删掉(保留 `console=tty1`)。
- 按 `Esc` 键,输入 `:wq` 保存退出。
4. 卸载分区并关机
umount /mnt/emmc_boot
poweroff
5. 拔掉 U 盘,重新开机
现在 eMMC 系统已经修改完毕,拔掉 U 盘,再开机,系统应该就能直接从 eMMC 启动了,不再需要插 U 盘。
最终扩容效果图
