Linux Zaurus B500 の メモ
To: Index.html

独自カーネル
Preemption Kernelその3を作ってみました。

主成分

効能
ページング時にメチャメチャ重なるのをなんとかする
その1
SDカードにswapファイルを作成した場合、動画再生やONScripter等のゲームを走らせると大量のページアウト/インが発生ししばらく固まる事があります。これはLinux Zaurusのハード構成的にSDへのアクセスが遅い事が原因です。kswapdを設定変更する事でページアウトをマイルドな味付けにできます。

方法
rootになって、/proc/sys/vm/kswapd に新しい設定値を入れる。
# echo 128 32 8 > /proc/sys/vm/kswapd

Linuxでは/procを使用しシステムの設定値を変えられます。これはリナザウでも同様です。kswapdのデフォルト値は512 32 8なので、128 32 8に変更します。1番目の数字は一度にフリーにするページの最大値です。一度にドカッとページアウトするのではなく、こまめにページアウトさせます。/proc以下のファイルをさわる時はrootである必要があります。と言うか操作前にはパーミッションの確認を。

ちなみに/procに書き込んだ値は再起動でデフォルト値に戻ります。sysctlを使って永続的に反映させるか、rc.localあたりにこっそり追加するとか適当にやって下さい。

その2
Preemptなカーネルだと多少マシな気がします。/proc/sys/vm/kswapdも変えればムービーもスムーズに再生しっぱなしですよ。

いつページングしてるのか知りたい
ページングしていると動作が重くなるので分かりますが、メチャメチャ重いだけなのかハングアップしているのか区別がつかない時があります。で、一応分かるようにする為の仕組みです。

方法
ledctlを使用してページング時にメール用のLEDを点滅させる

こんな感じのスクリプトを作成して、バックグラウンドで動かします。(要awk)

#!/bin/bash
while true ;
do
    SWAPMEM=`cat /proc/meminfo | grep SwapFree | /usr/localbin/awk '{print 42}' `
    if [ "SWAPMEM" = "$OLDSWAP" ] ; then
        /usr/local/bin/ledctl --led2 off
    else
        /usr/local/bin/ledctl --led2 fastblank
    fi
    OLDSWAP=$SWAPMEM
    sleep 3
done

要するに、swapの使用量をチェックして変わっていたらLEDチカチカ開始させて、前にチェックしたのと同じだったら止めるってのを3秒感覚で繰り返してます。
ちょっといじれば、CPU使用率に応じてLEDを光らせるって事もできますね。
月姫したい
ONScripterを入れて楽しんで下さい。月姫のデータはsarconvで縮小させます。nsaconvじゃないのでご注意を!詳細はONScripterのドキュメントを読んで下さい。分からなかった場合には、分かるまで読んで下さい。
なお、B500で使用するフォントは通常のものよりも、ボールドなフォントの方が視認性がいいです。
USB接続でNetfront使う方法
通常では、USB接続時にNetfrontを起動すると「ネットワークにつながってへんぞ!」と怒られます。Netfront起動後にコンソールで以下のおまじないを唱えるとそのまま使用できます。

おまじない
qcop QPE/Network "up()"

MPEG見たい
標準のMedia Playerでいいんじゃないですか?
よくない方は、mplayer -vo fbdev -double -de -framedrop -quit -ac mad ファイル名 です。ただし、画面全部とターミナルがおかしくなります。画面は他の全画面使用するアプリケーションを使えばリフレッシュできます。C7x0ではあまり起きないそうですが、B500では100%起きます。ターミナルはresetで回復可能です。
めんどくさいのでこんなスクリプトを使ってます。
#!/bin/bash
for $fname in $*
do
    mplayer -vo fbdev -double -de -framedrop -quit -ac mad $fname
done
rm gmon.out
reset
exit 0
コミケカタログをB500で読みたい
FreePWINGを使ってEPWING形式の電子辞書にするのがお手軽。awkでデータを適当な形に切り出して、FreePWINGのページにあるサンプルスクリプトを適当にいじってください。
サンプルが2行で1つのデータになっている国語辞典なので、そのままでも結構使えます。元データをawkで整形しましょう。お好みに合わせて元のperlスクリプトを拡張するとより幸せになれます。perlの勉強がてらいぢくるのを推奨です。

もしくは、http://www.geocities.co.jp/SiliconValley-Cupertino/1774/で気合いの入った方がきちんとしたスクリプトを配られています。ImageMagicでサークルカットを切り出すのは思いつかなかったですね。

Linuxが母艦の時にリナザウとファイルのやりとりをする方法
母艦Linuxにdepmod usbnetして、B500とUSBでつなげればTCP/IPで通信できます。母艦でifconfig usb0 192.168.129.200 netmask 255.255.255.0 up としてUSBにIPアドレスをふってください。
私はいつもftp使ってます。
独自のカーネルを作ってみたい
まずクロス開発環境を作って、その後ザウルス宝箱Proからソースを拾ってきます。
で、ソースはbzip2で圧縮されたtarなので展開するとlinuxってディレクトリができます。linuxディレクトリ直下に.configファイルを置くのですが、arch/arm/def-config/の中に各マシンのコードネームでファイルがあるのでそれをコピーします。
B500なら、cp arch/arm/def-config/poodle-j .config って感じです。
で、だ、make なんとかconfig; make dep ; make clean ; make zImageを実行すれば、arc/arm/boot/ にzImageができるので、UpdateのzImage.binと置き換えます。その後アップデートすれば運がよければ起動してきます。

To: Index.html