背景

OpenWrt 新系统默认的 root 分区只有几十 MB,安装插件很容易空间不足。通过新建分区并配置 extroot,可以将 root 目录迁移到更大的分区上。


第一步:新系统基础设置

刷写完成后进入系统,首先在 【系统】→【管理权】 页面设置登录密码和基本路由配置。


第二步:新建磁盘分区

使用 cfdisk 进入磁盘分区管理界面:

1
cfdisk

界面中 free 表示空闲空间(未分配)。操作步骤如下:

  1. 选中空闲空间,选择 【New】 → 回车
  2. 输入需要的分区大小 → 回车
  3. 选择 【primary】(主分区)
  4. 选择 【Write】 写入分区表 → 回车
  5. 提示 Are you sure you want to write partition table to disk? → 输入 yes → 回车
  6. 选择 【Quit】 退出

完成后用以下命令确认新分区是否创建成功:

1
2
fdisk -l
lsblk

第三步:格式化新分区为 ext4

将新建的分区(假设为 /dev/sda3)格式化为 ext4:

1
mkfs.ext4 /dev/sda3

其他可选格式:mkfs.ext3mkfs.f2fsmkfs.vfat


第四步:配置挂载点

在 OpenWrt Web 界面中找到挂载点配置页面。

如果没有挂载点选项,先安装 block-mount

1
opkg install block-mount

操作步骤:

  1. 点击 【生成配置】
  2. 找到对应分区,点击 【编辑】
  3. 将挂载点设置好后点击 【保存】

第五步:执行 extroot 数据迁移

复制下面的命令,将 root 文件系统内容迁移到新分区,注意把 /dev/sda1 改为实际新建的分区(本例为 /dev/sda3):

1
2
3
4
5
6
7
mkdir -p /tmp/introot
mkdir -p /tmp/extroot
mount --bind / /tmp/introot
mount /dev/sda3 /tmp/extroot
tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
umount /tmp/introot
umount /tmp/extroot

在 SSH 中依次执行以上命令,完成后重启系统:

1
reboot

重启后 root 目录即挂载到新分区,空间扩展完成。


参考