2001-07-30 Mon 10:07

日本語による備忘録を記録開始。得られた資料の記録、そして重要なリンクや雑誌記事の寸評などを紹介予定。ついでにプライベートエッセイも。

Kernel 2.4 のネットワークコードを追跡してつくづく感じたのだが、やはりネットワークの解析だけでは限界がある。ソースを完全に理解し、データ構造を把握するためにはプロトコルスタックだけでなく、メモリー、プロセス、割り込みなど多岐にわたる基礎知識が不可欠。しかしながら、これらの知識を「一度に把握」することがいかに難しいことか・・。幾多の解説書がこのテーマに挑戦しているが、未だ「これだ!」というものに出会っていない。

詳解Linuxカーネル」がオライリーから出版されたとの情報あり。早速、オンラインで注文する。どのような内容だろうか?訳者にはLinuxJapanで連載中の高橋氏などが並んでいるので、誤訳の心配はないだろう。

上の話とも関連するが、結局市販のマシンおよびGNU環境で全てを掌握するのは不可能に近いと確信するに至った。ではどうすればよいか?ソフトウェアについてはLinux kernelだけを単離し、これに独自の最小ルートファイルシステムを実装するのが最善策だ。具体的に実現するためのノウハウはおおよそ把握したし、今後進むべき方向も見えた。あとはハードウェアだが、x86プラットフォームを使う限りNo-blackbox を徹底することは難しい。そんな折り、インターフェース6月号に紹介された海老原祐太郎氏による「すべてのソフトウェアがオープンソースで供給される! Linuxを前提に設計されたSH-3ボードCAT68701」 という記事は非常に魅力的であった。しかも、オープンコミュニティに感謝の気持ちを込めて個人向けにはハッキングプライス34,800円にて提供とのこと!速攻、発注&ゲットした。このCAT68701はCPUに日立SuperH-3プロセッサーを搭載し、FLASHROM 512KB、Battery backed up SRAM 512KB、SDRAM 16MB、コンパクトラッシュカードスロット、RS-232C*1、Ethernet 10BASE-T (CS8900)という豪勢な装備をもったボードである。5V駆動であるため、リチウム電池4本で5時間動くそうだ。

私はSH-3のアセンブラーは経験ないのだが、調べてみると2バイト固定長の命令コードを持つという、かなりあくの強いCPUのようである。相手にとって不足無し。CAT68701ハードウェアの仕様はオープンであるし、FLASHROMのソースリストまで公開されている。驚いたことに、既にLinux kernel自身がCAT68701に対応しているのである。恐るべし、SH community!

手始めにStatic linkでツールをクロスコンパイルし、最小ルートファイルシステムをCAT68701上に構築してみることにしよう。

このためには母艦SHARP mebius上でCFカードを読み書きする必要があるのだが、何とこれがkernel 2.4.1以降出来ないようなのだ。kernel 2.4.1以降の修正とpcmcia-csパッケージ間の整合性が取れていないことが原因なのだが、ネットを探しても解決策が見あたらない。仕方がないので、自力解決。2.4ユーザーはフラッシュカードを使っていないのかしらん?

カードについて調べている間に世の中ではDOCが新しいメモリー・ディスクデバイスとして認知されていることを知る。Documentではない、DiskOnChipである。なるほど、これは面白い。簡単な日本語紹介ページを発見。早速使ってみたいものだと探したのだが、DIMM型のタイプは容易に手に入りそうにない。メインは32ピンDIP型だが、こんな小さなパッケージの中にIDE互換ハードディスクが収まるとは驚き。恐らくハードに強い人であれば先のCAT68701にちょちょいのチョイで実装できるのだろう。386互換でDOC対応の組み込みボードも発見。CAT68701を制覇したら挑戦してみよう。

組み込み化に向けてメモリー型ディスクデバイスは必要不可欠な存在になるであろうが、Linux kernelでは既にこれらの不揮発性メモリーデバイスに向けた機能拡張が行われている。 Memory Technology Device (MTD) subsystemがそれである。各メモリーデバイスのフォーマットやドライバー上層にMTD APIを設けハードウェアの違いを吸収しようというものだ。 例によって関連文書が殆どなく、カーネルソースを追跡する必要がありそうだ。

