だいぶ時間がかかってしまいましたが、自動で qinstall.so にパッチを当てるツールができました。私が該当機種の qinstall.so を持っていなくても qinstall-fix 相当のパッチを自動で当ててくれます。
mokusei さんから、SL-6000 シリーズでも qinstall-fix を使いたいとご要望をいただいたのですが、 SL-6000 シリーズは ROM バージョンもまちまちで、アップデートイメージもSHARPから提供されていないようなので、今までの方法で全てのバージョンに対応することは不可能でした。
今回のツールを使うことで、そのような方でも qinstall-fix 相当が使えるようになるかもしれません。
ただし、自動でバイナリパッチを当てるというのはものすごく危険で、最悪 NAND Restore しないと起動しなくなる可能性がありますので、ご使用になる場合はご自身の責任でお使いください。
qinstall-fixが対応している機種をお持ちの方はqinstall-fixをお使いください。qinstall-fixが対応していない SL-6000 系の方のみお試しください。
ファイル
使い方
1. ザウルスの NAND backup を取ってください。
2. PCでファイルをダウンロードし、SD か CF に展開します。
展開すると readelf と generate-info という2つのファイルが作成されます。これを CF か SD のルートディレクトリに入れてください。
3. ザウルスに SD, CF を挿します。
4. ターミナルソフト (qpe-embeddedkonsole-ja 等) から以下のコマンドを実行します。
$ cd /mnt/card ※ SD の場合
$ su
# ./generate-info /opt/QtPalmtop/binlib/qinstall.so
ファイルのチェックと自動パッチを行います。成功すると、 /opt/QtPalmtop/binlib/qinstall.so.patched というファイルが作成されます。
実行したときのログは重要な情報源になりますので、コピペして保存しておいてください。
ちなみに私が借りている SL-6000 では以下のようなログになりました。
# ./generate-info /opt/QtPalmtop/binlib/qinstall.so
/opt/QtPalmtop/binlib/qinstall.so
I: .text section found.
D: id: 12 addr:0x00012180 file:0x00012180
I: .rodata section found.
D: id: 14 addr:0x0003318c file:0x0003318c
I: getAvaliableSize symbol found.
D: symbol: 0x00026d78
D: str: /home/namikosi/cvs/c700.daito/qt-master/qt-2.3.2/include/qlistbox.h
D: embed area: 0x0000008c length: 68
I: Code found!! offset = 0x1e0 vaddr = 0x26f60
D: cat /opt/QtPalmtop/binlib/qinstall.so > /opt/QtPalmtop/binlib/qinstall.so.patched
I: ADDR mul:0x26f60 embed code:0x33218
I: File mul:0x26f60 embed code:0x33218
I: mul code: eb0030ae
I: 00026f60:ae3000eb
I: 00033218:2f866f00ffffffff925380e0000050e308509f15000055e300509f450ef0a0e1ffffff7f
I: 1db173a57facb468270cae6f946c751c /opt/QtPalmtop/binlib/qinstall.so
I: 0f4c9360fb875b57659b2c12d2f71ad2 /opt/QtPalmtop/binlib/qinstall.so.patched
5. オリジナルを保存して、qinstall.so.patched に差し替えます。
# mv /opt/QtPalmtop/binlib/qinstall.so /opt/QtPalmtop/binlib/qinstall.so-bak
# mv /opt/QtPalmtop/binlib/qinstall.so.patched /opt/QtPalmtop/binlib/qinstall.so
6. ザウルスを再起動します
7. パッチ当てが成功していれば 2GB を超えるメディアにも ipk をインストールできるはずです。
試してみた方は、以下の内容をコメント欄に張り付けてください。
- 機種名 (SL-6000Nなど)
- ROM version
- 成功か失敗か
- generate-infoコマンドを実行したときのログ
成功した場合は qinstall-fix にその結果をマージしたいと思います。
少々危険が伴いますが、SL-6000系をお持ちで人柱になってくださる方はご協力をお願いします。