ブートセクタ(GPTまたはMBR)、ファームウェア(BIOSまたはUEFI)の組み合わせのインストールとブートシナリオは何ですか?

ブートセクタ(GPTまたはMBR)、ファームウェア(BIOSまたはUEFI)の組み合わせのインストールとブートシナリオは何ですか?

この記事のすべての混乱は、既存の技術と新技術の共存、そして用語の誤用から来ていると思います。https://en.wikipedia.org/wiki/System_partition_and_boot_partition。コンピュータ技術や用語の創始者が状況を混乱させるのを避け、明確かつ一貫して記録するように努力したかどうかはわかりません。私はそれらを自分で理解することはできません。

https://en.wikipedia.org/wiki/BIOS_boot_partitionブートセクタ(GPTまたはMBR)、ファームウェア(BIOSまたはUEFI)、ブートローダ(GRUBまたは...?)のさまざまな組み合わせについて言及されているさまざまなシナリオがあるようです。私はこれを読んで迷子になったと感じました:

GRUB の 2 番目のステップを維持するには、GPT パーティションストレージデバイスに BIOS ブートパーティションが必要です。従来のMBRパーティションデバイスでは、最初のセクタの直後に続くディスクセクタは通常使用されません。これは、パーティションスキームが特別な目的で指定されず、パーティションツールがソート目的で使用されないためです。 GPT ベースのデバイスでは、セクタは物理パーティションテーブルを保持するため、追加のパーティションが必要です。 MBRでパーティション化されたディスクでは、ブートローダは通常、MBRに格納されているコード部分(512バイトを超えることはできません)が最初のステップとして実行されるように実装されています。主に、より複雑な2番目のステップをロードすることです。ファイルシステムからオペレーティングシステムカーネルを読み込み、ロードします。

EFIパーティショニングに関する記事もあります。https://en.wikipedia.org/wiki/EFI_system_partition。 UEFIがBIOSを置き換え、BIOSはパーティションではなくROMに保存されているので、UEFIもROMに保存されていると思いましたが、「EFIパーティション」を見て混乱しました。 「EFIパーティション」は、UEFIを保存するために特に使用されるパーティションですか、それともいくつかのブートローダですか?

私も見つけました。https://askubuntu.com/a/579259/1471これはよりよく説明されているようですが、「レガシーモードでのLinux起動」と「他のレガシーオペレーティングシステムの起動」という表現ではまだ迷っています。

試してみることができます一般言語どんなシーンがあるか説明してください。

もはや使われていないものは何であり、ますます採用されており、時間を投資する価値があるものは何ですか?

これは私が聞いたことです。

  1. Modern Operating Systemsなどの一部のオペレーティングシステムの本では、ブートローダの一部はブートディスクのMBRセクタに保存され、残りはブートパーティションのブートセクタに保存されていると言われています。ファームウェアやブートローダ専用のパーティションがないようです。私が知る限り、ブートパーティションはブートローダの保存(一部)専用パーティションではなく、オペレーティングシステムがインストールされる場所です。ブートディスクのMBRセクタは、ブートローダの保存(一部)専用パーティションではありません。

  2. GPTブートディスクとBIOS GRUBパーティションを持つ古いラップトップがあります。。このパーティションがGRUBのプログラム全体を保存するための専用か、GRUBの一部だけを保存し、GRUBの残りの部分がオペレーティングシステムがインストールされているパーティションのブートセクタに保存されているかわかりません。 ..?

    $ sudo parted -l
    [sudo] password for t: 
    Model: ATA ST1000LM014-1EJ1 (scsi)
    Disk /dev/sda: 1000GB
    Sector size (logical/physical): 512B/4096B
    Partition Table: gpt
    Disk Flags: 
    
    Number  Start   End     Size    File system     Name  Flags
     1      1049kB  2097kB  1049kB                        bios_grub
     2      2097kB  16.0GB  16.0GB  linux-swap(v1)
     4      116GB   716GB   600GB   ext4
     3      716GB   1000GB  284GB   ext4
    
  3. GPTブートディスクとUEFIパーティションがある古いが、最新のノートブックが見つかりました。 2と同様の問題があり、UEFIパーティションがUEFIまたは一部のブートローダ(一部または全部)を保存しているかどうかはわかりません。

    $ sudo parted -l
    [sudo] password for t: 
    Model: ATA TOSHIBA MQ01ABF0 (scsi)
    Disk /dev/sda: 500GB
    Sector size (logical/physical): 512B/512B
    Partition Table: gpt
    Disk Flags: 
    
    Number  Start   End    Size   File system  Name                  Flags
     1      1049kB  538MB  537MB  fat32        EFI System Partition  boot, esp
     2      538MB   500GB  500GB  ext4
    

    ありがとうございます。

