osnosn

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

openwrt_21.02_img_空间扩容_改分区表大小

转载注明来源: 本文链接 来自osnosn的博客,写于 2021-11-08.

其他文章

环境

  • 扩容的操作是在命令行下的
  • 这是在 unraid 6.9 的终端内操作的,用到的命令 unraid 系统中都有,无需额外安装。
  • 理论上,在Linux的终端下,比如 debian,centos,应该是一样的。
  • 扩容后的 img 就可以在 unraid 中创建虚拟机。启动它了。
  • 以下测试成功的两个 img 映像文件,都是 GPT 分区格式的。并且在unraid 中 以 UEFI 方式成功启动。
    • unraid 中要用 uefi 启动,创建虚拟机时,BIOS: 要选择 OVMF
  • 如果要对硬盘,或者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/ .


posted on 2021-11-08 16:01  osnosn  阅读(793)  评论(0编辑  收藏  举报