Hello EFI!

EFIとは、拡張可能なファームウェアのインターフェイス、UEFIとして標準化されている現在主流のBIOS(バイオス)です。 2015年には「30日でできる! OS自作入門」を参考に、旧BIOSで動くPCで起動する「IchigoJam for PC」を作ってましたが、UEFI対応にチャレンジする良いきっかけ「ゼロからのOS自作入門」が発売されました!

気になるのはメインで使っているArmアーキテクチャ、M1 Macで楽に開発できるかどうかでしたが、先人の知恵を発見! 「Mac で始める「ゼロからのOS自作入門」

USBメモリから無事ブートしました!
動いているC言語のプログラムはこちら。

#include <Uefi.h> #include <Library/UefiLib.h> EFI_STATUS EFIAPI UefiMain(EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *system_table) { for (;;) { Print(L"Hello EFI! "); } return EFI_SUCCESS; }

オープンソースの開発ツール「tianocore/edk2: EDK II」が使われています。API、いろいろ辿ってみることにしましょう。


オープンソースのエミュレーター「QEMU」を使って、M1 Mac上で動作確認もできたので、開発らくらく!


USBメモリでブートするには、出来上がった Loader.efi をFAT32でフォーマットし、efi/boot/bootx64.efi という名前と場所に置きましょう。 パーティションが2つになっているUSBメモリだとうまくいかないので、diskpartなどで1つにする必要があります。 あとはBIOS設定から直接ブートするか、USBメモリを優先にして再起動すればOKです。


IntelのMacBook Proなら動くのでは!?と期待しましたが、Optionキーを押しながら起動、選択はできますが、表示はされませんでした。惜しい!?

links
- ゼロからのOS自作入門
- 初版第1刷の正誤情報 | ゼロからのOS自作入門
- uchan-nos/mikanos: Educational Operating System

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS