Hatena::ブログ(Diary)

俺志向 ole-shikou

俺志向 - ole-shikou

2010年02月06日(土)

[]bucchiさんが改造されたZaurus3桁機用SDHC対応のドライバーをテストしてみました - その1

f:id:ole-shikou:20100206210145j:image:left う〜ん、bucchi さん、すごいです。SL-Zaurus 4桁機に続いて、3桁機用(SL-C750、SL-C760、SL-C860)の SDHC 対応(4GB 限定)ドライバーも作ってくれました。

 bucchi さんも言っていますが、今回のドライバーは SHARP のオリジナルドライバーを改造(2GB超SDSDHC 対応)したものなので、安定性についてはまったく心配がなく、本命ドライバーの登場です

 私的には、SL-C860 をメインで使っているので、たいへんうれしく、これでまたしばらく戦えます。

今後のご報告予定

 書き始めたら一回でご報告するには、長くなりすぎると判断したので、以下の3つの記事に分けてご報告する予定です。

SL-Zaurus 3桁機用 SD ドライバーについて

 まず、これまでに公開された SL-Zaurus 3桁機用 SD ドライバーについて、概観したいと思います。

 これまでも、SL-Zaurus 3桁機用 SD ドライバーについては、2GB超対応のものを Cake さんがスクラッチで開発(リンク先は InternetArchive です)されたり、SDIO の無線 LAN カード「Zentek(旧 C-guys)SD-Link11b」のドライバーが、2GB超の SD メモリーカードに対応していることが判明し、利用されてきましたが、下表のような利用上の制限事項が有り、これらの制限が日常の利用では結構、致命的で本格的には使われてこなかったようです。私も、「SD-Link11b 用ドライバー」はテストしたことがありますが、やはりサスペント/レジュームへの未対応の問題(ドライバーの動作を解析し、/etc/rc.d/init.d/sdio および /usr/sbin/sdiomgr を書き換えて対応したが、抜本的な対策にはならなかった)で本格的な利用には至りませんでした。

SD ドライバー名説明利用上の制限
Cake さん開発ドライバー(InternetArchive)Cake さんがスクラッチで開発された 2GB超 SD メモリーカードドライバレジューム後の SD メモリーカードの認識に時間がかる(数秒〜10秒)、また、開発が途中でストップし、現在配布サイトも閉鎖されています。
SD-Link11b 用ドライバーSDIO の無線 LAN カード「Zentek(旧 C-guys)SD-Link11b」のドライバー。2GB超の SD メモリーカードに対応していることが判明し、利用されてきた。公式な対象機種は、SL-C860SL-C760 のみ。サスペント/レジュームに未対応。
bucchi さん改造版 3桁機用 SDHC 対応ドライバーSHARP のオリジナルドライバーを改造(2GB超SDSDHC対応)したものなので、安定性についてはまったく心配がなく、本命ドライバーの登場です。対象機種は SL-Zaurus の3桁機の内 SL-C750SL-C760SL-C860 の3機種です。また、対応するメモリーカードは、SD メモリーカードは、4GB(非SDHC)まて、SDHC メモリーカードは 4GB 限定です。

テスト環境について

 今回のテストに使用した環境は以下の通りです。普段、RubyRuby/Qteプログラミングに使用している専用端末を使用しました。

機種名 SL-C860
ROM Version 1.40 JP
Kernel Version Normal Kernel 2.4.18-rmk7-pxa3-embedix-021129
bash-2.05$ cat /proc/deviceinfo/product
SL-C860
bash-2.05$ cat /proc/deviceinfo/revision
1.40
bash-2.05$ cat /proc/version
Linux version 2.4.18-rmk7-pxa3-embedix-021129 (zaurus@sharplinux) (gcc version 2.95.2 19991024 (release)) #1 Thu, 6 Nov 2003 09:29:23 +0900
bash-2.05$ uname -a
Linux zaurus 2.4.18-rmk7-pxa3-embedix #1 Thu, 6 Nov 2003 09:29:23 +0900 armv5tel unknown
スクリーンショット [設定] - [システム情報]
f:id:ole-shikou:20100206210143p:image
スクリーンショット コマンドラインによる情報
f:id:ole-shikou:20100206210144p:image

今回のドライバーの仕様について

 今回の3桁機用(SL-C750、SL-C760、SL-C860)の SDHC 対応(4GB 限定)ドライバーの仕様はつぎのようです。

対象機種

 対象機種は SL-Zaurus の3桁機の内つぎの3機種です。SL-A300SL-B500SL-C700 には対応していませんのご注意ください。

No.対応状況機種名
1×SL-A300
2×SL-B500
3×SL-C700
4SL-C750
5SL-C760
6SL-C860
対応する SD/SDHC メモリーカード

 今回のドライバー(Ver1.0 zaurus-sd-driver-update_1.0-for-Cxx0_arm.ipk)が対応する SD/SDHC メモリーカードは、つぎの通りです。SD メモリーカードは、4GB(非SDHC)まて、SDHC メモリーカードは 4GB 限定です。

