非EFI/GPTインストールをEFI/GPTインストールにコピー

非EFI/GPTインストールをEFI/GPTインストールにコピー

最近SSD 2個(最初)を購入し、システムをそこに移す予定です。 MD RAID 1 + LVMを使用してください。新しいStretchインストールを設定するのか、可能であればJessieインストールを新しいディスクにコピーするのか、まだ決定していません。

UEFI/GPTを新しくインストールしたいです。新しいディスクにテスト拡張インストールを実行しましたが、現在jessieインストール(およびファイルシステム)を新しいディスクにコピーし、EFIシステムパーティションを残すことを検討して//homeます/boot。問題はこれがうまくいくかどうかです。非EFI / GPTおよびEFI / GPTのインストールは互換性がありますか?

GRUB2の仕組みのおおよその理解は、「一般」BIOS設定が通常GRUBの最初のステップをMBRに配置し、2番目のステップを通常パーティションに配置することです/boot。 UEFI / GPT設定では、おそらくすべてESPにあります。

ベストアンサー1

コピーは比較的簡単です。 Linuxのインストールは(ほぼ完全に)ファイルにすぎません。最大(唯一の)例外はBIOSのブートローダーであり、マスターブートレコードとマスターブートレコードと最初のパーティションの間のセクタにインストールされます。 UEFIは事実上この例外を削除します。今、ブートローダはファイルです。

簡単に言えば、BIOSブートが機能する方法は、BIOSがディスク(MBR)から最初のセクタを読み取り、そのセクタのコードを実行することです。コードには、利用可能なセクタを読み取るBIOS機能があり、grubの場合、MBRと最初のパーティションの間の残りのセクタから残りの部分を独自に読み込みます。これを行うには、GRUBが/bootおよび残りの部分から構成を読み取ることができるように、ファイルシステムを理解するのに十分なコードを提供する必要があります。これを行い、そこからカーネルとinitramfsも読み込みます。次にカーネルを起動します。

UEFIブートがどのように機能するか(簡単に言うと)、ファームウェアがパーティション(少なくともGPT、おそらくDOS)とファイルシステム(少なくともFAT)を認識することです。実行するコマンドを格納する一種のNVRAM(EFI変数)があります。シェルコマンドを考えてみましょう(UEFIにはシェルが含まれています)。つまり、パス(ディスク、パーティション、ファイルシステムへのパス)とパラメータです。コマンドを実行します。 Linux の場合、これは次のいずれかです。

  • GRUB(Debian、おそらくEFI/debian/grubx64.efi)などのブートローダまたは他のいくつかのブートローダ(refind、systemd-bootなど)
  • Linuxカーネル(Debianサポート喧嘩以来)
  • セキュアブート用のMicrosoft Signature Shimを選択し、上記のいずれかをロードします。

このコマンドには、ファイル、ネットワーク読み取りなど、UEFI スタックへのフルアクセス権があります。 GRUBの場合は、ext4、mdraid、LVMなどの独自のファイルシステムサポートが含まれています。

最終的に、これはLinuxのインストールに現れる違いは次のとおりです/boot/efi/。 GRUB はディスクの先頭にある特別なセクタにはインストールされず、Debian Next では異なるバージョンの GRUB にインストールされます。 grub-pcの代わりにgrub-efi-amd64(または-ia32)です。インストールされている grub パッケージを切り替える必要があります。

私が期待する唯一のことは、EFI変数を操作するには通常UEFIを介して起動する必要があることです。そのため、 grub のインストールが正常に動作するのが難しい場合があります。いくつかの回避策:

  1. システムをコピーしてgrubパッケージを変更したら、UEFI対応のリカバリディスク(たとえばStretchインストーラ、リカバリモードで実行)から起動し、grub-installまたはefibootmgrを実行します。

  2. システムにブート選択メニューがある場合は、EFI変数でブートオプションに設定されていなくてもDebianインストールを見つけることができます。

  3. grubコピー/boot/efi/EFI/debian/grubx64.efi-/boot/efi/EFI/BOOT/bootx64.efi公式UEFI代替パス(少なくとも64ビットシステムの場合)。これは、ファームウェア起動メニューに表示するのに十分です。

  4. システムがUEFIシェルを使用してシステムを起動できる場合。その後、grub-installまたはefibootmgrを使用してEFI変数を更新できます。

これが完了したら、コピー/変換されたシステムと元のUEFIを使用してインストールされたシステムとの間に違いはありません。

おすすめ記事