DebianでマイクロPCを組み込みシステムにする2006/07/23
組込み型 Debian Linux
 1 背 景 
近頃、標準Windowsがそのまま走る小型コンピュータがたくさん出てきた。当然これらはLinuxも問題なく動く。うれしいことに多くの機種にはCFカードスロットが装備されている。またCFカードのほとんどはATA互換なので磁気ディスクの代わりに使用する事ができる。直ちに組込み型計算機に早代わりする。
 2 MontavistaやuClinuxからDebianへ
 今までの仕事上、MontavistaとかSnapgeareが多く、その対象も組込みシステムに限定されていた。その構成はマシンモニタとしてRedbootがあり、カーネルとramdisk上に作成されるユーザランドの圧縮ファイルで構成される。コストが重要な製品では仕方がないが、敷居は高く気軽に組むには躊躇する。
 ところがDebianは最小インストールというのがあって、初期インストール時に基本インストールのみにした場合、約147MBである。この構成で一応アプリケーションをインストールするbaseシステムは動作する。これはありがたい、Redhatでは340MBでも収まらないので結果的に最初からBusyBoxを採用することになり、敷居を高くする原因となっていた。256MBのコンパクトフラッシュメモリを使うとすれば、残り約100MBあることになり、一応のアプリは収容できそうである。
 敷居が低いとはいえBaseシステムではMonatavistaとかSnapgeareのサンプルファイルシステムが無い場合に相当する。何をインストールインストールして良いものやら。このような場合、開発システムにDebian標準インストールをしておけば、何が必要か判るだろう。
 3 アプリケーションのインストール
 このシステムの信頼性を計るため適当なプログラムを連続実行する。現在連続実行しているのはWEBおよびメールサーバなので、これをテストアプリに決める。 
 さしあたって必要なssh、less、ftp、ftpd をインストールする。この際に大量のライブラリ類が依存関係に従って自動的にインストールされる。次にメールサーバ関係のpostfix と dovecot をインストールする。Postfixのセットアップにかなり手間取ったが結果的にはdovecotを再インストールしたらうまくいった。Debianはある程度自動的にセットアップしてくれる。だけど、このような時には「何をしてくれたんだ」と言いたくなりますが、やはり親切で便利なんでしょうね。最後にapacheをインストールする。例によりshit_jisは正常に表示できない。AddDefaultCharset shift_jisを入れて何とか直った。しかし総ディスク消費量は95%になってしまった、残りは5%とファイルシステムが確保してある5%だけであった。 
    
 4 運 用
 さしあたってCFカードをそのままハードディスクとして使うのは書き換えの回数の制限から避けなければならない。書き換えの可能性のあるものはtmpfsへ移動する。
 使ってみると、2.5インチのハードディスクを止めて、かつ外部電源なので、完全無音になった。組込みシステムでさえ、システム全体ではファンがうるさかったが、無音というのは不思議な感じがする。発熱の多くはハードディスクだったのか、発熱も少なく便利に使っている。
 5 比 較
 組込み専用機と比べれば高いのであるが、少量生産機種の場合はコストは逆転するのでしょう。
 6 組込みの考慮

組込みシステムを考慮しないでアプリケーションを組むと、標準システム並みのディスク容量を消費するのは当然である。組込みシステムとして組むのであれば、やはり用途に合ったモジュールを選択するなどそれなりの配慮が必要だろう。例えばapacheをtftpdに替えるとディスク消費量は1割以下になる。それにしてもターンアラウンドタイムは抜群に向上することが期待できる。

 7 簡易リアルタイム化あるいは RTAIによる本格的リアルタイム化
 戻るのページにある簡易なマルチタスクLinuxドライバを使用して、かつシステムコールをカーネル内から呼び出すサービスをインプリメントしました。これにより既にドライバが存在する音声、映像等の機器をカーネル内から使えることになり、専用機では品質の向上につながるであろう。

 戻るのページにあるマイクロPCとリアルタイムOS(RTAI)のように、本格的なリアルタイムOSを用いて高性能の組み込みシステムを容易に作成することができる。

 8 ディスク容量の考察
 ベースシステムのディスク消費量は3.0r2の場合約102MBであった。それに対して3.1r2ではベースシステムをロードした時点で147MBでした。35Mバイト程増えていますが、両者共に/varの25MBはapt関係のデータなので、3.1r2でもベースシステムは128MB程度で収まる。また/lib、/usr/lib及び/usr/shareには基本システムでは不要なものが多く含まれている、30MBは削除できそうです。もっと良く見れば減らせそうですが、敷居を低くすることを目的と考えればそのままのほうが良いかもしれない。
 次項のように圧縮ファイルシステムの使用を考えれば、そのままの方が使い易すそうです。
 9 ReadOnlyファイルシステム(squashfs)
 LiveCD等ではCD1枚でLinux及び相当数のアプリケーションを搭載している。これは圧縮したReadOnlyファイルシステムであるSQUASHFSで実現している。また圧縮率はgzipと変わらないようです。
 ここでは Debian LiveCD Standard CD(DebianV4.0r0) を取り上げ、CDのブートプログラムisolinuxからGRUBへの変更のみを行った。 160Mbytes 程度のファイルシステムが 82Mbになっている。 従って128MbもCFカードで十分収まる。 また、この読取専用ファイルシステムは同時にFlashMemoryの使用法(tmpfs)の良い例になると思う。

Debian LiveCD コンパクトフラッシュ版の128MbCFカードイメージはここにあります。
このCFは/dev/hdc1になります。

このsquashfsの取り扱いは容易で、
 mount -o loop filesystem.squashfs dir でdir上にファイルシステムが解凍されます。
dir上でいろいろ挿入、削除、編集をしたあとで
 mksquashfs dir/* filesystem.squashfs  で
 filesystem.squashfs にファイルシステムが圧縮格納されます。

 なお、実用的にはDebiaLiveCDで使われているunionfsは問題が多いのでaufsに置き換えたほうが良い。
例えば dovecot は unionfs ではまともに動かないが aufs では問題ない。
10 LiveUSB
 このようなシステムを半自動生成するものに Live-Helper がある。 この Live-Helper で作成した上記serverのUSB版(LiveUSB-server02.img)をここに置く。
なお、これは256Mb以上の USB−Flashメモリと USB−Flashからbootできるマシンが必要です。
お問い合わせ
戻る
Guest No.