Linux

如何創建一個壓縮的 buildroot 系統映像,該映像會擴展以填充它所快閃記憶體到的媒體的可用儲存空間?

  • May 2, 2021

我需要為具有不同儲存大小的各種 x86_64 EFI 系統創建一個 Buildroot 系統,但不幸的是,pc_x86_64_efi 配置創建了一個具有固定分區大小的 img 文件,而不是擴展到它被快閃記憶體到的媒體的完整大小的文件。如果我想讓它填充各種驅動器,我需要在文件系統配置中手動指定驅動器的大小,然後重新編譯,這是一個很大的痛苦,最終會生成一個 128GB 以上的海量圖像文件。我嘗試使用 resize2fs 從正在執行的系統中調整它的大小,但這不起作用。理想情況下,我希望它在刷新時擴展到驅動器的完整大小,或者在首次啟動時調整大小。這是可能的,還是超出了 Buildroot 的限制?

如果您已經建構了“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

第 2 行給出了磁碟的總大小,假設您需要調整大小的分區是最後一個分區,您可以發出以下命令將其擴展至最大值:

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

引用自:https://unix.stackexchange.com/questions/608089