前言
因为固件给的空间实在是太小了,随便装几个软件就会出问题,所以强烈建议在安装完成后优先进行磁盘扩容!
磁盘扩容涉及到不同版本的不同操作方法,我们下载使用的版本为 ext4 ,另一个版本为 squashfs。
ext4磁盘扩容
一、关机状态下,直接编辑虚拟机的硬盘容量

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

三、SSH连接OpenWrt,输入以下命令安装必要软件
1 2  | 
opkg update opkg install block-mount e2fsprogs fdisk blkid vim  | 

各种SSH工具都可以,putty,MobaXterm,tabby等等
实在没有的,打开windows终端,输入
ssh [email protected]
四、配置磁盘空间
依次输入以下命令:
fdisk -l可以看到
/dev/sda变为 4GB 了。
fdisk /dev/sda
这边输入
m可以查看帮助,会介绍一些命令用法- 输入 
n(新建分区)出现3个提示,直接回车即可。

 - 输入 
p(打印分区信息),可以看到多了一个sda3的分区
 - 输入 
w(写入分区信息并退出)
 - 输入 
mkfs.ext4 /dev/sda3(格式化分区) 并复制 UUID
 - 重启 
reboot。 
五、配置fstab
分别执行下面的命令:
1 2 3 4 5 6 7 8 9  | 
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  | 
建议每行命令单独运行,别学我一次性粘贴在里面,可能会漏掉
六、将根目录复制到新的分区下
执行以下命令:
1 2 3 4 5 6 7  | 
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  | 
七、启用引导
1 2  | 
/etc/init.d/fstab enable /etc/init.d/fstab start  | 

八、重启
1
 | 
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 软件:
1 2  | 
opkg update opkg install cfdisk  | 
然后输入:
1
 | 
cfdisk
 | 
打开磁盘管理界面:
这里可以看到,目前一共有三个已有分区,现在新建一个分区:
选中 Free Space ,再选中 New ,输入需要的大小,比如 3G。
接着选择 Write
输入 yes,完成新分区的创建
选择 Quit 退出
二、格式化分区
使用下面命令格式化分区:
1
 | 
mkfs.ext4 /dev/sda3 #更改为自己的分区
 | 
三、挂载新分区
输入命令:
1
 | 
mount /dev/sda3 /mnt/sda3
 | 
四、转移到新分区
然后将原来 upper 层中的数据复制到新的分区中:
1
 | 
cp -r /overlay/* /mnt/sda3
 | 
五、后台配置
进入OpenWRT后台的【系统】-【挂载点】,点击下方的【挂载点】栏目的【添加】按钮,在【UUID】中找到刚刚的分区 dev/sda3,【挂载点】选择【作为外部overlay使用】:


六、完成
到这一步,只需要重启 OpenWRT 即可成功扩容。
重启后到 【系统】 -> 【软件包】 可以看到变大后的空间容量。

分区默认会在 OpenWRT 重启后会自动挂载,如果遇到没有挂载的情况,需要编辑
/etc/rc.local在
exit 0之前加入一行mount /dev/sda3 /overlay即可。











评论(0)