我需要为具有不同存储大小的各种 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