Openwrt分区扩容,重启不失效,群晖虚拟机可用

 Openwrt官网下载的镜像默认只有120MB,根分区也仅有104MB。如果要安装ADGuard Home、Nginx、Clash等服务就很容易不够用了。这里介绍一种安装前扩容根分区的办法,相比于安装后的方法,重启后不会失效。

1、准备

需要准备一台Linux,虚拟机也可以,这里介绍Ubuntu上的操作方法,其他系统类似。

安装依赖的工具:

  • wget
  • gzip
  • lsblk
  • e2fsck
  • resize2fs
  • losetup
  • fdisk
  • partx
sudo apt-get install wget gzip util-linux mount fdisk

2、下载解压镜像文件

这里使用的是:openwrt-22.03.0-x86-64-generic-ext4-combined.img.gz

# 下载:官网或者国内镜像网址,根据实际情况选择
# 官网下载地址:https://downloads.openwrt.org/releases/22.03.0/targets/x86/64/openwrt-22.03.0-x86-64-generic-ext4-combined.img.gz
# 国内镜像下载地址:https://mirrors.tuna.tsinghua.edu.cn/openwrt/releases/22.03.0/targets/x86/64/openwrt-22.03.0-x86-64-generic-ext4-combined.img.gz
wget https://downloads.openwrt.org/releases/22.03.0/targets/x86/64/openwrt-22.03.0-x86-64-generic-ext4-combined.img.gz

# 解压,将会得到文件openwrt-22.03.0-x86-64-generic-ext4-combined.img
gzip -d openwrt-22.03.0-x86-64-generic-ext4-combined.img.gz

3、扩容 

3.1 使用 dd 命令增加镜像空间

使用dd命令,将镜像文件增加到10G(群晖虚拟机最小磁盘大小)。

注意:dd命令中“count=512”,如果是其他值可能会失败

也可根据需要修改bs的值,改为自己需要的大小

dd if=/dev/zero bs=20080k count=512 >> openwrt-22.03.0-x86-64-generic-ext4-combined.img

记录了512+0 的读入
记录了512+0 的写出
10527703040字节(11 GB,9.8 GiB)已复制,104.59 s,101 MB/s

ls -lh openwrt-22.03.0-x86-64-generic-ext4-combined.img
-rwxr-xr-x 1 root root 10G  9月  7 10:28 openwrt-22.03.0-x86-64-generic-ext4-combined.img

3.2 使用 losetup 命令,挂载镜像到 loop 设备

losetup -f openwrt-22.03.0-x86-64-generic-ext4-combined.img

3.3 查看挂载的设备的名称

   3.3.1、使用 losetup 命令查看挂载的虚拟区块设备

        此处名为 /dev/loop12,实际每个人loop后面的数值可能不一样,注意根据文件名区分

losetup

NAME        SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                                                           DIO LOG-SEC
**********************(省略其它)**************************
/dev/loop12         0      0         0  0 openwrt-22.03.0-x86-64-generic-ext4-combined.img   0     512

  3.3.2、使用 lsblk 命令查看块设备信息

        对应上面查到的“/dev/loop12”,可以看到块大小已经增加到10G左右

lsblk

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
********************(省略其它)***********************
loop12   7:12   0   9.9G  0 loop

3.4 读取分区信息,加载到系统

3.4.1 使用 partx 命令,加载分区信息

partx -a /dev/loop12

3.4.2 使用 lsblk 命令查看加载分区信息结果

lsblk

NAME       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
************************(省略其它)*********************
loop12       7:12   0   9.9G  0 loop
├─loop12p1 259:0    0    16M  0 part
└─loop12p2 259:1    0   104M  0 part

loop12p2就是扩容的分区,虽然已经增加到10G,但是识别到的仍然是120M。所以还需要进行下面的操作。

3.5 使用 fdisk 命令调整分区大小

fdisk /dev/loop12

