如何创建一个压缩的 buildroot 系统映像,该映像可以扩展以填充其闪存介质的可用存储空间?

如何创建一个压缩的 buildroot 系统映像,该映像可以扩展以填充其闪存介质的可用存储空间?

我需要为具有不同存储大小的各种 x86_64 EFI 系统创建一个 Buildroot 系统,但不幸的是,pc_x86_64_efi 配置会创建一个具有固定分区大小的 img 文件,而不是一个扩展到闪存到的介质的完整大小的文件。如果我想让它填满各种驱动器,我需要在文件系统配置中手动指定驱动器的大小,然后重新编译,这是一个很大的麻烦,最终会生成一个巨大的 128GB+ 映像文件。我尝试使用 resize2fs 在正在运行的系统内调整它的大小,但没有成功。理想情况下,我希望它在闪存时扩展到驱动器的完整大小,或者在首次启动时调整它的大小。这可能吗,还是超出了 Buildroot 的限制?

答案1

如果您已构建“parted”和“resize2fs”,则可以调整分区大小、调整文件系统大小,然后在脚本中重新启动。

例如,我正在构建一个系统,其中将 500MB 的图像闪存到 16GB SD 卡上:

# parted -s /dev/mmcblk0 u s p
Model: SD SL16G (sd/mmc)
Disk /dev/mmcblk0: 31116288s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End       Size      Type     File system  Flags
 1      1s      65536s    65536s    primary  fat16        boot, lba
 2      65537s  3111628s  3046092s  primary  ext4

第二行给出了磁盘的总大小,假设您需要调整大小的分区是最后一个分区,您可以发出以下命令将其扩展到最大:

# parted -s /dev/mmcblk0 u s resizepart 2 31116287
# resize2fs /dev/mmcblk0
# reboot

相关内容