虚拟机下的OpenWrt磁盘Overlay扩容

补充一下,以下是针对SquashFS 格式的img进行的扩容,针对ext4的扩容网上也能找到。

ext4的镜像用以下方式不生效,因为这种情况下不存在overlay。

========================================

方式一:使用新磁盘扩容(推荐)
这种方式不仅适用于虚拟机,也适用于裸机安装的OpenWrt系统。

给新磁盘分区并格式化

对于裸机,可使用USB、SATA等接口添加新硬盘;对于虚拟机,可在虚拟机配置项中添加新虚拟磁盘。

以虚拟机为例,我这里添加一个1GB的新虚拟磁盘。

添加完成后进入OpenWrt的Shell。(通过ssh或者直接使用虚拟化平台提供的控制台)

安装分区需要用到的工具:

opkg update
opkg install fdisk kmod-fs-ext4

查看系统现有的磁盘和分区信息,我使用的是原版的OpenWrt,默认只有120M大小的磁盘,安装几个插件,空间就已经捉襟见肘了。/dev/sda是原有的系统盘,/dev/sdb是我刚添加的1G虚拟磁盘。

root@OpenWrt:~# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 4.0M      4.0M         0 100% /rom
tmpfs                    54.1M      2.3M     51.8M   4% /tmp
/dev/loop0               92.8M     73.7M     12.1M  86% /overlay
overlayfs:/overlay       92.8M     73.7M     12.1M  86% /
/dev/sda1                15.7M      4.8M     10.6M  31% /boot
/dev/sda1                15.7M      4.8M     10.6M  31% /boot
tmpfs                   512.0K         0    512.0K   0% /dev

root@OpenWrt:~# fdisk -l
Disk /dev/loop0: 100 MiB, 104857600 bytes, 204800 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 120.5 MiB, 126353408 bytes, 246784 sectors
Disk model: Virtual disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x529e51f2

Device     Boot Start    End Sectors  Size Id Type
/dev/sda1  *      512  33279   32768   16M 83 Linux
/dev/sda2       33792 246783  212992  104M 83 Linux


Disk /dev/sdb: 1 GiB, 1073741824 bytes, 2097152 sectors
Disk model: Virtual disk
Units: sectors of 1 
在编译 OpenWrt 时对系统或镜像进行扩容操作,通常涉及以下几个方面: ### 1. 文件系统扩容OpenWrt 中,文件系统的大小通常由固件镜像的大小决定。如果需要在编译时扩大镜像,可以通过修改配置文件来调整镜像的大小。例如,在 `target/linux/<platform>/image/Makefile` 文件中,可以找到与镜像大小相关的参数,并进行修改: ```makefile # 修改 rootfs 分区大小 ROOTFS_SIZE := 32m ``` 将 `32m` 调整为所需的大小,如 `64m` 或更大的值。这将影响最终生成的镜像文件的大小,从而为系统提供更多的可用空间[^2]。 ### 2. 分区表调整 如果目标设备使用的是多分区结构,可能需要调整分区表以适应新的文件系统大小。可以在设备树(Device Tree)中找到分区定义,并根据需要调整每个分区的大小。例如,在 `.dts` 文件中,可能会看到如下内容: ```dts partitions { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; partition@0 { label = "bootloader"; reg = <0x0 0x40000>; }; partition@40000 { label = "kernel"; reg = <0x40000 0x140000>; }; partition@180000 { label = "rootfs"; reg = <0x180000 0x580000>; // 修改此值以扩大 rootfs 分区 }; }; ``` 通过调整 `reg` 字段的大小,可以扩展相应的分区以适应更大的文件系统[^2]。 ### 3. 内核配置 在某些情况下,可能需要调整内核配置以支持更大的文件系统。可以通过 `make menuconfig` 进入内核配置界面,并检查与文件系统和存储相关的选项。例如,确保启用了对大容量存储设备的支持,以及适当的文件系统类型(如 ext4)。 ### 4. 镜像打包工具 OpenWrt 使用 `ImageBuilder` 工具来生成最终的镜像文件。可以在 `ImageBuilder` 的配置文件中调整镜像的大小。例如,在 `ImageBuilder` 的 `target/linux/<platform>/config` 文件中,可以设置镜像的总大小: ```makefile CONFIG_TARGET_ROOTFS_SIZE="64M" ``` 这将直接影响生成的镜像文件的大小,确保其包含足够的空间以容纳扩大的文件系统[^2]。 ### 5. 测试与验证 完成上述修改后,重新编译 OpenWrt 并生成新的镜像文件。使用 `dd` 或其他工具将镜像写入目标设备后,可以通过 `df -h` 命令检查文件系统的大小是否已正确扩展。如果一切正常,应该可以看到根文件系统的大小已经增加到预期值。 ### 相关问题 1. 如何在 OpenWrt 中动态调整运行时的文件系统大小? 2. OpenWrt 的分区表是如何定义的,以及如何影响镜像的大小? 3. 在 OpenWrt 中,如何通过 `ImageBuilder` 工具调整镜像的大小? 4. 如何确保在 OpenWrt 编译过程中启用对大容量存储设备的支持? 5. 在 OpenWrt 中,如何验证生成的镜像文件是否已正确扩展文件系统大小?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骆驼1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值