UEFI
UEFI が出るまでは何が問題だったか?
MBR のサイズが小さすぎて、複雑なブートが困難。2段構えのブートローダーを作る必要がある。
→UEFI 以前のブートシーケンス(PC/AT,レガシー)の
MBR はファイルシステム外であるため、OS から操作が困難な場合がある。
ディスクを差し込むだけで、そのディスクに実行権が与えられてしまうので、セキュリティ的に問題がある。
8086 アーキテクチャ(16bit)からスタートして AMD64 アーキテクチャ(64bit)に切り換える必要がある。
8086 アセンブラで記述する必要がある。現代のコンパイラではコンパイルできないことがある。
アーキテクチャの切り替え、初期化プロセスをブートローダーでやらなければならない。
BIOS は16bitモードでしか動かないため、64bit に移行すると自力で全部やらなければならない。
あるいは 8086 の仮想化で BIOS を呼び出す。
UEFI からはどうなったか?
ブートローダーをファイルシステムに置けるようになった。
最初から AMD64 アーキテクチャ(64bit) で動作。
関数(ABI)による呼び出しが可能。
仕様書
https://uefi.org/specifications
参考
現代における自作OSの難しさ 〜自作OSのいまと昔 第2回 https://knowledge.sakura.ad.jp/22963/