编译 OpenWrt 系列 – SD 卡分区扩容指南

释放双眼,带上耳机,听听看~!

本篇文章将介绍扩容 OpenWrt root 分区的内容,本文所述内容适用于以 SD 卡存储介质的 ARM 设备 (树莓派、NanoPi R2S 等)。

将本项目 OpenWrt 固件刷入 SD 卡后,SD 卡内 boot 分区所占空间为 64M,root 分区所占空间为 960M,所以:

SD 卡总容量 – (64+960)M ≈ 空闲分区容量

虽然刷入固件的初始状态下空闲分区无法被利用,但在默认情况下,960M 的 root 分区完全能胜任日常使用。

若确有扩容 root 分区的需求,请按下文内容操作。

注意:

⚠️数据无价,在扩容操作前,请务必备份好 SD 卡内的重要数据

⚠️如确有扩容需求,请尽量在刷入固件后即进行分区扩容操作,这样不仅可以避免文件丢失 (因为刚刷完固件什么重要文件都没有),在一定程度上还可加快分区扩容速度。

ext4 固件

由于未知原因,ext4 固件暂时无法在 Windows 下使用 Diskgenius、PartitionGuru 等磁盘管理工具扩容,所以我们需要在 Linux 环境下对 SD 卡进行扩容操作。

①如果你有现成的 Linux 环境,则可以将 SD 卡插入电脑,使用 GParted 工具对 SD 卡的 Root 分区进行扩容;

②如果你有空闲的 U 盘,则可以将 Linux 发行版的 Live CD 写入 U 盘,重启至 U 盘中的 Live 环境使用 GParted 工具对 SD 卡进行扩容;

③如果以上条件都不满足,则可使用虚拟机软件虚拟 Gparted 的 Live CD,在虚拟机中完成 SD 卡的扩容。

以下内容介绍 (相对最麻烦的) 方法 ③,方法 ① 和 ② 与方法 ③ 大同小异,在此不再赘述。

在接下来的内容中,我们使用开源免费的 VirtualBox 来进行 SD 卡的扩容操作,VMWare 下的操作步骤与 VirtualBox 相似,在此也不再赘述。

下载所需文件

前往 VirtualBox 官网的下载页面:

https://www.virtualbox.org/wiki/Downloads

下载适用于 Windows 的 VirtualBox 安装包和扩展包:

📌点击展开图片 »

image.png

文件下载到本地后,注意比对文件名中的版本号是否一致。以上图为例,安装包和扩展包的文件名分别为:

VirtualBox-6.1.16-140961-Win.exe

Oracle_VM_VirtualBox_Extension_Pack-6.1.16.vbox-extpack

两文件名中版本号 (6.1.16) 相同,则证明文件下载正确。

接着,我们前往 Gparted 官网的下载页面:

https://gparted.org/download.php

下载适用于 x86_64 设备的 Live CD 映像:

📌点击展开图片 »

image.png

至此,扩容所需文件下载完成。

建立虚拟 GParted Live 环境

在 VirtualBox 安装过程中,除安装目录外,不建议对其他选项进行修改操作。

完成 VirtualBox 的安装后,双击刚刚下载好的扩展包,完成对 VirtualBox 扩展包的安装。

💡接下来的步骤在 VirtualBox 中进行 (点击各步骤前的 ▶ 即可展开该步骤对应的图片):

1. 虚拟机类型选择为“Linux”,版本选择为“Other Linux (64-bit)” »

image.png

2. 内存分配默认的 512M 即可 »

image.png

3. 因为我们将在虚拟机中运行 Live 映像,所以不必配置虚拟磁盘 »

image.png

4. 选中刚刚创建好的虚拟机,点击“设置”按钮进入详细的虚拟机配置界面 »

image.png

5. 在“系统 – 启动项”中,将“光驱”设为唯一启动项并将其移动到第一位 »

image.png

6. 注册并应用我们刚刚下载好的 GParted Live CD 文件 »

image.png
image.png
image.png
image.png

7. 将 SD 卡装入读卡器插入电脑,在“USB 设备”中,勾选 USB 2.0 选项,点击右侧按钮将 USB 读卡器设备分配给虚拟机 »

image.png

8. 回到主界面,启动虚拟机 »

image.png

9. 在启动菜单中选择 (默认的) 第一个选项,按下回车键进入 »

image.png

10. 默认情况下不需要选择按键布局,故我们直接按下回车键选择默认选项进入 »

image.png

11. 输入 “26” 将界面语言选择为“简体中文” »

image.png

12. 输入“0”并回车直接进入 X 界面 »

image.png

13. 进入图形界面后,将自动启动 Gparted »

image.png

