2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事では、UEFIアプリケーションの開発について説明します。
出来るだけ多くを網羅する資料を書き、自作OSの日本語資料増加への一助とならんと思いつつ、この記事を書いています。Sakadayoです。
本当に自作OS/低レイヤの日本語資料増えてほしい。

<この記事で解説すること>

①そもそもUEFIアプリとは何か(用語と共に)
②開発環境整備方法
③コードの書き方

UEFIアプリケーションとは

PC起動~OS開始までをサポートするUEFI。
UEFIがサポートするPC起動~OS開始までにUEFIアプリが関与しています。
例えばあなたが今見ているOSのブートローダもその一つ。

UEFIアプリでは様々な事が実行可能で、まとめても

・メモリ/ディスク操作
・I/Oデバイス操作
・ネットワーク通信
・セキュアブート

UEFIアプリ稼働の仕組み(主な用語を添えて)

ハンドルとプロトコル

UEFIはデバイス一つずつを取得し、ハンドルを付与します。
ハンドルにはプロトコル(機能)が伴っています。
そのハンドルから、プロトコル(機能)を呼び出す訳です。

プロトコルについては仕様書に詳しく書いてあります。
大体まとめてみると...

・コマンドラインの操作が出来るプロトコル
・ネットワークと通信が出来るプロトコル
・セキュアブートが出来るプロトコル

こんな感じで様々ある訳です。

開発環境を整備する

①Clang/LLVMとGCCコンパイラ
②QEMUとOVMF
③空のUSBメモリ・SDカードあるいは新しいパーティション

①は、https://github.com/llvm/llvm-project/releasesより。

②については、これは仮想化ソフトとその中でUEFIを起動する手段です。
https://qiita.com/sakadayo/items/81eace58a240e7e97f09
以前の私の記事で、これを見れば②についてが分かります。

③は実行する際にアプリを入れ込むIMGファイルが必要だからあります。
(IMGファイル=仮想ハードディスク)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?