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

之前分享过 OpenWrt 固件安装前扩容的方法,但在扩容 OpenWrt 24.10.0 官方固件的时候,扩容完启动失败,今天再整理一下OpenWrt 固件安装前扩容的方法的另一个方法。

本次以官方24.10.0版本测试,同样需要一台Linux系统的电脑,可以是本地虚拟机,也可以是远程的VPS。


下载 OpenWrt 镜像

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

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


将固件上传到Linux电脑扩容

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

OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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

OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

先解压缩,执行命令:

gzip -d OpenWrt.img.gz

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

OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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

IYIO - 科学上网 IYIO.NET

扩容 OpenWrt

执行下面这行命令:

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

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

OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

挂载镜像到loop设备

losetup -f OpenWrt.img

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

losetup
OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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

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

lsblk
OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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

partx -a /dev/loop0

使用lsblk查看加载的结果

lsblk
OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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


使用fidsk进行重新分区扩容

1.输入下面命令:

fdisk /dev/loop0
OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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

OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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

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

OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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

OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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

# 会有警告,这里不用管

OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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

partx -u /dev/loop0

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

lsblk

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

OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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

先使用e2fsck镜像检测,纠错,输入命令:

e2fsck -f /dev/loop0p2

如提示修复 输入 y

OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

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

resize2fs /dev/loop0p2
OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

完成扩容扩容

卸载系统中的分区

partx -d /dev/loop0

卸载 loop 设备

losetup -d /dev/loop0
OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

完成img文件的扩容。

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

gzip OpenWrt.img

这行命令的意思是用 gzip 来打包压缩 OpenWrt.img 文件,稍等一会就完成了,目录里多出来了一个 OpenWrt.img.gz 的文件,这个就是重新压缩后的 img 镜像文件。

OpenWrt固件扩容-固件安装前软件包空间扩容 - 科学上网 IYIO.NET

安装验证

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

IYIO - 科学上网 IYIO.NET