openwrt_21.02_img_空间扩容_改分区表大小
转载注明来源: 本文链接 来自osnosn的博客,写于 2021-11-08.
其他文章
- 实体路由器刷op后扩容,见【newifi_D2_新3_lede_扩容overlay_装可道云】
环境
- 扩容的操作是在命令行下的
- 这是在 unraid 6.9 的终端内操作的,用到的命令 unraid 系统中都有,无需额外安装。
- 理论上,在Linux的终端下,比如 debian,centos,应该是一样的。
- 扩容后的 img 就可以在 unraid 中创建虚拟机。启动它了。
- 以下测试成功的两个 img 映像文件,都是 GPT 分区格式的。并且在unraid 中 以 UEFI 方式成功启动。
- unraid 中要用 uefi 启动,创建虚拟机时,
BIOS:
要选择OVMF
- unraid 中要用 uefi 启动,创建虚拟机时,
- 如果要对硬盘,或者sd卡上的openwrt扩容,此文也有参考价值。
- 先把 img 写入磁盘,然后挂在Linux系统下,从修改分区表开始做。
虚拟机中安装openwrt的步骤
- 去官网下载 x86-64 的 xxxx.img.gz 的映像压缩包。
- 解压开来,变成 xxxx.img 映像文件。
- copy到 unraid 中,或者别的什么Linux 系统中,进行扩容。
- 把扩容之后的 img 文件,copy 到你的虚拟机系统,比如 unraid 中,用它创建 openwrt的虚拟机。
- 然后启动它,配置它,使用它。
扩容 openwrt-21.02.1-x86-64-generic-ext4-combined-efi.img
qemu-img resize xxxxxxxx.img 200M
#扩容映像本身, 根据你自己的需要,确定扩容的大小
losetup -f xxxxxxx.img
#挂载到 loop 设备
losetup -a
#查看挂在哪个 loop 设备上了,我这是 loop4
partx -a /dev/loop4
#读取分区信息,加载到系统
fdisk /dev/loop4
#分区扩容,显示这个映像是gpt格式的
m
显示fdisk的命令帮助,任何时候都可以用m看看帮助
x
进入高级菜单
p
列出分区表,看看分区2的Name
r
返回基本菜单
p
列出分区表
i
2
显示分区2的信息 抄下所有信息
---下面开始改分区表---
d
2
删除分区2
n
2
创建分区2
- 开始扇区,抄原来的分区2,一定要一样
- 结束扇区,默认 或者自己定义大小,但要比原来的大
- 有个警告,已经有文件系统,是否清除它的签名/标记,选"否"
t
2
11
修改分区2的类型为11 (Microsoft basic data), 因为原来就是这个type
x
进入高级菜单
u
修改分区2的UUID,抄原来的分区2,不改回原来的UUID,可能启动后挂不上
n
修改分区2的Name,原来的分区2没Name。这项可以跳过。
r
返回基本菜单, 才能写盘保存
w
保存
这个时候,有个警告,但又显示写成功了。不理它。
----分区表修改完成---
partx -u /dev/loop4
#更新系统中的分区信息,一定要更新,否则后面扩容会失败
e2fsck /dev/loop4p2
#检查文件系统, 带上-f
参数更省事
resize2fs /dev/loop4p2
#文件系统扩容
partx -d /dev/loop4
#卸载系统中的分区信息
losetup -d /dev/loop4
#卸载 loop 设备
------完成-----
- ext4 格式的img,没扩容显示 /dev/root 总 Size 是 102.4MB。
- img扩到200MB的结果,以uefi方式启动成功,扩容成功。空间大了不少。显示:
Filesystem Size Used Available Use% Mounted on
/dev/root 180.2M 15.7M 160.9M 9% /
扩容 openwrt-21.02.1-x86-64-generic-squashfs-combined-efi.img
也是 gpt 分区。扩容操作与 ext4-combined-efi.img 一样,
只是跳过 e2fsck 和 resize2fs 这两步。
- squashfs 没扩容是多大,忘了记录。
- img扩到200MB的结果,以uefi方式启动成功,扩容成功。空间利用率比ext4差了点。显示:
Filesystem Size Used Available Use% Mounted on
/dev/loop0 177.5M 75.7M 101.8M 43% /overlay
Overlayfs:/overlay 177.5M 75.7M 101.8M 43% /
其他尝试
- 对于 ext4-combined-efi.img 和 squashfs-combined-efi.img 这两个映像都是 gpt 分区。分别有三个分区,(1,2,128)。
cfdisk 不能对分区2直接 resize。因为openwrt-21版的分区2没有排在最后。
cfdisk 需要重新排序分区表(sort),才能resize分区。所以没有使用cfdisk。
gdisk 打开时说GPT分区表损坏。主表存在,但备份表没有。cgdisk 也是这个提示。
所以没有使用 gdisk 和 cgdisk。 - ext4-combined.img 和 squashfs-combined.img 没做扩容测试,这两个映像都是 MBR 分区格式。分别有两个分区,(1,2)。
gdisk 和 cgdisk 说要帮你转换成 gpt 格式。不能用于 mbr 的分区格式。
fdisk 看不到有 uuid。cfdisk 可以看到有uuid,并且可以直接对第二分区 resize。
建议用 cfdisk 修改分区。更方便。 - sfdisk 好复杂,不会用。sgdisk 也不会用。
- parted 命令 unraid 中没有。
- kpartx 可以直接操作 img 文件,它会自动挂载到 loop 设备上。但 unraid 中没这个命令。
转载注明来源: 本文链接 https://www.cnblogs.com/osnosn/p/15524655.html
来自 osnosn的博客 https://www.cnblogs.com/osnosn/ .