maficeのぶろぐ

文章力かRedBullください。

2011-12-29

カーネル/VM Advent Calendar 29日目: EFI シェルで遊ぶ

この記事は カーネル/VM Advent Calendar の29日目の記事です。

趣旨に合っていないとは思いますがそれはご愛嬌ということで...

間違っている所があればコメントで教えていただけると嬉しいです。

 

0.EFI シェルとは

BIOS(Basic Input/Output System)に取って代わるEFI (Extensible Firmware Interface)

というものがあり、EFIシェルというものが入っているそうです。(入ってないのもあるらしいのですが)

VirtualBoxでそのEFIシェルを使えるということで使ってみました。

 

1.VirtualBoxEFIを有効化

EFIを有効化したい仮想マシンの設定の「システム」の「EFIを有効化」のチェックを入れるだけです。

 

2.起動してみる

少し放って置いたら、こんな画面が出てきます。

f:id:Mafice:20111229011445p:plain

これでEFIシェルが起動しました。

 

3.遊ぶ

helpコマンドで使えるコマンドが一覧で出てきます。-bをつけると分けて表示するようになります。

helpコマンドで出てくる通り、dateやらmkdirやらmountやlsなど、普段使うようなコマンドをOSを起動することなく使えます。

中でも面白いのがeficompressで、ファイルの圧縮ができるそうです。

ただ、生成したファイルをMacのfileコマンドで調べてみると「data」としかでてこないので

フォーマットが独自(?)らしく、使い道は限られるような気がしますが。。

 

また、テキストエディタバイナリエディタが入っており、

バイナリエディタではファイルだけでなくメモリのデータの編集もできるみたいです。

 

例としてフロッピーディスクに test/hello.txt を新規作成してみます。

EFIシェルが起動した後に以下のようにコマンドを打ち、ファイルを編集して保存します。

  fs0:

  mkdir test

  cd test

  edit hello.txt

 

f:id:Mafice:20111229013212p:plain

すると 

f:id:Mafice:20111229013551p:plain

 

このようにちゃんとファイルができています。

 

4.EFIアプリケーション

EFIシェルはEFIアプリケーションというものの一つで、

EFI Dev Kit を使用して開発しているようです。

また、EFIシェルのソースコードはSourceforge.netで公開されています。

 

EFIアプリケーションではEFIシェルのpingコマンド(ソースコード)のように

NICなどを使えるので 、気分転換にTwitterクライアントの自作でもしてはいかがでしょうか。

 

最後に

Macで手抜きEFIアプリケーションのTwitterクライアントを作ろうとしていましたが、

何がいけないのかこのような画面が頻発するので諦めました。