openwrt 扩容

发布于 2023-07-18  90 次阅读


前言

本文仅针对 squashfs 文件系统。例:friendlyarm_nanopi-r2s-squashfs-sysupgrade.img.gz 类型固件!如果对 ext4 有扩容需求的,可以看看这位大佬的视频,讲解的很详细了,我也是从他视频中边操作边写的🤭!

openwrt 的官方固件默认容量好像只有 100+M 左右,装了几个插件之后就快见底了,虽然可以在编译的时候自己修改容量,但我有点不太想再等个把小时重新编个固件了。。。

容量见底了~

分区

首先,当然 SSH 登录啦,安装下 fdisk 和 resize2fs 这两个插件:

opkg install fdisk
opkg install resize2fs

然后用 df -h 查看下,记录循环设备的值(图中红框):

然后输入 fdisk -l 查看分区情况:

题外话:图中其实 /dev/sda2 分区总共就 120M,也就是 openwrt 固件的总容量,原因是我用 NAS 虚拟机里面直接导入的镜像所致,后面在 NAS 虚拟机里面直接删掉磁盘重新添加后就可以修改容量了~

对 /dev/sda 进行分区:

这里千万要记录下第二个分区,也就是 /dev/sda2 的起始扇区值(图中是 33280),后面要用到!!!
fdisk /dev/sda

然后进入命令行查看,输入 p 查看分区,输入 d 删除第二个分区:

然后输入 n 创建新分区(此处如果有出现要选择 Partition type 的,输入 p 即创建的是主分区),输入 2 创建刚被删掉的分区,起始扇区填写上面记录的值(本例:33280),结束扇区可以填写想要扩展的容量,比如 +500M,提示你”Do you want to remove the signature?“时,千万要选 n,最后按 w 确认就可以了:

扩容

安装 losetup 后查看下有没有循环设备,有的话记录下,注意下面不要输入重复导致占用了:

然后设置下循环设备:

losetup /dev/loop0 /dev/sda2

然后用 resize2fs 扩展下刚刚设置的循环分区:

resize2fs -f /dev/loop0
对于非 efi 的,到这里直接 reboot 就可以了,如果是 efi 的(选的固件里面带有 efi 字样的),那么继续往下操作!

编辑分区表启动分区

安装下 blkid,然后查看下第二分区的 partuuid,记录下来备用:

然后编辑下分区表:

vi /boot/grub/grub.cfg

把里面的 2 行 partuuid 都改成上面记录的(按 Insert 后编辑,完成后按下 ESC,输入 :wq 保存并退出)。

确认都修改正确后,reboot 重启!

重启回来,不出意外的话,应该能看到扩容后的容量大小了~