SD メモリーカード

容量128MB以下128MB256MB512MB1GB2GB4GB(非SDHC)
対応状況

SDHC メモリーカード

容量4GB8GB16GB32GB
対応状況×××
ドライバインストール上の注意

 今回のドライバーのインストールにあたっては、つぎの条件を守ることが必要とのことです。(『3桁機用 SDHC ドライバ! - ぷちのいず』から引用しました)

ドライバー利用上の注意

ドライバーのインストール/アンインストールとテスト結果について

 ドライバーのインストール/アンインストールのテスト結果について、実際のインストール/アンインストール作業を元に報告します。

ドライバーのインストール/アンインストールのテスト結果

 ドライバーのインストール/アンインストールのテスト結果は下表の通りです。いずれのテストも問題ありませんでした。

テスト結果テスト項目
インストール作業の最後でシステムの「再起動」が実行されるか?
正常にイントールされるか?(SHARP オリジナルのドライバーにバイナリパッチが適用され SDHC 対応のドライバーが生成されるか)
正常にアンイントールされるか?(インストールしたファイルが削除されるか)
アンイントール後にSHARP オリジナルの SD メモリーカードドライバに戻るか?
ドライバーのインストール手順

 ここでは、つぎのような条件でインストールするとして説明します。

インストールパッケージが置いてあるディレクトリ本体メモリー /home/zaurus/Documents/Install_Files
インストーラーの起動ホーム画面のファイルタブ(ファイラー)からインストールパッケージを選択し、標準のインストーラーを起動する

ドライバーのインストール手順

スクリーンショット操作説明
f:id:ole-shikou:20100206210137p:imageホーム画面のファイルタブ(ファイラー)でインストールパッケージが置いてあるディレクトリ 本体メモリー /home/zaurus/Documents/Install_Files を表示し、[OK] または [Enter] キーで選択する
f:id:ole-shikou:20100206210138p:imageインストールパッケージ(zaurus-sd-driver-update_1.0-for-Cxx0_arm.ipk)が選択された形で標準のインストーラーが起動するので、[OK] または [Enter] キーで選択する
f:id:ole-shikou:20100206210139p:imageインストール先の選択ダイアログボックスが表示されるので、[本体メモリー] を選択して、[OK] キーを押す
f:id:ole-shikou:20100206210140p:imageドライバーのインストールが開始される、インストールに必要な時間は20秒前後
f:id:ole-shikou:20100206210141p:imageインストール後にシステムが「再起動」される旨のダイアログボックスが表示されるので、確認後に [OK] キーを押す
f:id:ole-shikou:20100206210142p:image「今から再起動します」のダイアログボックスが表示されるので、確認後に [OK] キーを押す
ドライバーのアンインストール手順
スクリーンショット操作説明
f:id:ole-shikou:20100206210146p:image[設定] - [ソフトウェアの追加/削除] メニューから、標準のインストーラーを起動し、[ソフトウェアアンインストール] のボタンを押す
f:id:ole-shikou:20100206210147p:imageアンインストールするソフトウェアの選択画面が表示されるので、今回のドライバー「zaurus-sd-driver-update 1.0-for-Cxx0」を選択する
f:id:ole-shikou:20100206210148p:imageアンインストールして良いか」の確認ダイアログボックスが表示されるので、内容を確認して [はい] のボタンを押す
f:id:ole-shikou:20100206210149p:imageアンインストールが実行される
f:id:ole-shikou:20100206210150p:imageアンインストール完了」のダイアログボックスが表示されるので、指示に従って、[OK] キー、[Cancel]キー、[Cancel]キー の順に押し、標準のインストーラーを終了する
f:id:ole-shikou:20100206210151p:imageQt メニューの「再起動」を選択し、システムの再起動を実行する
f:id:ole-shikou:20100206210153p:image再起動」の実行確認ダイアログボックスが表示されるので、 [はい] のボタンを押す

【技術的な解説】インストールパッケージの動作に関する情報

 以下のログは、今回、配布されているインストールパッケージ(zaurus-sd-driver-update_1.0-for-Cxx0_arm.ipk)について、自作のシェルスクリプト(ipk_info)で出力した情報です。この情報を元に、インストールパッケージの動作について解析してみたので解説します。

ファイル名説明
ld-tmpLinux の ld リンカーコマンドのようです、最終的にバイナリパッチを当てた SD メモリーカードドライバーを生成する際に利用されているものと思われます
bpatchSHARP オリジナルのドライバーへフックを追加(sd.bpatch のパッチデータによる)するためのバイナリパッチを当てるコマンドのようです
hook.oこれが今回のドライバー改造の肝ですね、2GB超SDSDHC対応に必要なルーチン(プログラム)が SHARP オリジナルのドライバーへのフックという形で実装されているようです
sd.bpatchSHARP オリジナルのドライバーへフックを追加するためのパッチデータのようです
zaurus-sd-driver-update_1.0-for-Cxx0_arm.ipk
=====================================================================================

