我的测试结果是要扩充磁盘只能选择ext4分区,squashfs无法支持磁盘扩容,也不能挂载其它分区到/或/overlay,挂载到其它位置又起不到扩容的目的。这是一个古老bug导致的,https://github.com/openwrt/openwrt/issues/9015 ,openwrt并没有从rootfs中读取fstab而是从rom中。
我用的是openwrt-23.05.0-x86-64-generic-ext4-combined-efi.img这个镜像
- 安装工具
安装block-mount并重启后页面上才有挂载点管理功能
opkg install block-mount parted
reboot
- 添加磁盘
添加磁盘而不是添加分区的原因是为了支持固件升级,升级后第一块磁盘除了配置文件都会被覆盖掉
parted /dev/sdb
mktable gpt
mkpart primary ext4 0% 100%
quit
mkfs.ext4 -L extroot /dev/sdb1
- 挂载磁盘
mount /dev/sdb1 /mnt
tar -C /overlay -cvf - . | tar -C /mnt -xf - # 或 tar -C /rom -cvf - . | tar -C /mnt -xf - 取决于安装类型
umount /mnt
reboot
转移文件到新磁盘是因为,如果刷固件的话原root分区中的数据会丢失,如果做的有配置或安装的有软件的话会导致刷固件后系统出问题,如果没有安装任何东西也可以不转移数据。
重启后可以看到已经挂载成功
刷固件后第一次启动extroot分区不会自动挂载,再重启一下就好了。
基于命令行的实现方法:
https://openwrt.org/docs/guide-user/additional-software/extroot_configuration