EFI

このほど発表されたIntel Macですが、BIOSではなくEFIを採用しているようです。

以前から考えているのですが、EFIのプラグインとして、NBDのようにブロックデバイスをローカルのブロックデバイスとしてエミュレートする様な機能を作れば、OSやカーネルに依存しないVIVERの様なシステムができるな〜、と。

ディスクイメージサーバー → ネットワーク → EFI → カーネル

というか、そういうことをやる人間がいつかは出てくるのでは。


ところで、Mac OS XのNetbootという代物は、上のシステムのEFIがOpenFirmwareになっているだけのものでは無かろうか。

このサイトによれば、tftpディレクトリのdarwin/ディレクトリ以下にカーネルやデバイスドライバdarwin/BootX(ブートローダかな)を設置し、NFSのエクスポートディレクトリ以下にルートファイルシステム全部を展開しておいて、クライアントのOpenFirmwareに

setenv boot-device enet:192.168.0.1,\darwin\BootX
setenv boot-args rp=nfs:192.168.0.1:/export/darwin 

と設定すれば、ネットワークブートができる模様。

boot-deviceのパス区切りがバックスラッシュで、boot-argsのパス区切りがスラッシュなのは、boot-deviceはOpenFirmwareが、boot-argsはMac OS Xのカーネルが処理するからでは無かろうか。
ということは、nfs:192.168.0.1:/export/darwinは単なるブートパラメータなのかな?

うーむ。これはつまり単なるNFS rootの様な気がする。

setenv boot-args rp=nfs:192.168.0.1:/export:darwin.dmg 

と指定して、ディスクイメージをルートデバイスとして使うことができるようですが、これはNFS root+カーネル組み込みpivot_rootという感じかな。

PXEと大差ない?



ところで、Netbootでは、差分ファイルのことを''Copy-on-Write''ではなく、''shadow''と呼ぶらしい。cowなんて牛な呼び方より、shadowのカッコイイし、わかりやすい。
ということで、VIVER 0.3から、''cow''は全面的に''shadow''に変更します。