14. 右击卷标为“rootfs”的 960M 分区,选择“更改大小/移动” »

image.png

15. 拖动手柄调整 rootfs 大小进行扩容,如果你要进行全盘扩容操作,建议在 rootfs 分区前后留出大于 4M 的空间 »

image.png

16. 回到 Gparted 主界面,点击“绿色箭头”执行扩容操作 »

image.png

17. 扩容中…可能需要 1 分钟或几分钟 »

image.png

18. 扩容完成 »

image.png

19. 回到主界面查看分区信息,确认分区扩容完毕 »

image.png

20. 回到桌面,依次点击“Exit – Shutdown”关机 »

image.png

Squashfs 固件

对于 squashfs 固件,我们可以在暂未使用的空闲空间上新建一个分区,之后将 overlay 分区中的内容拷贝到这个分区,然后将系统在 overlay 分区的挂载点修改为刚刚新建的分区来进行扩容。

⚠️由于 Squashfs 固件涉及到文件迁移,所以 请尽量在刷入固件后即进行分区扩容操作

💡点击各步骤前的 ▶ 即可展开该步骤对应的图片:

1. 在“系统 – 软件包”中查看 rootfs 剩余空间为 600M »

0.png

2. 在“系统 – 磁盘管理”中找到 SD 卡设备 (/dev/mmcblk0),点击“修改” »

1.png
2.png

3. 在分区信息中可以看出 SD 卡中有 14.83G 的空闲空间,点击右侧“新建”按钮新建分区 »

3.png

4. 分区新建完成,点击“格式化” »

4.png

5. 选择 ext4 分区作为新分区的文件系统 »

5.png

6. 分区已成功格式化为 ext4 格式 »

6.png

  1. 进入 OpenWrt 的 TTYD 或 SSH,进行迁移文件操作 »
# 将刚刚新建的 /dev/mmcblk0p3 分区挂载至 /mnt
[email protected]:/# mount /dev/mmcblk0p3 /mnt

# 查看分区挂载情况
[email protected]:/# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0         7:0    0 760.8M  0 loop /overlay
mmcblk0     179:0    0  14.9G  0 disk 
├─mmcblk0p1 179:1    0    64M  0 part /boot
├─mmcblk0p2 179:2    0   960M  0 part /rom
└─mmcblk0p3 179:3    0  13.8G  0 part /mnt

# 将 /overlay 分区下的所有文件拷贝至刚刚建立好的分区内
[email protected]:/# cp -f -a /overlay/. /mnt

# 查看是否拷贝成功
[email protected]:/# ls -a /mnt
.           ..          .fs_state   lost+found  upper       work
[email protected]:/# ls -a /overlay
.          ..         .fs_state  upper      work

# 同步文件
[email protected]:/# sync

# 卸载 /dev/mmcblk0p3 分区
[email protected]:/# umount /mnt
8. 前往“系统 – 挂载点”,点击“生成配置” »

7.png

9. 在“挂载点”中我们可以看到刚刚创建好的 ext4 分区 /dev/mmcblk0p3,点击右方“修改” »

8.png

10. 在接下来的界面中,“启用此挂载点”并选择“作为外部 overlay 使用”,点击“保存&应用” »

9.png

11. 在“系统 – 挂载点”页面下,确认挂载点已启用 (打钩),并确认挂载点为 /overlay,点击下方“保存&应用”,之后重启 OpenWrt »

10.png

12. 验证分区扩容成功 »

11.png

[email protected]:/# lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0         7:0    0 760.8M  0 loop /mnt/loop0
mmcblk0     179:0    0  14.9G  0 disk 
├─mmcblk0p1 179:1    0    64M  0 part /boot
├─mmcblk0p2 179:2    0   960M  0 part /rom
└─mmcblk0p3 179:3    0  13.8G  0 part /overlay

[email protected]:/# mount | grep overlay
/dev/mmcblk0p3 on /overlay type ext4 (rw,relatime)
overlayfs:/overlay on / type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work)
overlayfs:/overlay on /opt/docker type overlay (rw,noatime,lowerdir=/,upperdir=/overlay/upper,workdir=/overlay/work)

[email protected]:/# df -h | grep overlay
/dev/mmcblk0p3           13.5G     42.2M     12.8G   0% /overlay
overlayfs:/overlay       13.5G     42.2M     12.8G   0% /
overlayfs:/overlay       13.5G     42.2M     12.8G   0% /opt/docker

 

 

人已赞赏
全系教程

编译 OpenWrt 系列 - 固件下载

2020-10-9 15:15:03

全系教程

Windows 10 Enterprise LTSC、LTSB、Server安装Microsoft Store应用商店方法合集

2020-11-10 15:34:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索