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 ローダーが必要です。OS ローダーは、上位と下位の役割を果たすもので、UEFI 側では自身を efi 形式にパッケージ化し、特定の場所に保存します。kernel に直面した場合は、elf 形式を解析してロードします。

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

この FAT32 パーティションは通常、ディスク全体の最初の位置にあり、サイズは約 100M 程度です(GB やそれ以上でも柔軟に対応できます)。UEFI ファームウェアは FAT32 フォーマットのパーティションが存在するディスクをすべて起動ディスクとして扱い、これらのディスクを起動メニューに追加します。起動できるかどうかは関係ありませんが、具体的なターゲットを選択すると、固定パス(/efi/bootloader を探す)を持つ UEFI プレフィックスがある場合は検索します。

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

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

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

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