SyntaxHighlighter

2013年4月23日火曜日

[EDK]VMWarePlayerのUEFI ShellでShellアプリを動かしてみる

VMWarePlayerがEFIに対応しているという情報を見かけたので試してみました。
ついでに、EFI Shellを立ちあげてShellアプリを動かしてみています。

■VMWarePlayerでEFIを有効にする方法
仮想マシンの.vmxファイルに「firmware = "efi"」を追加することでEFIが起動出来るようです。


■Shellアプリの用意
Windows7 64bit上で、Visual Studio2010 Express+Windows SDK 7.1を使ってShellアプリを作成。EFI Shellで動かしてみます。

○EDKの用意
EFIの開発キットを用意
tianocoreから、左ペインのUDK2010→UDK2010.SR1.UP1 Downloadを選択してEDKをダウンロード
・UDK2010.SR1.UP1.Complete.MyWorkSpace.zipを解凍
・更にUDK2010.SR1.UP1.MyWorkSpace.zipとBaseTools(Windows).zipを解凍します
・UDK2010.SR1.UP1.MyWorkSpace\UDK2010内にBaseTools(Windows)の中身をコピー
・UDK2010内のedksetup.batを実行するとConfフォルダが出来上がるので、target.txtを開きます
・「TOOL_CHAIN_TAG=MYTOOLS」を「TOOL_CHAIN_TAG=VS2010x86」に変更

○Shellアプリの作成
ShellPkg\Application\ShellCTestApp\に手頃なコードがあったので、これを使ってShellアプリを作ってみます。
・ShellPkg\ShellPkg.dscを開く
・ファイル末尾に「ShellPkg/Application/ShellCTestApp/ShellCTestApp.inf」を追加
・Visual Studioコマンドプロンプトを起動し、edksetup.batのあるフォルダへcd
・edksetup.batを実行
・「build -p ShellPkg/ShellPkg.dsc -a X64」を実行。今回の環境だと-a X64を指定して64bitアプリにしないと動きませんでした

うまくいくと\Build\Shell\DEBUG_VS2010x86\X64にShellCTestApp.efiというファイルが出来上がります。
こいつをFAT32でフォーマットしたUSBメモリか何かに入れてVMWarePlayerでマウント。


■Shellアプリの起動
Shellアプリを入れたストレージをマウントして仮想マシンを立ちあげ、アプリを実行してみました。

・仮想マシンを起動して暫く待つとEFI Shellが起動します
・Device mapping tableにfs0とかが表示されているかと思います
・「Shell> fs0:」→「fs0:\> ShellCTestApp.efi HelloWorld.」を実行


とっても地味な感じですがとりあえず起動しました。
これを突き詰めていけば、ネットで挙がっているようなグラフィカルな画面とかが作れるのでしょうかね。