使 GPT 分区表接受可变卷大小

使 GPT 分区表接受可变卷大小

我经常将用作小型计算机(Raspberry Pi、NVidia Jetson、小型 x86 PC)系统磁盘的 SD 卡或其他闪存驱动器复制到映像文件中进行备份。

但是,在恢复这些备份时,目标卷几乎每次都不完全匹配源卷大小,例如,即使是来自同一供应商的 SD 卡大小也略有不同,或者小型 SD 卡甚至已经淘汰,市场上不再有售。所以我总是选择从几乎相等到更大的卡。

看来 GPT 分区表无法很好地处理这些更改,因为生成的副本不再启动目标设备。然后,我定期使用 GNU parted 或 gdisk 等工具来检查这些驱动器并重写分区表 - 经常有人抱怨驱动器比 GPT 规定的大(好吧,我猜,后面的扇区将不会被使用),但“备份 GPT”也被认为已损坏 - 我猜这些表的放置取决于驱动器的总块数或其他什么?

那么如何制作一个可以在第一次尝试时启动的映像,而无需在写入后“修复”它?这似乎是可能的,因为小型计算机的 vanilla 映像通常很小,即使写入更大的磁盘,它们也总是可以启动。

答案1

在我看来,这是可以预料到的:

在此处输入图片描述

辅助 GPT 应位于相对于驱动器末端的特定 LBA 地址,或者更确切地说是总 LBA 或最大 LBA。如果您随后因硬件不同而更改此地址(最大 LBA),除非您移动辅助 GPT 以满足要求,否则情况将不妙。

换句话说,如果您要将此类磁盘映像文件映像/恢复到不同大小的驱动器,那么您需要一个考虑到此类问题的工具。

然后,除非您调整文件系统大小(缩小尺寸),否则在恢复到较小的驱动器时仍然可能会遇到问题。

相关内容