7/26〜29まで家族で香港へ旅行。噂には聞いていたが、まさに「食は中国にあり」!地元の人間で賑わう大衆食堂にもっぱらお世話になったが、まずメニューの豊富さに驚く。ただし、漢字から中身が類推できず悔しい思いをした。ひたすら回りのテーブルに並んだうまそうなメニューを指さしてオーダー。次回行く時は広東語と中国料理を勉強してからにしよう。どれも日本の中華料理とはひと味もふた味も違うが、中でも青菜の炒めものには感涙。これ程、野菜がうまいとは!初日偶然台湾料理店に入ったのだが、広東料理よりもあっさり味で個人的にはこちらが好み。ラーメンも広東風は極細茶色麺で独特の臭みがあり、いまいち。台湾風はより日本のラーメンに近いが、スープは断然こちらがうまい。朝からお粥も食べまくり。デザートはマンゴープリンで決まり。最後の日に飲んだマンゴーミルクシェークは気絶しそうなほど濃厚でうまかった。何と贅沢な食生活、対して何と貧相な日本の食事・・。帰国して気が付いたのだが、溢れんばかりの人垣を目にしたにも関わらずアトピーの患者さんを見かけた覚えがないのだ、全く。普通日本で雑踏を歩けばかなりの頻度でアトピーで皮膚が荒れた人に出会うものなのだが。さらに、あれだけ大食漢が揃っているにもかかわらず(向こうのご飯の量は半端ではない)、みんなスリムで太った人間を見かけた覚えがない。環境のみならず、食生活の違いが大きく影響しているのではないかと、内科医の立場から類推。あの豊潤な食生活がある限り中国は不滅だろう、羨ましい限りだ。

2001-07-31 Tue19:01

やはり現在のLinux 2.4のpcmcia環境には問題がある。2.4になりカーネルにpcmciaのコアモジュールが組み込まれたが、ユーザースペースツールcardmgrとの整合性が取れていないのは致命傷である。さらに問題なのは、必要なドライバーをカーネル組み込み形式(option "Y")でコンパイルしても、cardmgrはモジュールしか取り扱うことが出来ないため、本来必要のないオブジェクトファイルを/lib/modulesに配備する必要があることだ。これらがユーザーの混乱を招いているのだが、不思議なことに誰も問題視していないようなのだ。WHY?

私はcardmgrに修正を加えて、カーネル内部に必要なモジュールが組み込まれている場合はこれを呼び出すようにすべきだと思う。また個人が使うpcmciaカードの種類はたかだか数種類であるにもかかわらず、現在のconfigファイルは余りに冗長である。むしろ、新規に利用したいカードをスロットに入力すれば自動的にデータベースを検索して必要なモジュールを示し、configファイルにエントリーを追加するようなアプリケーションの開発を行うべきだろう。ネットワーク上でデータベースとコンパイル済みオブジェクトファイルを提供できれば理想的ではないだろうか?

夢物語ばかり語っていても仕方がないので、とりあえずカーネル内部のドライバーを直接呼び出せるようにパッチを作成してみることにしよう。

MTD関連の資料を読んでいる最中に、不揮発性メモリー向けのジャーナリングシステム Journaling Flash FIle System (JFFS)が存在することを知る。JFFSはSwedenのAXIS Communicationsという会社が開発・公開している。ホームページを見れば分かるが洗練されたデザインを有する会社だ。最近流行のIP-ネットワークカメラや携帯端末向けのプリントサーバーなどが主力商品らしい。なぜそんな会社がジャーナリングシステムを開発する必要があるのか不思議に思ったが、開発者向けのサイトを読んで納得した。何とこの会社、ネットワークカメラやプリンターサーバーの中身を自前で開発しているらしい。さらに驚くべきはETRAX 100LXというオリジナルCPUまで用意していることだ。衝撃はまだ続く。同社はデベロッパー向けにこのCPUを搭載したボードを提供しているが、そのための技術文書、開発環境(もちろんLinux base)、実行環境(Linux 2.4)を全て公開しているのだ、素晴らしい!しかもその文書たるや半端ではなく、開発者達の志の高さが伺えようというものだ。

大いに共感すると共にその将来性を買い、即 Axis Developer Board LX を注文。折角なのでケース付きのタイプ(Device Server Platform)にして、送料込みでUSD 409 (本体339、送料70)。クレジット決済はなく、後でインボイスが届くらしい。到着が待ち遠しい。ちなみにGoogleで検索しても日本のサイトでこのボード情報にヒットするものなし。まだ誰も着目していないのだろうか?