问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

OpenWrt磁盘扩容:ext4和squashfs两种文件系统详细教程

创作时间:
作者:
@小白创作中心

OpenWrt磁盘扩容:ext4和squashfs两种文件系统详细教程

引用
1
来源
1.
https://www.luxiyue.com/openwrt/openwrt%E7%A3%81%E7%9B%98%E6%89%A9%E5%AE%B9/

OpenWrt默认的磁盘空间非常有限,安装几个软件就可能遇到空间不足的问题。本文将详细介绍如何在OpenWrt系统中进行磁盘扩容,包括ext4和squashfs两种文件系统的扩容方法。

前言

因为固件给的空间实在是太小了,随便装几个软件就会出问题,所以强烈建议在安装完成后优先进行磁盘扩容!
磁盘扩容涉及到不同版本的不同操作方法,我们下载使用的版本为
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

四、配置磁盘空间
依次输入以下命令:
2.
fdisk -l
可以看到
/dev/sda
变为 4GB 了。
4.
fdisk /dev/sda
这边输入
m
可以查看帮助,会介绍一些命令用法
6.
输入
n
(新建分区)
出现3个提示,直接回车即可。
8.
输入
p
(打印分区信息),可以看到多了一个
sda3
的分区
10.
输入
w
(写入分区信息并退出)
12.
输入
mkfs.ext4 /dev/sda3
(格式化分区) 并复制 UUID
14.
重启
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磁盘扩容

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
即可。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号