ImmortalWrt x86 (VMware) 存储扩容超详细实战

在 Windows 上用 VMware 跑 ImmortalWrt squashfs 镜像,把只有两三百 MB 的可写空间扩成几十 G 的 ext4 overlay。完整踩坑记录。

ImmortalWrt x86(VMware)存储扩容超详细实战教程

适用场景

  • 设备:x86 软路由 / mini PC,在 Windows 上用 VMware Workstation 跑 ImmortalWrt
  • 镜像:immortalwrt-*x86-64-generic-squashfs-combined.vmdk(带 squashfs-combined 字样)
  • 目标:把默认只有两三百 MB 的可写空间,扩成 几十 G 的 ext4 overlay,重启不丢配置

0. 整体思路

默认 x86 ImmortalWrt squashfs 镜像:

  1. 根文件系统是 squashfs(只读)
  2. 可写的配置放在 /overlay(一般在一个小分区或 loop 里),通常只有 200~300 MB
  3. 在 VMware 里扩容虚拟磁盘到 20G、40G…… 但系统不会自动使用

扩容的本质:

  1. 在虚拟磁盘里新建一个大分区(例如 /dev/sda4,20G)
  2. 格式化为 ext4
  3. /overlay 搬到这个分区
  4. /etc/config/fstab,让系统开机自动挂
  5. 以后任何安装 / 保存,都写到大分区里

验收标准

df -h | grep overlay

看到:

/dev/sda4          19.2G   2.3M   18.2G   0%  /overlay
overlayfs:/overlay 19.2G   2.3M   18.2G   0%  /

就说明 /overlay 用上了 /dev/sda4,根目录 / 通过 overlayfs 合并了大空间。

1. 准备阶段

1.1 下载镜像

使用 squashfs-combined.vmdk,例如:

immortalwrt-24.10.4-x86-64-generic-squashfs-combined.vmdk

不要选 ext4-combined。这里专门教 squashfs 扩容到 ext4 overlay。

1.2 VMware 建虚拟机

  1. 新建虚拟机 → 「稍后安装操作系统」
  2. 系统类型:Other Linux 64-bit
  3. CPU:1~2 核
  4. 内存:512 MB ~ 1024 MB
  5. 网络:桥接(Bridge),不勾选「复制物理网络适配器的连接状态」
  6. 磁盘:「使用现有虚拟磁盘」→ 指向下载好的 .vmdk

不要急着启动。

1.3 扩大虚拟磁盘容量

关机状态下:

  1. 虚拟机设置 → 硬盘 → 「扩展」/「增加容量」→ 设为 20 GB
  2. 保存

物理上磁盘已变大,但 ImmortalWrt 内部还不知道。

2. 查看磁盘结构

启动虚拟机进入 ImmortalWrt(默认 root 无密码):

fdisk -l

典型输出:

Disk /dev/sda: 20 GiB, ...
Device     Boot  Start    End Sectors  Size Id Type
/dev/sda1  *       512  66047   65536   32M 83 Linux
/dev/sda2        66560 680959  614400  300M 83 Linux

后面一大段空间是空白,要在里面建新分区(sda4)。

3. 创建 /dev/sda4

fdisk /dev/sda

依次输入:

  1. n 新建
  2. p 主分区
  3. 分区号回车(一般 3 或 4)
  4. First sector 回车
  5. Last sector 回车(吃掉全部剩余)

看到 Created a new partition 4 of type 'Linux' and of size 19.7 GiB. 后输入 w 写入退出。

再次 fdisk -l 应能看到 /dev/sda4 19.7G

4. 格式化为 ext4

mkfs.ext4 /dev/sda4

输出 Writing superblocks and filesystem accounting information: done 即成功。

5. 测试挂载

mkdir -p /mnt/sda4
mount /dev/sda4 /mnt/sda4
df -h | grep sda4

正常看到:

/dev/sda4       19.2G  2.0M  18.2G   0%  /mnt/sda4

此时 sda4 可用,但还没参与 overlay。

6. 配置 /etc/config/fstab(关键)

6.1 ImmortalWrt 用的是 UCI fstab

真正生效的是 /etc/config/fstab(UCI 配置),不是传统的 /etc/fstab

vi /etc/config/fstab

6.2 初始内容

config global
    option anon_swap '0'
    option anon_mount '1'
    option auto_swap '1'
    option auto_mount '1'
    option delay_root '5'
    option check_fs '0'

config mount
    option target '/overlay'
    option uuid 'xxxx-xxxx-xxxx-xxxx'
    option enabled '0'

6.3 改成使用 /dev/sda4

target '/overlay' 的那块改成:

config mount
    option target '/overlay'
    option device '/dev/sda4'
    option fstype 'ext4'
    option options 'rw,sync'
    option enabled '1'

关键点

  • device 必须是 /dev/sda4
  • fstype 必须是 ext4
  • enabled 必须是 '1'
  • uuid 行可以删掉,避免混淆

6.4 vi 小抄

  1. 方向键到 uuid 行 → 按 dd 删除整行
  2. config mount 下面逐行输入上面 5 行 option
  3. ESC:wq 回车

7. 让配置生效 & 重启

block mount     # 验证语法,不报错就 OK
reboot

8. 验收

df -h | grep overlay

看到:

/dev/sda4          19.2G   2.3M   18.2G   0%  /overlay
overlayfs:/overlay 19.2G   2.3M   18.2G   0%  /

🎉 扩容彻底成功!以后安装任何插件、保存任何配置,都是写入 /dev/sda4 这块大空间。

9. 常见坑

9.1 只改 /etc/fstab,不改 /etc/config/fstab

ImmortalWrt 认的是 UCI 的 /etc/config/fstab。传统的 /etc/fstab 会被忽略。

9.2 字段拼写错误

option fstype 'ext4'     ✅
option enabled '1'       ✅

option fstyle 'ext4'     ❌ 少一个 t
option enable '1'        ❌ 少一个 d

写错后系统直接忽略字段或整个 config mount 项,扩容失败。

9.3 忘了 block mount 就直接 reboot

重启确实会重读 /etc/config/fstab,但调试阶段建议:

  1. block mount 看看报不报错(验证语法)
  2. reboot

9.4 分区没建成 / 没格式化

扩容前务必确认:

fdisk -l                  # 能看到 /dev/sda4
df -h | grep sda4         # 挂载后能看到

如果 df -h 压根没 /dev/sda4:要么 fdisk 没 w 写入,要么格式化 / 挂载出问题。

10. 完成后的建议

  1. 登录 LuCI 在「系统 → 存储」确认可用空间已变大
  2. 常用插件:
    opkg update
    opkg install htop nano
    # 按需安装所需插件
    
  3. 备份配置:cp /etc/config/fstab /etc/config/fstab.backup
  4. 以后再扩:要么调整 /dev/sda4 尾部再 mkfs,要么新建 /dev/sda5 再迁移

11. 一句话流程

  1. VMware 扩 vmdk 到 20G
  2. ImmortalWrt 里 fdisk/dev/sda4
  3. mkfs.ext4 /dev/sda4
  4. 测试挂载
  5. /etc/config/fstab(关键 5 行)
  6. block mountreboot
  7. df -h | grep overlay 验收

写给未来的自己:哪天又在新机器上装 ImmortalWrt、又只剩 200 多 MB overlay,别再被各种教程绕晕。按这份步骤走,稳稳扩到十几二十 G,不再纠结空间。:)