2006-07-13

開発の前に

一人で開発するので、自分が顧客であり開発者ということになる。

XPでの開発者は、問題解決方法を知っていることが前提なのだろうか?解決方法がまったく未知の領域の場合、コストを予測できない。

例えばPHPならばよほどのことがない限り形を想像できる。テストの方法もすぐに思い付く。しかしカーネルに関わる部分になると大まかな概要でさえ想像できない。

まず何から手を付けていいのか分からない場合はその方法を調べてから計画を立てるのだろうか。それとも調査時間も含めて計画を立てるのだろうか。

ここでは厳密な納期が存在しないので、先に調査してからコストを計算することにする。まずは分かっていることと分かっていないことに問題を分ける。

分かっていること

  • カーネルデバッガkdbのインストール方法
  • 簡単なカーネル用の関数
  • システムコールからファイルシステム関数が呼び出される簡単な流れ

分かっていないこと

  • カーネル開発でのテストの方法
  • i-nodeの管理方法

特にi-nodeの管理方法が問題になりそうな気がする。kernel2.6からはi-nodeをそれぞれのファイルシステムが管理する必要がある。これが分からないと(例えば何も動作しない)ファイルシステムをカーネルに登録しても、マウント時にエラーで終了してしまう。

テストの自動化は重要なポイントだが、カーネルモジュールに対してどうやってテストを行うかが分からない。どうやら Linux Test Project というものがあってkernel2.5からはテストが自動化されているらしいのだが、それはこれから調べていくことになる。

この2つが未知の領域なので、どれくらいの時間がかかるのか見当がつかない。ある程度理解できてから計画を立てることにする。