zxLinux 気がついた問題点 ●ライブラリ 標準ライブラリに、ごくごく初歩的なバグが多数残っている。使っている人がほとん どいないのではないだろうか。 現在の newlib の移植は中途半端で、ほとんど使い物にならない。ちゃんとした Linux アプリケーション開発を行うためには、ライブラリから作らなければいけない。 ●開発環境 ext2fs ファイルイメージしか読めないために、いちいち PC でイメージを作って丸 ごと転送しなければならず、開発効率が非常に悪い。(その後 zaufs によってこの問 題は解決) 未だ gdb をうまく動かせていない。Zaurus 側で dbg を使ってプログラムを走らせ ても、break で確実に止まらず、しばらくするとプログラム実行がそのまま行われ てしまう。 ファイル操作などごく基本的なコマンドがそろっていない。zxLinux 上でデバッグや 動作確認を行う場合に問題になることがある。(簡単なものをある程度は作成した) ●カーネル MI-P10 で動かない。モノクロ画面であるため画面描画に互換性が無く動作しない。 これはカーネルが直接自前のフォントを展開しているためである。その後パッチを当 てて取りあえず MI-P10でも動くものを作成。その後 MiniTELNET 開発時に作成した コンソールライブラリを組み込むことで、次の問題が一気に解決。 1. 文字描画に ZaurusOS API を使ってるため、機種間の互換性問題が回避された。 2. 標準 API を使ってシステムフォントで描画するので、日本語の表示が可能になっ た。 3. MiniTELNET の機能であるターミナルエミュレーションやカーソル描画機能がその まま zxLinux に継承された。 システムコールのオーバーヘッドは意外に大きい。またカーネルのユーザーメモリア クセスも遅い。本来の Linux は、カーネル空間にすべての物理メモリがマップされ、 そのままユーザー空間のメモリの取得を行っている。これらの処理を XTAL の dbg_ 関数で代用しており、そのオーバーヘッドが大きなものになっているのではないか。 execve() システムコールはとにかく重い。シェルからコマンド一つ走らせるたびに、 プログラムを一つ丸ごとディスクに書き出すことになるのだから、そのオーバーヘッ ドはかなりのものである。 zxLinux はソースコードべったりの書き換えなので、元になるカーネルのバージョン を更新する度に、かなりの作業が発生するのではないかと考えられる。 あちこちに点在する create_queue() したカーネル(XTAL)オブジェクトは、Linux カーネル終了時も delete_queue() されていない。現在の zxLinux は、一度電源OFF にしないと画面描画がおかしくなることがあるが、その原因となっているメモリリー クは、これらの残された queue ではないかと思われる。電源OFF/ONで、MOREソフトな ど名前付きオブジェクトも一端クリアされるために、症状がなおるのではないか。 もう一つ、電源OFF/ON でも解消されない大きなメモリリークが残っている。zxLinux の起動と終了を繰り返しながらしばらく使っていると、そのうちコマンドが全く走ら ない状態となる。メモリ不足で新規 process が作れないものと思われる。原因は全 く特定できていない。徐々にリークが進行することから考えて、名前を持ったオブ ジェクトによる原因では無いものと推測される。 ●ネットワーク関連 未調査 2000/10/14 小笠原博之 oga@art.udn.ne.jp