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 目录了,等下弄完可以再删掉

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

先解压缩,执行命令:
gzip -d OpenWrt.img.gz
这行命令的意思是解压缩这个文件,完成后不保留源文件。

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

扩容 OpenWrt
执行下面这行命令:
dd if=/dev/zero bs=1G count=4 >> OpenWrt.img
这行命令的意思是:对 OpenWrt.img 这个文件使用追加模式写入 4G 的空数据。

挂载镜像到loop设备
losetup -f OpenWrt.img
1.查看挂载的查看挂载的设备的名称,使用losetup命令
losetup

可以看到,挂载的img镜像名称是loop0,完整路径是/dev/loop0
2.使用lsblk命令,可以看到loop0的空间大小是4.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的开始扇区,一定要和上面的一样,这里是 147456
输入结束扇区,如果直接回车就是全部剩余都将作为第二分区,这里直接回车
提示,是否移除分区的签名,这里一定要输入 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镜像检测,纠错,输入命令:
e2fsck -f /dev/loop0p2
如提示修复 输入 y

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 格式,在虚拟机验证一下,

加入对话