ipk root
-------------------------------------------------------------------------------------
0rw-r--r-- root/root         4 2010-02-05 07:43:05 ./debian-binary
0rw-r--r-- root/root    196130 2010-02-05 07:43:05 ./data.tar.gz
0rw-r--r-- root/root       960 2010-02-05 07:43:05 ./control.tar.gz

control.tar.gz
-------------------------------------------------------------------------------------
0rwxr-xr-x root/root         0 2010-02-05 07:43:04 ./
0rwxr-xr-x root/root       317 2010-02-04 08:27:00 ./preinst
0rw-r--r-- root/root       262 2010-02-04 12:38:44 ./control
0rwxr-xr-x root/root       279 2010-02-04 12:38:44 ./prerm
0rwxr-xr-x root/root       744 2010-02-05 07:43:04 ./postinst

data.tar.gz
-------------------------------------------------------------------------------------
0rwxr-xr-x root/root         0 2010-02-05 07:43:04 ./
0rwxr-xr-x root/root         0 2010-02-05 07:43:04 ./opt/
0rwxr-xr-x root/root         0 2010-02-05 07:43:04 ./opt/QtPalmtop/
0rwxr-xr-x root/root         0 2010-02-05 07:43:04 ./opt/QtPalmtop/share/
0rwxr-xr-x root/root         0 2010-02-05 07:43:04 ./opt/QtPalmtop/share/sdhc-driver/
0rwxr-xr-x root/root    441760 2010-02-05 07:43:04 ./opt/QtPalmtop/share/sdhc-driver/ld-tmp
0rwxr-xr-x root/root      4156 2010-02-05 07:43:04 ./opt/QtPalmtop/share/sdhc-driver/bpatch
0rw-r--r-- root/root      8636 2010-02-05 07:39:15 ./opt/QtPalmtop/share/sdhc-driver/hook.o
0rw-r--r-- root/root        92 2010-02-05 07:43:04 ./opt/QtPalmtop/share/sdhc-driver/sd.bpatch

control file
-------------------------------------------------------------------------------------
Package:	zaurus-sd-driver-update
Section:	Qtopia
Maintainer:	Tomohiro Masubuchi <bucchi@e-ml.jp>
Architecture:	arm
Version:	1.0-for-Cxx0
InternalOnly:	yes
NeedRestart:	linux
Description:	updates zaurus to use higher than 2GB SD and 4GB SDHC for SL-C750/760/860.

preinst file
-------------------------------------------------------------------------------------
#!/bin/sh
#
#  shdc-driver package  pre-install script
#

# version check
FILE="/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/block/sharp_mmcsd_m.o"
MD5=`md5sum $FILE | cut -d ' ' -f 1`

ORGMD5='b6a026d0e0eaba101a3746bc0555cdf5'

if [ $MD5 != $ORGMD5 ]; then
    echo "MD5 check error."
    exit 1;
fi

exit 0

postinst file
-------------------------------------------------------------------------------------
#!/bin/sh
#
#  sdhc-driver package  post-install script
#

INSTALL_DIR="/opt/QtPalmtop/share/sdhc-driver/"
BPATCH="$INSTALL_DIR/bpatch"
TARGET="/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/block/sharp_mmcsd_m.o"
BAKTARGET="$INSTALL_DIR/sharp_mmcsd_m.o"
SD_BPATCH="$INSTALL_DIR/sd.bpatch"
LD="$INSTALL_DIR/ld-tmp"

TMP_TARGET="/tmp/sharp_mmcsd_m.o"

# create new driver

$LD -r -o $TMP_TARGET $TARGET $INSTALL_DIR/hook.o
$BPATCH $TMP_TARGET < $SD_BPATCH

# check MD5 sum

FIXMD5='ddd28e819b9feb46eb35469de9382f4c'

MD5=`md5sum $TMP_TARGET | cut -d ' ' -f 1`
if [ $MD5 != $FIXMD5 ]; then
    echo "MD5 check error."
    rm -f $TMP_TARGET
    exit 1
fi

# save original file & replace

mv $TARGET $BAKTARGET
mv $TMP_TARGET $TARGET

exit 0

prerm file
-------------------------------------------------------------------------------------
#!/bin/sh
#
#  qinstall-fix package  pre-uninstall script
#

INSTALL_DIR="/opt/QtPalmtop/share/sdhc-driver/"
TARGET="/lib/modules/2.4.18-rmk7-pxa3-embedix/kernel/drivers/block/sharp_mmcsd_m.o"
BAKTARGET="$INSTALL_DIR/sharp_mmcsd_m.o"

rm -f $TARGET
mv $BAKTARGET $TARGET

exit 0

postrm file
-------------------------------------------------------------------------------------

関連リンク

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/ole-shikou/20100206/p1