OpenWrt 24.10固件安装前扩容 overlay 扩容教程

我们使用 OpenWrt 的过程中,经常会遇到软件包可用空间不足的问题,这就需要对系统进行扩容来增加存储空间,以便安装更多的软件包和功能。

各位大佬编译的固件往往分区比较小,但是在我们使用 OpenWrt 的过程中,经常会遇到软件包可用空间不足的问题,这就需要对系统进行扩容来增加存储空间,以便安装更多的软件包和功能。


分区的扩容有两种方式,分别是:

  • 固件安装后扩容
  • 固件安装前扩容

固件安装后扩容

如果大家 Openwrt 已经安装好了,而且不打算重新安装,在这种模式下进行扩容可以参考eSir大佬的视频,讲得非常清楚,视频链接:https://www.youtube.com/watch?v=YwbwzuXKNlg


固件安装前扩容

今天跟大家分享的是另外一种方式,就是在安装之前进行扩容,扩容好再进行安装,这种方式的优点是操作简单,也没有搞崩系统的风险,几行命令即可处理好,所需要的前提条件是一台Linux系统的电脑,可以是本地虚拟机,也可以是远程的VPS。

下载所需要的固件

OpenWrt 官方固件下载地址 https://firmware-selector.openwrt.org

固件下载好之后我们将它改个名字,方便后续操作,这里我把它改为 OpenWrt.img.gz

将固件上传到Linux

先用 Finalshell 连接到虚拟机,演示用的是一台 Ubuntu 系统的 VPS,然后把 OpenWrt.img.gz 文件上传到当前目录,我是用 root 用户登录的,就直接上传到 root 目录了,等下弄完可以再删掉。

使用 ls 命令一下看看是否能看到它:

先解压缩,执行命令:

gzip -d OpenWrt.img.gz

这行命令的意思是解压缩这个文件,完成后不保留源文件。

解压完成后,我们在 Finalshell 刷新一下当前目录,看看是否有解压后的文件:


扩容 OpenWrt

执行下面这行命令:

dd if=/dev/zero bs=1G count=2 >> OpenWrt.img

这行命令的意思是:对 OpenWrt.img 这个文件使用追加模式写入 2G 的空数据。


挂载镜像到loop设备

losetup -f OpenWrt.img

1.查看挂载的查看挂载的设备的名称,使用losetup命令

losetup

可以看到,挂载的img镜像名称是loop0,完整路径是/dev/loop0

2.使用lsblk命令,可以看到loop0的空间大小是2.1G

lsblk

3.读取分区信息, 加载到系统,使用 partx 命令

partx -a /dev/loop0

使用lsblk查看加载的结果

lsblk

可以看到,loop0下面,有3个分区,一个是loop0p1,一个是loop0p2,其中第二个分区是104M,我们就是要把这个给扩容。


使用fidsk进行重新分区扩容

1.输入下面命令:

fdisk /dev/loop0

efi的固件,还需要刻录UUID编号,输入 i 查看分区信息,记录UUID的编号,后面用到,非efi固件忽略这一步

删除/dev/loop0p2分区后新建分区

输入 d 之后输入 2 (默认)删除/dev/loop0p2分区
输入 n 新建分区
分区号 2
输入p主分区: p
输入2(默认): 2
输入分区2的开始扇区,一定要和上面的一样,这里是 33280
输入结束扇区,如果直接回车就是全部剩余都将作为第二分区,这里直接回车
提示,是否移除分区的签名,这里一定要输入 n,不然镜像会出问题

efi固件,按 x 进入高级菜单,然后输入 u,写入UUID,把之前记录的UUID输入进去,非efi固件忽略这一步。

Command (m for help): x
Expert command (m for help): u
Partition number (1,2,128, default 128): 2
输入之前我们记录的UUID:11458228-0839-40E2-FE5C-7D7FC0445102

r 返回菜单,输入 w 保存我们的更改

# 会有警告,这里不用管

2.更新分区信息,使用新的分区表

partx -u /dev/loop0

更新完成后,再次使用lsblk查看

lsblk

再次查看,可以看出loop12p2分区扩容成功

3.同步更改后的分区信息到系统内核

先使用e2fsck镜像检测,纠错,输入命令:(如提示修复 输入 y)

e2fsck -f /dev/loop0p2

4.同步分区大小,输入以下命令开始同步

resize2fs /dev/loop0p2

完成扩容扩容

卸载系统中的分区

partx -d /dev/loop0

卸载 loop 设备

losetup -d /dev/loop0

完成img文件的扩容。

最后我们将它重新打包压缩,执行命令:

gzip OpenWrt.img

这行命令的意思是用 gzip 来打包压缩 OpenWrt.img 文件。

稍等一会就完成了,目录里多出来了一个 OpenWrt.img.gz 的文件,这个就是重新压缩后的 img 镜像文件。


安装验证

把刚才的 OpenWrt.img.gz 下载下来,解压缩成 img 格式,在虚拟机验证一下是否扩容成功。