20MBでgdbproxy

これまでWindowsでBlackfin用のgdbproxyを使うには、VMWare上のLinuxを使うしかなく、Linuxだけに数百MBが必要でした。これまでKNOPPIXやubunts、debianを元に軽量化を図りましたが悉く失敗。今日、ついに22MBまで軽量化することに成功しました。
元となるディストリビューションにはDSL ( Damn Small Linux )を使いました。これは、Knoppixをベースにして、ぎりぎりまで絞ったX Windowおよびそのアプリを集めたものです。

  • cloopファイルシステムを使っているのでKNOPPIXのリマスタリング手法を使える。
  • しかし、DSLはパッケージ・メンテナンスシステムをはずしているのでdpkgやapt-getを使えない
  • そこで、必要のないファイルに目星をつけて次々に消していく
    • /usr/binのうち、ls -lS | headで大きなものから表示し、必要のなさそうなものを消す
    • /usr/local/binのうち、*.luaを残して全部消す
    • /usr/shareのうち、必要のなさそうなものを全部消す
  • /etc /bin など見て回って不要なファイルを適当に消す
  • /etc/inittabを編集して、ランレベルを3にする
  • /optに必要なソフトを入れる

これでisoimageを構築します。私は/dev/sda1の上で作業したのでDSLを再起動し、

dsl fromhd=/dev/sda1

とタイプして動作を確認しました。libXを参照するコードが一部エラーを吐きますが、コマンドラインで使う分には問題ありません。以上の作業で22MBまでISOイメージを縮小しました。時間をかければさらに小さくできると思います。もっとも、VMWareのランタイムのほうがはるかに大きいので、これ以上の軽量化は不毛です。
作業にはVMWareを使いました。スナップショットをいくらでも保存できるので、こういうきわどい作業にむいています。
DSLVMWare上で走らせると、ランレベル3はあっという間に起動します。GUIを使わないので必要なメモリは64MB。しかも1CD Linuxなので、いきなり電源を切っても大丈夫(メディアをマウントしていない場合に限る)です。
これで、Cygwin上でgccを使ってTOPPERS/JSPアプリを開発する場合も、gdbproxy経由でプリンタポートICEを気軽に使えるようになりました。