由于 OpenWrt 官方 SquashFS 固件的文件系统大小是固定的,默认的 root 分区不会自动扩展到设备的所有可用空间。本问将介绍如何通过扩展 root 分区来充分利用设备的存储空间。
注意:此方法适用于尚未启动或写入磁盘的镜像文件。若系统已启动,squashfs 分区大小已确定,只能使用
losetup
挂载并使用resize.f2fs
进行扩展。
环境准备
- 操作系统:Ubuntu
- 工具需求:
dd
、parted
以下是详细的操作步骤。
1. 安装必要工具
确保 Ubuntu 系统中已安装 parted
工具。大多数 Linux 发行版中默认自带 dd
工具。
sudo apt update
sudo apt install parted
2. 扩展镜像文件大小
使用 dd
命令在镜像文件 openwrt_squashfs_expanded.img
中添加空白空间,以便为后续的分区扩展提供空间。
dd if=/dev/zero bs=1M count=5120 >> openwrt_squashfs_expanded.img
if=/dev/zero
:生成零字节数据。bs=1M
:数据块大小为 1MB。count=5120
:生成 5GB 的空白空间。>> openwrt_squashfs_expanded.img
:将空白数据追加到镜像文件末尾。
执行完后,镜像文件的大小将增加 5GB。
3. 使用 parted
查看并调整分区表
使用 parted
命令调整镜像文件的分区。
进入 parted
命令行界面
sudo parted openwrt_squashfs_expanded.img
查看当前分区信息
在 parted
命令行中使用 print
命令查看分区情况:
(parted) print
示例输出:
Model: (file)
Disk /root/openwrt_squashfs_expanded.img: 5545MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 33.6MB 50.3MB 16.8MB primary ext2 boot
2 67.1MB 176MB 109MB primary
可以看到:
- 分区 1(boot 分区):大小为 16.8MB,文件系统类型为
ext2
。 - 分区 2(root 分区):大小为 109MB。
4. 扩展 Root 分区大小
在 parted
命令行中,使用 resizepart
命令将第 2 个分区的大小扩展到镜像文件的 100%:
(parted) resizepart 2 100%
5. 验证分区扩展情况
使用 print
命令再次查看分区信息:
(parted) print
可能的输出示例:
Model: (file)
Disk /root/openwrt_squashfs_expanded.img: 5545MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 33.6MB 50.3MB 16.8MB primary ext2 boot
2 67.1MB 5545MB 5478MB primary
可以看到分区 2 的大小已经扩展到 5478MB,成功扩展。
操作成功后,退出 parted
:
(parted) quit
6. 将镜像写入 SD 卡
分区扩展完成后,使用 Rufus 等工具或者使用 dd
命令将 openwrt_squashfs_expanded.img
写入 SD 卡。
7. 启动设备并验证分区扩展
将 SD 卡插入设备并启动后,使用以下命令检查 /
分区大小:
df -h /
如果显示的 /
分区大小接近 5GB,说明分区扩展成功。
总结
本文介绍了如何在 Ubuntu 系统中扩展 OpenWrt 的 SquashFS 固件的 root 分区。通过 dd
扩展镜像文件大小,并通过 parted
调整分区,可以让 root 分区充分利用设备的存储空间。这一操作对于大容量存储设备用户尤为有用,为后续使用 OpenWrt 提供了更充足的存储空间。