How to play with OpenWrt?How to play with OpenWrt?
首页
  • 简介
  • 选择OP
  • 分裂之争
  • 路由系统
  • 路由概念
  • 路由模式
  • 进阶指南
  • 前言
  • 准备
  • ESXI
  • iKuai
  • OpenWrt
  • 群晖DSM
  • OpenWrt

    • 磁盘扩容
    • 主题安装
    • SmartDNS
    • AdGuardHome
    • OpenClash
    • DNS防泄漏
    • 远程唤醒
    • iStore
    • 固件编译
  • iKuai

    • MAC修复
    • 单线多拨
  • Synology NAS

    • 版本更新
    • 修复CPU显示
  • 通用

    • 全局DNS
    • IPv6 DDNS
    • 开启HTTPS
声明
首页
  • 简介
  • 选择OP
  • 分裂之争
  • 路由系统
  • 路由概念
  • 路由模式
  • 进阶指南
  • 前言
  • 准备
  • ESXI
  • iKuai
  • OpenWrt
  • 群晖DSM
  • OpenWrt

    • 磁盘扩容
    • 主题安装
    • SmartDNS
    • AdGuardHome
    • OpenClash
    • DNS防泄漏
    • 远程唤醒
    • iStore
    • 固件编译
  • iKuai

    • MAC修复
    • 单线多拨
  • Synology NAS

    • 版本更新
    • 修复CPU显示
  • 通用

    • 全局DNS
    • IPv6 DDNS
    • 开启HTTPS
声明
  • 磁盘扩容

磁盘扩容

前言

因为固件给的空间实在是太小了,随便装几个软件就会出问题,所以强烈建议在安装完成后优先进行磁盘扩容!

磁盘扩容涉及到不同版本的不同操作方法,我们下载使用的版本为 ext4 ,另一个版本为 squashfs。

ext4磁盘扩容

一、关机状态下,直接编辑虚拟机的硬盘容量

二、再次打开OpenWrt,可以看到,即使调整了容量,并不会直接体现在系统里,仍然只有102.33M

三、SSH连接OpenWrt,输入以下命令安装必要软件

opkg update
opkg install block-mount e2fsprogs fdisk blkid vim

提示

各种SSH工具都可以,putty,MobaXterm,tabby等等

实在没有的,打开windows终端,输入ssh root@10.0.0.2

四、配置磁盘空间

依次输入以下命令:

  1. fdisk -l

可以看到 /dev/sda 变为 4GB 了。

  1. fdisk /dev/sda

提示

这边输入 m 可以查看帮助,会介绍一些命令用法

  1. 输入 n (新建分区)

出现3个提示,直接回车即可。

  1. 输入 p (打印分区信息),可以看到多了一个 sda3 的分区

  1. 输入 w (写入分区信息并退出)

  1. 输入 mkfs.ext4 /dev/sda3 (格式化分区) 并复制 UUID

  1. 重启 reboot 。

五、配置fstab

分别执行下面的命令:

uci add fstab mount
uci set fstab.@mount[-1].uuid=UUID      #UUID改为你上面得到的值
uci set fstab.@mount[-1].options=rw,sync,noatime
uci set fstab.@mount[-1].fstype=ext4
uci set fstab.@mount[-1].enabled_fsck=1
uci set fstab.@mount[-1].enabled=1
uci set fstab.@mount[-1].target=/
uci set fstab.@mount[-1].device=/dev/sda3
uci commit fstab

提示

建议每行命令单独运行,别学我一次性粘贴在里面,可能会漏掉

六、将根目录复制到新的分区下

执行以下命令:

mkdir /mnt/sda3
mount /dev/sda3 /mnt/sda3
mkdir -p /tmp/cproot
mount --bind / /tmp/cproot
tar -C /tmp/cproot -cvf - . | tar -C /mnt/sda3 -xf -
umount /tmp/cproot
umount /mnt/sda3

七、启用引导

/etc/init.d/fstab enable
/etc/init.d/fstab start

八、重启

reboot

九、进入系统查看分区信息

成功扩容。

注意

上述扩容需要自行更改的一个是磁盘挂载的盘符,我这边是 /dev/sda3 ,另一个是 UUID,其他照抄就行。

squashfs磁盘扩容

什么是 overlay

OpenWRT 一般使用的文件系统是 SquashFS ,这个文件系统的特点就是:只读。

一个只读的文件系统要怎么做到保存设置和安装软件的呢?这里就是使用 /overlay 的分区, overlay 顾名思义就是覆盖在上面一层的意思。虽然原来的文件不能修改,但把修改的部分放在 overlay 分区上,然后映射到原来的位置,读取的时候就可以读到修改过的文件了。

为什么要用这么复杂的方法呢? OpenWRT 当然也可以使用 EXT4 文件系统,但使用 SquashFS + overlay 的方式有一定的优点。

SquashFS 是经过压缩的,在路由器这种小型 ROM 的设备可以放下更多的东西。

OpenWRT 的恢复出厂设置也要依赖于这个方式。在你重置的时候,它只需要把 overlay 分区清空就可以了,一切都回到了刚刷进去的样子。

如果是 EXT4 文件系统,就只能够备份每个修改的文件,在恢复出厂设置的时候复制回来,十分复杂。

当然,SquashFS + overlay 也有它的缺点:

修改文件的时候会占用更多的空间。首先你不能够删除文件,因为删除文件实际上是在 overlay 分区中写入一个删除的标识,反而占用更多的空间。 另外在修改文件的时候相当于增加了一份文件的副本,占用了双份的空间。

步骤

一、创建新分区

首先,关闭OpenWrt,将你的硬盘大小调整为需要的大小(以4G为例):

打开OpenWrt,通过SSH连接,安装 cfdisk 软件:

opkg update
opkg install cfdisk

然后输入:

cfdisk

打开磁盘管理界面:

这里可以看到,目前一共有三个已有分区,现在新建一个分区:

选中 Free Space ,再选中 New ,输入需要的大小,比如 3G。

接着选择 Write

输入 yes,完成新分区的创建

选择 Quit 退出

二、格式化分区

使用下面命令格式化分区:

mkfs.ext4 /dev/sda3 #更改为自己的分区

三、挂载新分区

输入命令:

mount /dev/sda3 /mnt/sda3

四、转移到新分区

然后将原来 upper 层中的数据复制到新的分区中:

cp -r /overlay/* /mnt/sda3

五、后台配置

进入OpenWRT后台的【系统】-【挂载点】,点击下方的【挂载点】栏目的【添加】按钮,在【UUID】中找到刚刚的分区 dev/sda3,【挂载点】选择【作为外部overlay使用】:

六、完成

到这一步,只需要重启 OpenWRT 即可成功扩容。

重启后到 【系统】 -> 【软件包】 可以看到变大后的空间容量。

提示

分区默认会在 OpenWRT 重启后会自动挂载,如果遇到没有挂载的情况,需要编辑 /etc/rc.local

在 exit 0 之前加入一行 mount /dev/sda3 /overlay 即可。

Life Is About Trouble, So Is Code...
Copyright © 2023 Allen Lu