欢迎使用 fdisk (util-linux 2.37.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

# 输入p查看分区信息,记住/dev/loop12p2分区的开始扇区
命令(输入 m 获取帮助): p
Disk /dev/loop12:9.92 GiB,10654056448 字节,20808704 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x266b958d

设备          启动  起点   末尾   扇区  大小 Id 类型
/dev/loop12p1 *      512  33279  32768   16M 83 Linux
/dev/loop12p2      33792 246783 212992  104M 83 Linux

# 删除/dev/loop12p2分区,输入d之后输入2(默认)
命令(输入 m 获取帮助): d
分区号 (1,2, 默认  2): 2

分区 2 已删除。

# 输入n新建分区
命令(输入 m 获取帮助): n
分区类型
   p   主分区 (1 primary, 0 extended, 3 free)
   e   扩展分区 (逻辑分区容器)
# 输入p主分区
选择 (默认 p): p
# 输入2(默认)
分区号 (2-4, 默认  2): 2
# 输入分区2的开始扇区,一定要和上面的一样,这里是33792!!!
第一个扇区 (33280-20808703, 默认 34816): 33792
# 输入结束扇区,一定要比33792大,如果直接回车就是全部剩余都将作为第二分区,这里直接回车
Last sector, +/-sectors or +/-size{K,M,G,T,P} (33792-20808703, 默认 20808703):

创建了一个新分区 2,类型为“Linux”,大小为 9.9 GiB。
分区 #2 包含一个 ext4 签名。

# 提示,是否移除分区的签名,这里一定要输入n,不然镜像会出问题!!!
您想移除该签名吗? 是[Y]/否[N]: N

# 输入w保存我们的更改
命令(输入 m 获取帮助): w

# 会有警告,这里不用管
分区表已调整。
将调用 ioctl() 来重新读分区表。
重新读取分区表失败。: 无效的参数

# 提示说内核依然会使用旧的分区表,新的分区表需要在下次重启或运行 partprobe(8)或kpartx(8)命令后生效
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or partx(8).

3.6 更新新的分区信息,查看新的分区表

3.6.1 使用 partx 命令,更新分区信息

partx -u /dev/loop12

3.6.2 使用 lsblk 命令查看新的分区信息

lsblk

NAME       MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
**********************(省略其他)***********************
loop12       7:12   0   9.9G  0 loop
├─loop12p1 259:2    0    16M  0 part
└─loop12p2 259:3    0   9.9G  0 part

可以看到loop12p2分区已经扩容成功

3.7 同步更改后的分区信息到系统内核

3.7.1 使用 e2fsck 镜像检测,纠错

e2fsck -f /dev/loop12p2

e2fsck 1.46.5 (30-Dec-2021)
第 1 遍:检查 inode、块,和大小
第 2 遍:检查目录结构
第 3 遍:检查目录连接性
第 4 遍:检查引用计数
第 5 遍:检查组概要信息
Inode 位图末尾的填充值未设置。 处理<y>? 是


rootfs:***** 文件系统已被修改 *****
rootfs:1445/6656 文件(0.0% 为非连续的),5165/26624 块

3.7.2 使用 resize2fs 命令,同步分区大小

resize2fs /dev/loop12p2

resize2fs 1.46.5 (30-Dec-2021)
将 /dev/loop12p2 上的文件系统调整为 2596864 个块(每块 4k)。
/dev/loop12p2 上的文件系统大小已经调整为 2596864 个块(每块 4k)。

3.8 卸载

3.8.1 卸载系统中的分区

partx -d /dev/loop12

3.8.2 卸载loop设备

losetup -d /dev/loop12

3.9 安装、使用

此处不再赘述。

文中部分参考网络。

OpenWRT 是一个轻量级的嵌入式Linux发行版,常用于路由器、防火墙等设备的固件改造。如果你需要给 OpenWRT 的系统分区扩容,通常涉及到以下几个步骤: 1. **备份现有数据**:在操作前,确保重要文件已备份,以防意外丢失。 2. **确定目标空间**:检查设备上可用的空间,例如通过 `df -h` 命令查看总空间以及各个分区剩余容量。 3. **挂载rootfs分区**:如果当前的rootfs分区满,可能需要将其他非系统分区调整大小,然后将其格式化成 ext4 或者其他的适合 OpenWRT 的文件系统。 ```sh sudo mkdir /mnt/rootfs sudo mount /dev/your_partition /mnt/rootfs ``` 4. **修改fstab**:编辑 `/etc/fstab` 文件,增加或更新 rootfs 分区挂载点及对应的选项,比如允许自动挂载: ```sh UUID=your_uuid / ext4 defaults,noatime 0 0 ``` 5. **扩增分区**:可以使用 `resize2fs`, `fdisk` 或 `gparted` 等工具来扩大已经挂载的分区。这取决于你的设备和分区类型。 6. **重启验证**:完成上述步骤后,重新启动路由器并检查新分区是否成功挂载和扩容。 7. **设置swap分区**:如果还需要添加交换空间,也可以在这一步进行,对于性能提升很有帮助。 8. **清理无用文件**:检查并移除再需要的大文件或程序,释放额外空间。 请注意,每个设备的操作可能会略有差异,一定要按照设备的实际磁盘布局和文件系统类型来进行。此外,在操作过程中务必小心,因为错误的操作可能导致系统无法恢复。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值