1.0進捗
- ブートパラメータのパース
- 実装完了。名前空間サポート付き。
- ディレクトリツリーの構築処理
- 実装完了。Squashfsで圧縮したカーネルモジュールディスクのマウントと、最後まで持ち運ぶtmpfsのマウント&mknod。例外処理完備。(例外なんて起こらないはずだけど
- ハードウェア自動検出
- ほぼ実装完了。残るはPC Cardに接続されたデバイスの再帰検索。
- ディスク自動発見
- ほぼ実装完了。残るは接続方式判別(usb,ide,sata,ieee1394)。新機能は、メディアタイプ判別(hdd,flash,optical,dvd,external,internal,ide,primary,secondary,master,slave)、ユーザーからのブートメディアの指定に接続方式/メディアタイプ指定をサポート(USBメモリからブートしたいならusb,flashなど)、優先順位付きディスク発見(ヒットしたユーザーからの指定の数 → hdd = flash > optical → external > internal → 容量)
- ローカルディスク上にある設定ファイルのロード
- 設定ファイルの発見まで実装完了。いつも指定したいパラメータは、ブートパラメータに毎回指定しなくても、設定ファイルに書いておけばOK。残るは設定ファイルの書式の決定とそのパーサの実装。
- ブートメディアのマウント
- ほぼ完了。残るはディスクイメージのループバックマウントのコードをもうちょっとスマートに。
- ネットワークブート
- 未着手。IPアドレスの割り振りと、v-fieldの起動が必要。
- Copy-on-Write用スペースの確保
- 半分完了。
- aufsマウント
- 未着手。
- switchroot処理
- ほぼ完了。マウントポイントの移動処理は完了。後はswitchroot本体のコード。
- 後処理
- 未着手。/etc/fstabや/etc/mtabの設定、/etc/resolv.confの引き継ぎなど。
- RUNESとのインターフェース
- 未着手。
- 例外処理
- 例外が発生→無視できない→シェルを起動→ユーザーも諦める→リブートの処理で、リブート前にしないといけないクリーンアップ処理の設計が良くない。シェルの後リトライするときは問題なし。うーん…ポイントごとに個別対処しかないかなぁ。
- カーネル
- 考え中。2.6.18かなぁ。
まだ実装開始から5日目。フルスクラッチですが。Rubyすさまじい。