一劳永逸!OpenWrt 固件刷机前扩容保姆级教程:告别软件包空间不足

很多朋友在刷入 OpenWrt 固件后,发现系统自带的软件包空间(Overlay)只有区区几百 MB。当你想要安装 Docker、各种插件或者搭建小型 NAS 时,空间不足就成了最大的痛点。

虽然可以在安装后通过挂载新分区来扩容,但那不仅操作复杂,还容易导致配置丢失。最优雅的方案,就是在刷机之前,直接把镜像“撑大”。

内容要点概括

  • 适用场景:希望刷机后直接拥有大容量软件包空间。
  • 核心逻辑:解压镜像 -> 物理扩容 -> 逻辑扩容 -> 重新压缩。
  • 工具需求:Linux 系统(Ubuntu/Debian 或现成的 OpenWrt 终端)。

第一步:环境检查与依赖确认

在开始之前,请确保你的 Linux 环境具备以下三件套。你可以通过以下命令确认:

Bash

which gzip   # 压缩/解压
which dd     # 物理填充
which parted # 分区表调整

第二步:详细扩容实操全流程

为了保证操作不影响系统盘,我们将工作目录切换至存储空间较大的 /mnt 下进行。

1. 切换目录与准备

将你下载好的镜像(如 immortalwrt.img.gz)通过 SFTP 上传至 /mnt

Bash

# 切换到挂载目录
cd /mnt

2. 解压缩镜像文件

首先将压缩包还原为原始镜像。

Bash

# 执行后,.gz 文件会消失,生成 .img 原始文件
gzip -d immortalwrt.img.gz

3. 扩展镜像文件的物理大小

我们需要在镜像文件的末尾“粘”上一块空白区域。

Bash

# count=500 表示增加 500MB,如需 1GB 请改为 count=1024
dd if=/dev/zero bs=1M count=500 >> immortalwrt.img

注意:此时文件体积已经变大,但分区表还没“意识到”这部分新空间。

4. 使用分区工具进行逻辑调整

这是最关键的一步,我们需要手动拉伸分区的边界。

Bash

# 使用分区工具打开镜像
parted immortalwrt.img

⚠️ EFI 固件特殊交互提示:

如果你的固件支持 EFI 启动,进入后可能会有警告提示,请按照以下选择:

  • 遇到 OK/Cancel:输入 ok
  • 遇到 Fix/Ignore:务必输入 fix

在交互界面依次执行:

Bash

# 1. 查看当前分区布局,确认 rootfs 分区编号(通常为 2)
print

# 2. 调整分区大小:将第 2 分区扩展至镜像末尾
resizepart 2 100%

# 3. 再次确认分区大小是否已更新
print

# 4. 退出工具
quit

5. 重新压缩镜像(可选但建议)

为了方便下载回本地刷机,建议重新压缩以减小体积。

Bash

gzip immortalwrt.img

为什么要做这一步?(进阶科普)

  1. 官方 vs 镜像定制:官方镜像(OpenWrt 官方或 ImmortalWrt)为了兼容性,默认分区通常极小。直接扩容镜像能保证你安装 Docker 或大型插件时不会报错。
  2. 格式选择
    • Squashfs 格式:扩容后支持“恢复出厂设置”。
    • Ext4 格式:性能略好,但不支持系统重置。
  3. 安全性:在宿主机修改镜像,比在运行中的路由器修改在线分区安全得多,避免了因操作失误导致的“无法启动”死循环。

总结

通过上述解耦的命令,每一步都可以实时监控进度。扩容后的固件在第一次启动时,其 overlay 分区(即你的软件包空间)就会显示为你设定的大小。

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注