Mikan OSを自作してみる #4
今回やった内容
- EDK2について学んだ
- ビルド環境の構築を行なった
学習記録
EDK2
<EDK2とは>
はUEFI BIOS自体の開発とUEFI BIOS 上で動くアプリケーションの開発にも使うことができる開発キットである。
<EDK2のファイル構造>
edk2/ edksetup.sh 環境変数設定用スクリプト Build/ ビルドの成果物が出色されるディレクトリ Conf/ target.txt ビルド設定(何をビルドするかを設定) tools_def.txt ツールチェーンの設定 Mdge/ EDKの中心的ライブラリのパッケージディレクトリ ...Pkg/ その他のパッケージディレクトリ ConfとBuild以外のディレクトリはパッケージごとに別れている。 <パッケージ構造> AppPkg/ AppPkg.dec パッケージ宣言(declaration)ファイル AppPkg.dsc パッケージ記述(description)ファイル Applications/ UEFIアプリケーションを格納するディレクトリ Hello/ Hello モジュールディレクトリ Hello.c Hello.inf モジュール定義ファイル decファイルはパッケージ名やパッケージ内のソースコードから利用する定数を定義する。 dscファイルは出力ディレクトリ名やサポートされるアーキテクチャ、サポートするビルドターゲットなどのビルドに関する設定を書く。
Buildディレクトリはbuildコマンドによって成果物が出力される。
AppPkgをビルドすると
Build/AppPkg/DEBUG_GCC5/X64/Hello.efi などに目的の EFI アプリが出力されるらしい。edksetup.sh
EDK2のビルドコマンドが動くようにするための準備用スクリプト
target.txt
(設定項目)
・ACTIVATE_PLATFORM : ~/ *.dsc
ビルド対象のパッケージの .dscファイルを指定する。
DSCファイルとはパッケージ記述ファイルのことであり、主にパッケージのビルド設定を書くファイルである。
・TARGET : DEBUG
DEBUG、RELEASE、NOOPT、UserDefinedのいずれかを設定する。
・TARGET_ARCH:X64
どのアーキテクチャ向けのバイナリを作るか。(例)X64 、ARM
・TOOL_CHAIN_TAG:
ビルドに用いるツールチェインとtools_def.txtの Supported Tool Chainsから選ぶ。
ビルド環境の構築
ビルド環境の構築はほぼ以下のリンクの通りに行いました。 github.com
10月14日
詰まった、、、、 どうやらubuntuのアーキテクチャはx86_64でMac_M1のUTM上で動くubuntuはarm64のものしかなさそうなのでDokerを使わなければならないかも、、、、10月15日
AMD64のubuntu (ubuntu-18.04.6-desktop-amd64.iso) をUTM上に実装してみたがM1とは相性が悪く動作が重すぎたため使い道にならない 次にintel core i5のMac bookでvirtual box を使って ubuntuを実装すると動作はスムーズに進んだ10月16日
ブートローダーのビルドができない、、、、、
これ以降1ヶ月近く放置していました。
- 現在(11月11日)
よくわからないけどbuildできた!!! 原因はよくわからないが edk2ディレクトリの生成を失敗していたのからなのか、 それかsudo apt update
で保留の項目が出ていたのをsudo apt-get dist-upgrade
でアップデートさせたらからなのだろうか、、、 多分後者だと思う。