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 安装、使用

此处不再赘述。

文中部分参考网络。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
引用: 在虚拟机上安装软路由的步骤如下: 1. 从网上下载一个基于X86的软路由固件,确保下载的文件后缀为 .img.gz 的版本。 2. 解压缩下载的文件,得到一个 .img 文件。 3. 打开虚拟机管理器,选择映像—硬盘映像—从计算机上传安装文件。 4. 选择存储空间并上传完成。 5. 在虚拟机中,点击新增,从硬盘映像中导入软路由文件。 6. 填入合适的软路由名称,并选择刚刚导入的软路由文件。 7. 给虚拟盘设定空间,配置网络,然后点击下一步。 8. 分配用户权限,并检查设置是否正确无误。 9. 点击应用,已载入虚拟机中。 10. 点击开机,等待运行后,点击连接,即可对软路由进行参数设置。 引用: 设置软路由的各项参数的步骤如下: 1. 在连接窗口中,等待字符停止跑动后,敲打几次回车键,出现“root@OpenWrt:”。 2. 键入命令 vi etc/config/network,然后按下插入键。 3. 将光标移到 "config interface ‘lan’" 下的 "option ipaddr '192.168.1.1'" 上方,并修改为你想要的软路由的静态IP地址,如 192.168.16.198。 4. 按下键盘上的 Esc 键,然后键入 ":wq",保存修改并退出。 5. 在 "root@OpenWrt:" 下,键入命令 reboot,重启软路由。 6. 在浏览器中输入刚才修改过的IP地址,如 192.168.16.198,即可进入 Openwrt 的登录界面。 7. 填写默认密码,即可登录系统。 8. 找到左侧菜单 网络—接口,选择 LAN 的接口进行修改。 9. 将 IPv4 网关填写为主路由的地址,如 192.168.16.1,自定义 DNS 服务器也填写为 192.168.16.1。 10. 打勾忽略此接口处,避免旁路由提供 DHCP 服务和主路由冲突。 11. 在台式电脑上进行 IP 的修改,填写一个与旁路由同网段的 IP 地址,如 192.168.16.250,子网掩码为 255.255.255.0,默认网关填写旁路由的 IP,即 192.168.16.198,DNS 服务器也填写为 192.168.16.198。 12. 点击确定,关闭网络设置。 13. 打开一个网页,检查是否能正常联网。 安装完 Openwrt 后,你就可以享受它带来的各种便利了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值