読者です 読者をやめる 読者になる 読者になる

UEFIでFizzBuzz

動機

いきなりそれは無理というか,多分動かないので,とりあえずFizzBuzzでも動かしてみようと思った次第. 

 

検証環境

 

EFI環境構築

弱いオタクに最高のUbuntuさんは,どうやらEFI環境を自動認識していい感じに環境を構築してくれるらしい.

とりあえず,適当に最小構成でインストールすればよいが,VMWare Fusionの設定を最初に変更しなければVMWareEFI環境にならないので注意.忘れると,再インストールするハメになる.

設定自体は楽で,適当なエディタで(マシン名).vmwarevm/(マシン名).vmxを開き,末尾に

firmware = "efi"

を追記するだけで良い.

 あとは適当にUbuntuをインストール.「EFIに対応した環境を入れるか?それとも爆発するか?」みたいなのを聞かれたら,とりあえず前者を選んでおこう.後者は何が爆発するのか知りたい.

 

インストールが終了したら,rebootさせてESCを連打するとBoot Managerが出るので,EFI Internal Shell(Unsupported option)を選択

f:id:tw1sm1k0:20160317160728p:plain

 

これでEFIのシェルが使える.

 

開発環境構築

これを書きながら気づいたが,別にEFI環境の構築のために入れたUbuntu上で開発すればいいんじゃないのかと思った.

とりあえず,自分は開発環境もDebianなのでどうせ同じ手順で開発環境が構築出来るはず.

EFIアプリケーションの開発ライブラリであるgnu-efipacmanでも入るらしい.Archな人はpacmanで入れて欲しい.yaourtのynynリズムゲームは嫌い.

apt-get install gnu-efi

 

とりあえずHello,World

技術者見習いの独り言: UEFIアプリケーションのはじめかた

を参考にHello,Worldが動く.FizzbuzzMakefileもこちらを参考にした.

 

なお,EFIシステムパーティションはゲストOSのUbuntu上からは

/boot/efi/EFI/ubuntu

にあることになる.

EFIのシェル上からはfs0:/EFI/ubuntuにあることになる.

 

FizzBuzz

 

GitHub - twismiko/fizzbuzz_efi: Fizzbuzz on EFI

 

こんな感じになる.もっとうまいFizzBuzzはあると思う.

f:id:tw1sm1k0:20160317162210p:plain

 

先ほどの環境で実行すればこんな感じになる.

 

雑感

適当にやってわりとすんなり動いて逆に驚き.いろいろと楽しめそうな感じではあると思う.

 

 

参考

技術者見習いの独り言: UEFIアプリケーションのはじめかた

Mac上のVMware FusionやVirtualBoxでUEFI 2.0を試す - かーねる・う゛いえむにっき