xixiha's Blogs

https://github.com/xixiha5230/

0%

openwrt扩容正确方法

  1. 官方教程

  2. 本方法适用于squashfs文件系统

  3. 本方法适用于对SD卡扩容

通过本方法扩容,系统更新后只要将分区重新挂载到overlay分区上就可以保留之前安装的软件和设置。

1. 准备

安装必要软件:

1
2
opkg update
opkg install block-mount kmod-fs-ext4 e2fsprogs parted fdisk

2. 创建分区

openwrt默认只有两个分区,通过fdisk -l查看分区:

其中/dev/mmcblk0是SD卡设备,它有两个分区。/dev/mmcblk0p1boot分区,不需要修改。/dev/mmcblk0p2overlay分区,openwrt会默认将软件安装到这个地方,也不需要修改。

接下来通过fdisk在SD卡剩余空间创建新的分区,打开SD卡fdisk /dev/mmcblk0

输入p现实目前的分区:

输入n创建新分区,p设置primary,3分区, 344064扇区为起始扇区到最后一个扇区。具体如下图:

这样就创建好了新分区。现在输入p结果如下:

3. 设置extroot

/dev/mmcblk0p3挂载到/overlay

1
2
3
4
5
6
7
8
DEVICE=/dev/mmcblk0p3
eval $(block info ${DEVICE} | grep -o -e 'UUID="\S*"')
eval $(block info | grep -o -e 'MOUNT="\S*/overlay"')
uci -q delete fstab.extroot
uci set fstab.extroot="mount"
uci set fstab.extroot.uuid="${UUID}"
uci set fstab.extroot.target="${MOUNT}"
uci commit fstab

4. 迁移数据

将原始overlay中的数据迁移到/dev/mmcblk0p3

1
2
mount ${DEVICE} /mnt
tar -C ${MOUNT} -cvf - . | tar -C /mnt -xf -

5. 配置rootfs_data/ubifs

将原始overlay(也就是/dev/mmcblk0p2)挂载到/rwm

1
2
3
4
5
6
DEVICE="$(block info | sed -n -e '/MOUNT="\S*\/overlay"/s/:\s.*$//p')"
uci -q delete fstab.rwm
uci set fstab.rwm="mount"
uci set fstab.rwm.device="${DEVICE}"
uci set fstab.rwm.target="/rwm"
uci commit fstab

这将允许您访问rootfs_data/ubifs分区,并自定义extroot配置/rwm/upper/etc/config/fstab

6. 重启

1
reboot

完成。

如果有错误可以参考这里