キタ!
ブートぃぇーぃ
※追記追記:
というわけでVIVER 1.0を1週間で書こうプロジェクトの最終日。
ブート成功!
(ただしまだバグ多し
たくさん新機能:
・ディスクイメージの構造が簡略化
ディスクイメージをSquashFSで圧縮という2度手間が、SquashFS1本になりました。加えてイメージサイズ削減、ディスクアクセス速度向上が見込めます。
・メディアタイプ判別
ローカルディスクの種別を判別します。ブートメディアを検索するときにはCDの優先度を下げているので、HDD/USBメモリへのインストール&ブートが簡単にできるようになります。ブートメディアを手で指定したいときも、usb,hddなどのようにメディアタイプで指定できます。
・viver.confのサポート
内蔵HDDなどのローカルディスクにviver.confというファイルを置いておくと、そこから設定を読み込んで動作に反映します。いつも同じCopy-on-Writeの差分を使いたいときや、マシン固有のroleを指定したいときは、viver.confに書いておくと便利です。viver.confは、発見したすべてのディスクから、/viver.conf、/etc/viver.conf、/viver/viver.conf、/VIVER/viver.confを全部検索します。
(viver.confにRubyスクリプトを書くか、別の場所において読み込むようにすると、動作を拡張できるようにする予定。独自のドライバを読み込むなど。VIVER API)
・差分をファイルシステムレベルに
Copy-on-Writeを、ブロックデバイスレベルの差分からファイルシステムレベルの差分に変更しました。これによって長らくかかった(そうでもない?)cow溢れの問題が解決しました。RAMサイズを越える量を差分に書き込むと凍る、なんてことはもうありません。
・クリアな設計
開発者的には非常に重要。設計が非常にわかりやすくなりました。まぁ、0.3がひどすぎたんですが。いや、あの当時の技量では最高の設計だったんですけど。
・スクリプト言語
言語変わりました。Rubyです。まずデバッグがしやすい。エラーが出たら、必ずピンポイントで問題箇所を指摘してくれる。デバッグが早く終わります、たぶん。
既知の問題:
・ブート途中に凍る
おそらくaufsの問題かと…違うかな。aufsは未だ安定版がリリースされていなくて、CVSスナップショットを使っているので、まだ不安定なのかもしれません。(もしかしたらVIVERがaufsを一番最初に使ったCDブートシステムかもw)
・ネットワークがDHCPで起動しない
これが良くわからない。デバッグシェルに落ちた後に手でDHCPクライアントを起動すると、何の問題もなく起動する。ドライバのロード後にsleepが必要とかw
さて、今日でタイムリミットなので、VIVERは1,2週間ほど小休止…。