从 U 盘启动 OpenWrt 扩容路由器 overlay 分区空间

很多路由器自带的存储芯片容量较小,日常使用中很容易觉得空间不够用,无法安装大型软件,这时就可以考虑将系统复制到 U 盘中,从 U 盘启动 OpenWrt,或者仅扩容 overlay 分区,以此获得更大的系统空间,便于安装软件等。

准备工作

  1. 准备一个可用的 U 盘并确认是否需要进行数据备份。(也可以使用 TF 存储卡)
  2. 确认路由器是否已安装 e2fsprogs, luci-i18n-ttyd-zh-cn
  3. 确认电脑上已有 putty 软件(可选)。
  4. 将 U 盘连接到路由器。

开始操作

  • 登录路由器管理页面,打开“服务”-“终端”即可进入命令行操作界面(需要现代化的浏览器才能正常使用)。
  • 或者使用电脑端的 putty SSH 登录路由器命令行操作界面。
openwrt-005

1、查询当前系统挂载信息,输入命令:df -h

openwrt-010

例如当前 U 盘挂载点为 /dev/sda,先执行卸载命令:umount /dev/sda

2、格式化 U 盘为 EXT4 格式,输入命令:mkfs.ext4 -m 0 /dev/sda

备注:如果是 TF 存储卡,其路径通常是固定的,先卸载,再输入命令:mkfs.ext4 -m 0 /dev/mmcblk0p1

3、复制当前 OpenWrt 系统至 U 盘,依次执行下列命令:

# 创建导入目录,用于将 OpenWrt 根目录绑定挂载至此目录中。
mkdir -p /tmp/introot

# 创建导出目录,用于将 U 盘挂载至此目录,以复制系统文件至 U 盘中。
mkdir -p /tmp/extroot

# 将 OpenWrt 根目录绑定至导入目录。
mount --bind / /tmp/introot

# 将 U 盘挂载至导出目录。
mount /dev/sda /tmp/extroot

# 将整个 OpenWrt 系统复制到导出目录。
tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -

# 卸载导入目录。
umount /tmp/introot

# 卸载导出目录。
umount /tmp/extroot

4、打开“系统”-“挂载点”界面,点击下方“挂载点”区域内的“添加”按钮,手动配置挂载信息,然后“保存并应用”,如图所示。

openwrt-011

5、最后重启系统即可,路由器会自动从 U 盘加载启动,再查看软件包界面就会显示成 U 盘的容量。

openwrt-012

备注

  • 复制到 U 盘中的系统和路由器自身芯片中的系统互相独立,可以理解为双系统。
  • 拔掉 U 盘重启,即可从路由器自身芯片启动系统。

仅扩容 /overlay 分区

上面的操作是将整个 OpenWrt 系统复制到 U 盘中使用,如果你觉得过于繁琐,那么可以仅扩容 /overlay 分区。

1、格式化 U 盘为 EXT4 格式。(方法同上)
2、添加挂载点配置,将 U 盘作为 /overlay 分区使用。

3、重启系统即可。

备注:新格式化的存储直接作为 /overlay 分区使用,则需要重新配置。(等同于恢复了出厂设置)
如果你希望保留现有的配置和已安装的软件等,应当在完成第二步后,执行复制命令示例:cp -a /overlay/* /mnt/sda
然后再重启路由器即可。

注意:如果你使用 TF 存储卡作为扩容空间,如果发现重启几次系统后挂载会失效,一般是 TF 存储卡损坏,请更换 TF 存储卡再试。