答え1

コンピュータがPOSTを完了し、特定のディスクからOSを起動するように実行された場所から始めて、チェーン全体を見るのが役に立つと思います。 MBRを使用すると、多くの歴史的限界に直面し、非常に小さなステップを実行し、非常に単純な作業のみを実行する必要があります。 UEFIでは、ハードウェアとタスクを抽象化するのに役立つプラットフォームドライバがあります。

MBRチェーン:

  • パーティションテーブルのブートローダコード(ベクトル)。
  • ブートローダーコードがパーティションテーブルの最後と最初のパーティションの間にあるマスターブートレコード。
  • オペレーティングシステムまたは専用ブートパーティションのボリュームブートレコード。
  • オペレーティングシステムのGrubなどのメニューを含むフルブートローダまたは専用ブートパーティション(オペレーティングシステムカーネルとブートローダがサポートしていないファイルシステムを読み取るドライバを保持するため)。

GPTチェーン付きMBR:

  • BIOS ブートパーティションのブートローダコードです。
  • オペレーティングシステムまたは専用ブートパーティションのボリュームブートレコード。
  • オペレーティングシステムのGrubなどのメニューを含むフルブートローダまたは専用ブートパーティション(オペレーティングシステムカーネルとブートローダがサポートしていないファイルシステムを読み取るドライバを保持するため)。

それでも以前の方法で起動しているので、パーティションの特別な最初のセクタにあるオペレーティングシステムパーティションでオペレーティングシステムの次の起動手順を見つけるなど、以前のメカニズムに頼る必要があります。

私が見た珍しいことの1つは、chrx開発者が特別なChromeOS-GPTレイアウトを使用してChromebookからサードパーティのLinuxを起動する方法です。 Grubはブロックリストで起動するのは安全ではないと不平を言いますが、多くのユーザーがこの方法でChromebookを起動します。

UEFIチェーン:

  • /boot/efi/EFI/ubuntuブートローダは、プライマリディレクトリのオペレーティングシステムパーティションまたはEFIシステムパーティションのオペレーティングシステム固有のディレクトリ(たとえば)にあります。
  • オペレーティングシステムのGrubなどのメニューを含むフルブートローダまたは専用ブートパーティション(オペレーティングシステムカーネルとブートローダがサポートしていないファイルシステムを読み取るドライバを保持するため)。

すでにルートパーティションを同期し、GrubイメージをEFIパーティションの正しい場所に配置しました(ESPパーティションもこのように表示されています)。これは通常、より複雑なMBRブートチェーンでは機能しません。この場合、ファイルが正しい場所にあることを確認するだけでなく、パーティションテーブルのデータパターンがパーティションテーブルの背後にあることを確認する必要があります。 , OS パーティションが範囲外でないことを確認してください。このステップでは、ブートローダコードでアドレスを指定でき、拡張パーティションではなく最大4つのプライマリパーティションの1つです(この場合でもGrubは起動を管理できます)。

もはや混乱を引き起こさなかったらと思います。申し訳ありません。今はもっと簡単に説明することはできませんし、トピック全体を自分で習得したとは思わず、コードの記述には関与しません。

関連情報