Sirius

2007年12月26日(水) 21:30

SL-C760 の2GB SD

2GB の SD を使えるようにした SL-C760。サスペンドすると、SD が見えなくなる事に気がつきました。
SD の取り外しを行ってからサスペンドすれば、サスペンドから復帰したときに再度 SD を見つけてマウントしてくれます。

つまり、サスペンド時に、SD を自動で取り外せばいいことになります。わたしは、アプリケーションが起動したままサスペンドするのが嫌いなので、自動で SD を取り外すようにしても問題ありません。メモリを空かせるために高速起動もすべて切ってあります。また、スワップも使っていません。
ただ、急ぐときに困るかな?という程度です。

サスペンド時にどのような処理を行っているのか。
Qtopia のメニューの”電源OFF”がサスペンドです。電源OFF を選択したときに何が実行されるのか?メニューとランチャーは同期しています。どちらも、/opt/Qtpalmtop/apps を参照しているようです。ここに __9quit.desktop というファイルがあり、このファイルでサスペンドしているようです。

suspend を探します。

# find / -name suspend

suspend は、/home/root/usr/local/bin にありましたが、シンボリックリンクで実際は /usr/local/Xredir/usr/local/bin/suspend にリンクされています。このファイルの中を見ると、

echo suspend > /dev/zapmd

と実行されています。なるほど。terminal から実行してみました。

# echo suspend >/dev/zapmd

何も起こらず。/dev/zapmd はと見ると、レギュラーファイルです。つまり、リダイレクトでファイルを作っただけです。どうも違う。
もっと探すと、/proc/sys/pm に suspend がありました。何があるんだろう。

# cat /proc/sys/pm/suspend

サスペンドしました。しかし、復帰させると、ターミナル上に意味不明な文字が出てきてしまいました。タッチパネルの操作も受け付けません。

いろいろ調べると、サスペンドとかは、qcop メッセージで行えるということです。
ルートで次のように打つとサスペンドします。

# qcop QPE/Application/suspend 'raise()'

さらに調べると Netheper Applet というものがあり、これを入れると、サスペンド時やレジューム時にコマンドを実行できるようです。インストールしてやってみましたが、私がいろいろやりすぎているようで、SD カードの取り外し前に電源が切れてしまい、うまくいきません。

さらにさらに調べると、susp-resume_0.9-3.1.ipk というものを見つけました。これをインストールすると、サスペンド時に、/etc/apm.d/suspend.d/S* が、レジューム時に /etc/apm.d/resume.d/R* を実行できるようです。
早速インストールして使ってみます。
インストール後に /etc/apm.d/suspend.d の下に次のような内容の S00EjectSD というファイルを作って実行属性をつけます。

#!/bin/sh
if
    mount |grep /dev/mmcda1 > /dev/null
then
    HAVE_SDMEMORY="y"
    BUS="0"
    SLOT="0"
    export HAVE_SDMEMORY BUS SLOT
    /usr/sbin/sdiomgr sdcard detach
fi

これでうまくいきました。サスペンドし、レジュームしたときに SD のアイコンが一度消えて、現れます。

ちなみに、4GB の SD カードも認識しています。

written by sirius [りなざう] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Sirius

MySketch 2.7.2 written by 夕雨