web-dev-qa-db-ja.com

UEFI / GPTおよび移動するC:\パーティション

MoboがBIOSを使用していて、ブートローダーがMBRに配置されていた場合、Windowsパーティションを移動すると、システムの起動に失敗したことを覚えています。 GPTパーティションテーブルとUEFIマザーボードを備えた友人のPCで(誤って)Cパーティションを移動し終えたところです(サイズを変更しようとしました)。驚いたことに、PCは変更について文句を言わずに完全に起動しました。パーティションの最初のセクター(そして私の友人は私に怒っていません)。これは、UEFIブートローダーがアドレスではなくパーティションのUIDを使用しているためだと思います。

これは、GPTシステムでOSパーティションを自由に移動できることを意味するのだろうかと思います。また、これはWindowsまたはGRUBにも適用されますか?

3
Manchineel

これは、UEFIブートローダーがアドレスではなくパーティションのUIDを使用しているためだと思います。

これは部分的には正しいですが、完全ではありません。 BIOSモードのブートローダーは、上記のステートメントが示すように、後続のコードを識別するためにセクター番号に依存することがよくあります。つまり、BIOSはMBRを読み取り、そこに含まれるすべてのコードを実行します。 MBRは小さすぎて、非常に柔軟なブートローダーを保持できないため、他の場所にあるコードに制御を渡します。通常、MBRは、ブートフラグが設定されたパーティションを見つけ、EBR(最初のセクター)でコードを実行することにより、セクター番号で識別します。 )そのパーティションの。このセカンダリブートローダーコードは、このプロセスを繰り返す可能性がありますが、これもセクター番号に依存することがよくあります。したがって、パーティションを移動したり、開始点からサイズを変更したりすると、ブートローダーコード自体が移動されるため、OSが起動できなくなる可能性があります。

対照的に、EFIでは、ブートローダーはnot MBRまたはパーティションのEBRに格納されます。代わりに、ブートローダーはEFIプログラムファイルとして EFIシステムパーティション(ESP)に保存されます。 これらのプログラムファイルは、必要に応じて大きくすることができます(ファイルサイズによって課せられる制限まで、= RAMサイズなど)なので、BIOSブートローダーが通常分割されるような厄介な方法でブートローダーを分割する必要はありません。さらに、EFIはBIOSとは異なり、パーティションを理解するため、 EFIモードのブートローダーは、必要に応じてパーティションを参照できます。

EFIブートローダーは、 [〜#〜] guid [〜#〜] またはその他の方法でパーティションを見つける場合がありますが、それは実際には重要な重要な違いではありません。質問。 BIOSモードのブートローダーは、ブートローダーコード自体が移動するため、パーティションを移動すると壊れることがよくあります。ただし、EFIでは、ブートローダーはファイル内にあり、特定のセクターにロックされているコードではありません。したがって、OSパーティションを移動しても、ブートローダーコードは移動しません。 ESP(ブートローダーが存在する場所)を移動した場合でも、EFIはパーティションとFATファイルシステムを理解するため、ESPの識別情報とその結果、ブートローダーのファイル名は変更されません。

これは、GPTシステムでOSパーティションを自由に移動できることを意味するのだろうかと思います。また、これはWindowsまたはGRUBにも適用されますか?

原則として、BIOSベースのシステムよりもEFIベースのシステムでパーティションを移動する方が安全です。しかし、絶対に100%安全だとは言えません。まず、パーティションの移動操作によってファイルシステムが損傷するリスクが常にあります。ただし、このような操作について説明する場合は、これは単なる標準的な警告です。あなたの質問のより重要な問題は、ブートローダーが彼らが望む方法で彼らが望むことを何でもすることができるということです。この例はわかりませんが、EFIベースのブートローダーcouldは、生のセクター番号に依存してOSのカーネルを識別します。これにより、カーネルが存在するパーティションを移動するのが安全でなくなります。ブートローダーがパーティション番号などの機能を使用してカーネルでパーティションを識別する場合、パーティションを移動するとパーティション番号が変更されると、パーティションを移動した後にブートプロセスが失敗する可能性があります。 OTOH、パーティション番号を変更しなければ、パーティションを移動しても問題が発生しない可能性があります。したがって、パーティション移動操作の安全性は、ブートローダーとパーティション移動時に何が起こるかの詳細に依存します。

5
Rod Smith