2010年1月30日土曜日

2010年 / の旅

MILESTONE の root 化をして、android は Linux なんだということを実感。早速、フォントを置き換えたり、Google Map Navigation を有効にしたり、Market Enabler を使いたいのだが、せっかくなので、中身をちょっと眺めてみる。『meminfo』や『dmsg』など、昔の自分の記憶をたどっていろいろやってみた。けっこう忘れているコマンドもあったりする。

まずは 『/』 。









お次は、マウントしているものを。先日、はまった 『/sdcard』 もマウントされている。android のファイルシステムは yaffs2 。『/system』は書き込み禁止(ro)になっている。『/data』は書き込み可(rw)で、ユーザーがインストールしたアプリなどはここに保存されるよう。









更に『/system/fonts』。ここのフォントファイルを置き換えることで、MILESTONE のフォントを変更することができる。これはまだ変更前のデフォルトの状態。フォントディレクトリは書き込み禁止の『/system』フォント下にあるので root 化しないと変更できない。









『/system/app』にはデフォルトのアプリの apk ファイルがある。Motonav や YouTube、Maps、Gmail などの apk があるのがわかる。日本での Google Map Navigation を有効にするには、ここにある Maps を消去して、パッチを当てたバージョンをインストールする必要がある。(root を取らずにデフォルトの Maps.apk と別にインストールする方法もある。)









『/data/app』にはインストールしたアプリの apk ファイルがある。私がインストールした simeji や DroidWing、DolphinBrowser の apk がある。









『/data/data』には各アプリのサブディレクトリがあり、キャッシュや設定、ライブラリなどが置かれているよう。









最後は『/proc/meminfo』。

MILESTONE その利用とリスク

既に色々なサイトでリンクや紹介がされていますが、ここもMILESTONEについてのブログなので、下記の記事を紹介しておく。

海外版ケータイは日本で利用できるのか?

MILESTONE は EU で販売されているもので、CE と FCC ID のプリントがある。

2010年1月29日金曜日

su になり、VoiceSearch を復活させる 後編

前編では su になるところまで辿り着いた。後編では、機能しなくなった VoiceSearch を復活させる。root 化に関しては、コムギさんMaster.Tさんmeyskldさんが参考になる。

VoiceSearch の復活に関してはmeyskldさんのところで紹介されていたここの情報を元にしている。

手順
1. VoiceSearch.apk のインストール
2. libspeech.so の置き換え

実際の操作については、
手順 1. MILESTONE で行なう、
手順 2. MILESTONE を PC と USB で接続し、 adb shell 上で行なう、
ということになる。

1. VoiceSearch.apk のインストール
(a) VoiceSearch.apk ファイルを SD カードにコピー
(b) ASTRO File Manager で VoiceSearch.apk ファイルを実行
(c) Open App Manager を選択し、Install を選択してインストール

2. libspeech.so の置き換え
(a) libspeech.so ファイルを SD カードにコピー
※ここから adb shell で行なう
(b) adb shell で /system を書き込み可能な状態 (rw) でマウントしなおす
(c) libspeech.so を強制的に (-f オプション) コピーする
※実際のコマンド入力と結果は下記のようになる
D:\android-sdk-windows\tools>adb shell
$ su
su
# mount
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock6 /system yaffs2 ro 0 0
/dev/block/mtdblock8 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock7 /cache yaffs2 rw,nosuid,nodev 0 0
tmpfs /tmp tmpfs rw,size=2048k 0 0
/dev/block/mtdblock0 /pds yaffs2 rw,nosuid,nodev 0 0
/dev/block//vold/179:1 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=
1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,s
hortname=mixed,utf8,errors=remount-ro 0 0
# mount -o remount,rw -t yaffs2 /dev/block/mtdblock6 /system
mount -o remount,rw -t yaffs2 /dev/block/mtdblock6 /system
# mount
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock6 /system yaffs2 rw 0 0
/dev/block/mtdblock8 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock7 /cache yaffs2 rw,nosuid,nodev 0 0
tmpfs /tmp tmpfs rw,size=2048k 0 0
/dev/block/mtdblock0 /pds yaffs2 rw,nosuid,nodev 0 0
/dev/block//vold/179:1 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=
1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,s
hortname=mixed,utf8,errors=remount-ro 0 0
# cp -f /sdcard/libspeech.so /system/lib/libspeech.so
cp -f /sdcard/libspeech.so /system/lib/libspeech.so
# mount -o remount,ro -t yaffs2 /dev/block/mtdblock6 /system
mount -o remount,ro -t yaffs2 /dev/block/mtdblock6 /system
# mount
mount
rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
tmpfs /sqlite_stmt_journals tmpfs rw,size=4096k 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock6 /system yaffs2 ro 0 0
/dev/block/mtdblock8 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock7 /cache yaffs2 rw,nosuid,nodev 0 0
tmpfs /tmp tmpfs rw,size=2048k 0 0
/dev/block/mtdblock0 /pds yaffs2 rw,nosuid,nodev 0 0
/dev/block//vold/179:1 /sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=
1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,s
hortname=mixed,utf8,errors=remount-ro 0 0
#
終了。これで、VoiceSearch が復活している。

