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

1.0進捗

VIVER
ブートパラメータのパース
実装完了。名前空間サポート付き。
ディレクトリツリーの構築処理
実装完了。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すさまじい。