banner
fwqaaq

fwqaaq

🐭👨

UEFI の紹介

コンピュータの起動プロセス#

ROM -> LOADER -> RUNTIME -> OS LOADER -> OS

  • Loader:一般的なものには、BIOS と UEFI(後者は前者の後継者です)が含まれます。通常、メモリの初期化とランタイムおよび OS ローダープログラムの読み込みが行われます。
  • Runtime:ファームウェアプログラムはランタイムサービスを提供するために存在し、ハードウェアの最も基本的な抽象化を提供します(OS に一連の抽象化を提供します)。
  • OS Loader:または多くの人が BootLoader とも呼びます。ファイルシステムのブート、ネットワークカードのブート、オペレーティングシステムの起動設定の設定、オペレーティングシステムの読み込みなどを行う必要があります。一般的な OS ローダーには、GRUB、U-Boot、LinuxBoot などがあります。

UEFI によるローダーの検索と起動方法#

現在、BIOS ではなく UEFI を使用してローダーを作成することが一般的ですが、BIOS の名前は口頭での習慣にすぎません。マザーボードの UEFI ファームウェアは、efi形式のファイルのみを認識できるため、elf形式のカーネルを読み込むことはできません。この場合、OS ローダーが必要であり、UEFI 側では自身をefi形式にパッケージ化し、特定の場所に保存します。一方、カーネルに直面する場合は、elf形式を解析して読み込みます。

このようにして、コンピュータは起動段階でローダーを正常に見つけ、さらに OS を読み込んで実行することができます。ローダーは実際にはプログラムの形式です。ローダーが存在する特定の場所は、起動デバイスのFAT32形式のパーティションにある必要があります。その後、このルートディレクトリの下にefiディレクトリを作成し、efiディレクトリの下にbootディレクトリを作成します。コンピュータのファームウェアは、この固定されたパスを使用してローダーを検索し、Bootx64.efiという名前のファイルを含む必要な仕様に従います(32 ビットシステムの場合は 64 を含めることはできません)。

このFAT32パーティションは通常、ディスク全体の最初の位置にあり、サイズは約 100M(または GB、さらに大きい場合もあります)です。UEFI ファームウェアは、FAT32形式のパーティションが存在するディスクをすべて起動ディスクとして扱い、これらの検出されたディスクを起動メニューに追加します。起動できるかどうかは問題ではありません。具体的なターゲットを選択すると、UEFI プレフィックスを持つ場合は固定パス(/efi/bootloaderを検索)に移動します。

同様に、ローダーはkernelファイルも検索しますが、同じディレクトリにkernelファイルを配置します。ローダーがkernelファイルを見つけると、elfファイル形式に従って解析し、実行可能なelfファイルであれば、メモリに読み込んで実行します。

FAT32 パーティション上のカーネルの読み込み方法#

これが UEFI の存在意義です。どのメモリブロックにロードするか、セグメントまたはページングを考慮する必要はありません。UEFI は、起動段階と実行段階の両方で、開発者が利用できる非常に豊富なサービスを提供します。起動時サービスと呼ばれるこれらのサービスは、名前の通り、起動時にのみ使用できます。一方、ランタイムサービスは、コンピュータが起動して正常に動作している後も使用できます。これらはすべて UEFI のインターフェースで提供されます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。