ここではまったのは、『SD カードをアンマウントしろ』、と記述があるので MILESTONE の Settings でアンマウトして作業に入ったところ、SD カードにある libspeech.so が見当らないというエラーが出た。/sdcard に何もマウントされていない状況になっていた。で、SD カードっぽいものを /dev で探すが見当らない。/dev/hda とか /dev/sda っぽいんじゃないかと思っていたが違う。検索すると sdutil というコマンドがあるらしい。しかし、このコマンドも知らないと言われてしまう。もうちょっと検索すると /dev/block//vold/179:1 が SD カードっぽい。当てずっぽうで、rw と vfat でマウントしてみるとうまくいき、SD カードにある libspeech.so にアクセスできるようになった。

作業していて /system の中を見たりしていると、android って Linux なんだなってのを実感した。以前に Debian を使っていたので懐しいのとともに、今回はその貧弱な知識ではあるがちょっと役立った。こういう作業は面白い。android 端末を選んで良かったと思うところだ。

2010年1月28日木曜日

su になり、VoiceSearch を復活させる 前編

私の MILESTONE も無事に 2.0.1 にアップデートできたのだが、音声検索ができない。せっかくの VoiceSearch ができないのはもったいないので、復活させるために root 化が必要となる。フォントはもう少し様子を見ても良いので、root 化は暫く置いておこうと考えていたところ。だが、VoiceSearch は、フォントの入れ替えよりも優先度が高いため root 化することにする。

この root 化も先人の導きがあるので、それに従えば問題無く root 化できる。しかし、自分ははまってしまった。はまったのは2箇所。まず、adb shell で su になるのだが MILESTONE 本体の方で superuser のパーミッションを承認するところ、加えて VoiceSearch を復活させる手順での sdcard のマウントに関して。

必要なもの
milestone_root -> boot時にこのファイルを実行させる
setupsu.apk -> su コマンドと busybox をインストール
VoiceSearch.apk -> VoiceSearch をインストール
libspeech.so -> /system/lib のものと置き換える
android SDK の adb を使用するのでインストールしておく

手順
1. milestone_root を実行させる
(a) milestone_root を update.zip というファイル名でSDカードのルートディレクトリにコピー
(b) MILESTONE を PowerOff
(c) カメラボタンを押しながら電源を入れる -> 左図
(d) ボリュームアップボタンうを押しながら、カメラボタンを押す -> 中図
(e) リカバリーモードが立ち上がるので、apply sdcard:update.zip を選択し実行
(f) Install drom sdcard complete. となり成功 -> 右図
(g) 再起動する













2. su と busybox のインストール
(a) setupsu.apk ファイルを SD カードにコピー
(b) ASTRO File Manager で setupsu.apk ファイルを実行
(c) Open App Manager を選択し、Install を選択してインストール













