我刚刚将 2gb 的 micro sd 添加到 16 gb 上,然后对分区进行了 gparted。
我第一次使用 gparted 将分区大小调整到最大值。对齐到 MiB。
系统没有启动。
然后我再次添加相同的内容,这次使用“对齐到圆柱体”将其调整到最大大小。
然后系统启动了。为什么第一次没有启动?
系统是一个立方体板,类似于 Raspberry Pi。
答案1
您无需说明您使用的是哪种操作系统或引导加载程序,但许多引导加载程序都依赖于直接扇区引用。也就是说,MBR 中的引导代码是一个基本的存根,它告诉计算机“执行扇区 X 以继续”,其中 X 是硬编码的扇区值,如 63、2048 或 27934920。例如,LILO 就是这样做的。Microsoft 的 MBR 引导加载程序不会这样做,但其第二阶段引导加载程序(位于分区的引导记录中)会这样做,因此效果可能相同。
过去,柱面对齐很常见,即使在今天,许多磁盘都是使用默认对齐柱面的工具创建的。此类磁盘通常从扇区 63 开始第一个分区,然后从奇怪的值开始后续分区,这些值是(虚构的)柱面大小的倍数。假设您的原始磁盘是使用旧工具创建的,甚至使用设置为使用旧柱面对齐系统的新工具创建的。进一步假设您使用 GParted 调整该磁盘上的分区大小。如果将其设置为新的 2048 扇区对齐,则结果将是任何调整大小的分区的起点都将被移动,这将导致引导加载程序中的值不正确。如果您在设置柱面对齐的情况下执行此操作,则分区的起点可能不会受到影响。此外,分区调整大小操作有时最终会移动文件的内容,因此即使分区的起点没有改变,如果有基于扇区的对文件的引用,它们可能会失效。(不过,这种情况在缩小分区时比扩大分区时更常见。)
总之,调整启动分区的大小存在导致其无法启动的风险,至少在基于 BIOS 的计算机上是如此。(基于 EFI 的系统更安全,因为据我所知,它们的引导加载程序从不依赖扇区值引用。但它们可能会因其他因素而受到影响,例如分区号发生变化。)