BIOS - kentakozuka/yetos GitHub Wiki

BIOSの歴史

Legacy BIOS

新世代BIOS "UEFI" の構造と実装

BIOS

  • Basic Input/Output System
  • マザーボードの ROM に組み込まれているプログラム
graph TB;
  OS---Loader
  Loader---BIOS
  BIOS---Firmware
  Firmware---Hardware
  • Legacy BIOS
  • UEFI BIOS

Legacy BIOS

  • 昔のBIOS

UEFI

  • Unified Extensible Firmware Interface
  • OSとファームウェア間のインタフェースの仕様
  • UEFI ブートマネージャが FAT ファイルシステムでフォーマットされた EFI System Partition (ESP) に存在する UEFI アプリケーション (この場合特に UEFI OS ローダ) を実行する
Number  Start   End     Size    File system  Name                   Flags
 1      1049kB  274MB   273MB   fat32        EFI system partition   boot, esp

UEFIの仕様はここからみれる Version 2.9は2540ページある。。。

EBC

tl;dr

  • EFI Byte Code
  • EBCは主にデバイスドライバ目的で書かれる。
  • OSなどのplatform非依存かつ,processor非依存なデバイスドライバを読み込み,実行するための仕組み
  • ファームウェアはEBCを実行できること(インタープリタを用意すること)をUEFIによって要求されている。

UEFI仕様の最後の "Appendix R - Glossary"が為になる。

EFI Byte Code (EBC). The binary encoding of instructions as output by the EBC C compiler and linker. The EBC Image is executed by the interpreter.

EBC Cコンパイラとリンカが出力する命令のバイナリコード。その EBCイメージは、インタプリタによって実行されます。

wikipedia

EFIの仕様では、標準的なアーキテクチャ依存のデバイスドライバに加えて、プロセッサに依存しないデバイスドライバ実行環境を提供しており、EFI Byte CodeまたはEBCと呼ばれている。システムのファームウェアは、その環境にロードされたもしくはその環境内にあるEBCイメージ用のインタプリタを実行できることを、UEFI仕様によって要求されている。その点、EBCはOpen Firmwareに似ている。これはハードウェアに依存しないファームウェアで、PowerPCベースのAppleのMacintoshやサン・マイクロシステムズのSPARCコンピュータなどの間で採用された。

EBCはUEFI 2.8でoptionalになった。

参考

https://retrage01.hateblo.jp/entry/2018/11/11/223022

UEFIアプリケーション

  • フリースタンディング環境で動作する

UEFI spec の「2 - Overview」をよむ

UEFI image

UEFI Images are a class of files defined by UEFI that contain executable code. The most distinguishing feature of UEFI Images is that the first set of bytes in the UEFI Image file contains an image header that defines the encoding of the executable image. UEFI イメージは UEFI によって定義されたファイルのクラスで、実行可能なコードを含んでいます。UEFI イメージの最も特徴的な点は、UEFI イメージファイルの最初のバイトセットが実行可能なイメージのエンコーディングを定義しているイメージヘッダーを含んでいることです。

EFLファイル

これが詳しい http://softwaretechnique.web.fc2.com/OS_Development/Tips/ELF/elf01.html