3. su になる
(a) MILESTONE を USB で PC と接続
(b) Windows のコマンドプロンプトを開く
(c) コマンドプロンプトで adb shell を実行
(d) adb shell で su コマンドを実行
※コマンドプロンプトでは下記のようになる
D:\android-sdk-windows\tools>adb shell
$ su
su
(e) MILESTONE で su のパーミッションの認証をする -> 左図
※MILESTONE 本体の方で yes ボタンをタップする
(f) ddms を立ち上げていれば superuser になったことが確認できる -> 右図













これで root 化し、su になることができたのでカスタマイズが可能。フォントの入れ替えやGoogle Map Navi を使えるようにしたり、 Market Enabler を入れるなどができるはず。

長くなったので VoiceSearch の復活手続きは後編にて。

2010年1月27日水曜日

アップデートの手順 ~覚え書き~

アップデートの手順は先人の情報を見れば良いのだが、一応覚え書きとして残す。

必要なものは、RSDLite_4.5.3.zipmilestone 2.0.1 update.zipの二つ。

RSD Lite は、MILESTONE と USB 接続し、 ROM の書き換えを行うアプリケーション。そして、書き換える内容となるのが milestone 2.0.1 update.zip の中にある SBF ファイル。131MB もある。

1 まずは、RSD Lite をインストール。Win7 64bit でも問題なくインストール可能。
2 milestone 2.0.1 update.zip の中身を展開。
3 MILESTONE の電源を落とす。
4 MILESTONE をカメラキーとボリュームダウンキーを同時に押したまま電源を入れ、ブートローダーを起動する。
5 USB ケーブルで PC と接続する。


念の為、PC との接続は『Motorola Phone Tools』に設定しておいた。









6 RSD Lite を起動し、下のリストからデバイスを選択する。
7 書き込む SBF ファイルを選択し、書き込みをスタートする。











8 書き換えが終了すると MILESTONE がリブートされる。

これで、OS 2.0.1 にアプデート完了。

遅蒔きながら、アップデート

MILESTONE の root化、2.0.1 へのアップデートと立て続けに大きな波が来ているが、この週末は予定が入ってしまい、やっとこれらの作業に取り掛かる時間ができた。文鎮化がこわいというヘタレでもあるので、先人の後を追うのには丁度良かったのかもしれぬが、、、

SIM 無し運用なので OTA の期待はできるはずもなく、アップデートすることに。アップデートの手順は、コムギドットネットさんのMilestone 2.0.1 OTAを参考にさせていただいた。


まずは、OS 2.0 のスクリーンロックの画面。緑の鍵アイコンを弧を描くようにスライドさせるとスクリーンロックが解除される。










OS 2.0.1 ではこのアイコンのスライドが直線となる。これは何か残念だ。弧を描く方が断然格好良い。










左側が OS2.0、右側が OS2.0.1。当然ですが、カーネルやビルドも変わってますね。









私の MILESTONE は、アップデートしてもカメラはほとんど変化なしな気がする。どうもピントが合ってないような、、、AF のバグは治っているはずなのだが。もう少し使って様子をみる。

2010年1月21日木曜日

root化前夜 ~可笑しな漢字達~

MILESTONEのrootが遂に取れた模様。元はドイツ後のサイトのようだが、Android Custom Cookbookにて日本語で紹介されている。既にMaster.Tさんがroot化に成功し、フォントの入れ替えも実施している。

自分も既にzipファイルをダウンロードし、root化用のmicroSDも準備はしてある。ただ、万一の事を考えると6万円の文鎮化するとも限らないのでちょっと躊躇。情報の収集と自分の気持ちが落ち着くのを待ってからチャレンジする予定。

さて、何故root化したいのか、という動機はフォントの問題。androidは、デフォルトで日本語のフォントを持ってはいるが、これは『cjkフォント』と呼ばれるもの。漢字圏の中国・日本・韓国のフォントをまとめたものなので、字体が違うものが入ってる。例えば、自分がMILESTONEを使っていて出会った日本の漢字と違う字体のものが下記である。気になると言えば気になる。自分は使っているうちに慣れてしまってはいるけど。