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 镜像:
- 根文件系统是 squashfs(只读)
- 可写的配置放在
/overlay(一般在一个小分区或 loop 里),通常只有 200~300 MB - 在 VMware 里扩容虚拟磁盘到 20G、40G…… 但系统不会自动使用
扩容的本质:
- 在虚拟磁盘里新建一个大分区(例如
/dev/sda4,20G) - 格式化为 ext4
- 把
/overlay搬到这个分区 - 改
/etc/config/fstab,让系统开机自动挂 - 以后任何安装 / 保存,都写到大分区里
验收标准:
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 建虚拟机
- 新建虚拟机 → 「稍后安装操作系统」
- 系统类型:Other Linux 64-bit
- CPU:1~2 核
- 内存:512 MB ~ 1024 MB
- 网络:桥接(Bridge),不勾选「复制物理网络适配器的连接状态」
- 磁盘:「使用现有虚拟磁盘」→ 指向下载好的
.vmdk
不要急着启动。
1.3 扩大虚拟磁盘容量
关机状态下:
- 虚拟机设置 → 硬盘 → 「扩展」/「增加容量」→ 设为 20 GB
- 保存
物理上磁盘已变大,但 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
依次输入:
n新建p主分区- 分区号回车(一般 3 或 4)
- First sector 回车
- 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/sda4fstype必须是ext4enabled必须是'1'uuid行可以删掉,避免混淆
6.4 vi 小抄
- 方向键到
uuid行 → 按dd删除整行 - 在
config mount下面逐行输入上面 5 行option 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,但调试阶段建议:
- 先
block mount看看报不报错(验证语法) - 再
reboot
9.4 分区没建成 / 没格式化
扩容前务必确认:
fdisk -l # 能看到 /dev/sda4
df -h | grep sda4 # 挂载后能看到
如果 df -h 压根没 /dev/sda4:要么 fdisk 没 w 写入,要么格式化 / 挂载出问题。
10. 完成后的建议
- 登录 LuCI 在「系统 → 存储」确认可用空间已变大
- 常用插件:
opkg update opkg install htop nano # 按需安装所需插件 - 备份配置:
cp /etc/config/fstab /etc/config/fstab.backup - 以后再扩:要么调整
/dev/sda4尾部再 mkfs,要么新建/dev/sda5再迁移
11. 一句话流程
- VMware 扩 vmdk 到 20G
- ImmortalWrt 里
fdisk建/dev/sda4 mkfs.ext4 /dev/sda4- 测试挂载
- 改
/etc/config/fstab(关键 5 行) block mount→rebootdf -h | grep overlay验收
写给未来的自己:哪天又在新机器上装 ImmortalWrt、又只剩 200 多 MB overlay,别再被各种教程绕晕。按这份步骤走,稳稳扩到十几二十 G,不再纠结空间。:)