DELL Streakのroot化

Android端末をディープに弄るとなると、まずroot化(root権限の取得)は外せません。ということで、さっそくやってみたのでエントリ。緊急地震速報対応アップデート済みの、Android 2.2.2でビルド番号17957のDELL Streak(001DL)をroot化します。
WindowsMobileの時はフォーマットすれば元に戻るという安心感があって結構大胆に弄っていましたが、Android端末の場合、弄るのはファームウェアそのものなわけで、弄ってしまったら元に戻す手段は提供されていません。
ということで、まずは素の状態のROMデータの保存から。ROMデータのバックアップは普通の手段では出来ないので、バックアップの機能を持ったカスタムリカバリーイメージを書き込み、バックアップを取り、そのまま再起動せず続けてroot化まで行いました。
なお、ここで紹介する方法でroot化した場合、root化前のバックアップデータを書き戻す以外に手軽に元に戻す方法はありません。頻繁にroot化を解除したい人はアプリでroot化する方法のほうがお手軽です。ただ、個人的には端末の脆弱性を利用してroot権限を得ているアプリ版よりも、PCに接続して正規の手順でファームウェアを書き換えるこちらの方法のほうが好きですけど。

  1. Android SDKのツール類が必須ですので、インストールしていない場合には先にインストールしておきます。私はすでにインストールしている*1ので、ここでは省略。
  2. root化に必要になるSuperuserアプリをxda-developersのページからダウンロードして、DELL StreakのSDカードにコピーしておきます。このzipファイルは展開する必要はありません。そのままSDカードに入れておきます。
  3. DELL Streak側で待受画面から[メニュー]ボタン→[設定]→[アプリケーション]→[開発]と辿って[USBデバッグ]のチェックボックスをONにします。合わせて、PCに接続してデバッグ用のUSBドライバをインストールしておきます。ドライバは(かなり判り難いですが)DELLのホームページからダウンロードできます。*2
  4. DELL Streakに最適化されている(らしい)StreakMod Recoveryというリカバリーイメージをxda-developersのページからダウンロード*3してきてzipファイルを展開し、中からrecovery.imgファイルを取り出します。β版だとちょっと怖いので、私はrecovery-v0.3.2.7-DoctorWFix.zipのほうにしておきました。
  5. DELL Streak側の電源を一旦落とし、カメラボタンを押しながら再度電源を入れ、真っ白な画面になったらボタンから手を離します。しばらく待つと画面の右側にテンキーっぽいものが表示されるので、画面右上の[FastBoot]をタップし、PCに繋ぎ、画面左下に"FASTBOOT_MODE"と表示されたのを確認します。ちなみに、電源ONからPCに繋ぎっぱなしで作業しても問題はありません。
  6. コマンドプロンプトを開き、先ほど展開したrecovery.imgのあるフォルダに移動して以下のようにコマンドを入力します。なお、2行目のコマンドを入力した後すぐにDELL Streak側の操作が必要になるので気をつけてください。
        fastboot -i 0x413c flash recovery recovery.img
        fastboot -i 0x413c reboot
  7. DELL Streakのボリュームアップとボリュームダウンのボタンを両方とも、画面に黒地に白文字のメニューが出るまで押し続けます。メニューが出たらボリュームアップ/ダウンのボタンで[2.Software upgrade via Update.pkg on SD Card]の項目を選択してカメラボタンで決定。画面にビックリマーク付きのDELLロゴが出たら、電源ボタンを押してStreakMod Recoveryのメニューを表示させます。以下、操作はボリュームボタンとカメラボタン、それと画面右側の戻るボタンで行います。
  8. StreakMod Recoveryのメニューから[advanced]→[nandroid]→[full backup]→[Yes - This could take a while]*4と選んでバックアップを開始します。数分は掛かるので、終わるまでのんびりと待ちましょう。終わったら[戻る]ボタンでトップのメニューに戻ります。なお、バックアップされたデータは /sdcard/rom_backup/ ディレクトリ内の日付*5のフォルダ内に書き込まれていて、[full restore]のメニューから書き戻すことができます。
  9. StreakMod Recoveryのメニューから今度は[apply sdcard:update.zip]→[choose zip from sdcard]と選びます。SDカード内のファイルが表示されるので、SDカードにコピーしておいたSuperuser.zipを選択。自動的にZIPファイルからSuperuserアプリがインストールされて、ものの数秒でroot化が終了するので、終わったら[戻る]ボタンでトップのメニューに戻ります。
  10. メニューから[reboot system now]を選んで再起動します。普通にDELL Streakが起動するので、アプリケーションとして[Superuser]アプリが追加されているのを確認します。

これで終了ですが、DELL Streakにはリカバリーが標準と違うと標準のものを書き戻す復帰機能があるので、この時点でリカバリーが標準に戻ってしまっています。カスタムリカバリーが必要無ければこのままでも良いのですが、個人的には何気にフルバックアップの機能が便利なので、リカバリーの復帰機能を殺して常にStreakMod Recoveryが入っている状態にします。

  1. Androidマーケットから「mount /system (rw / ro)」というアプリ*6を探し出してインストールします。インストールが終わったらアプリを起動して、[Mount r/w]のボタンを押して/systemを書き込み可能に切り替えます。なお、初回は[Superuserリクエスト]のダイアログが出るので許可を出しておきます。
  2. DELL StreakをPCに繋ぎ、コマンドプロンプトから以下のように入力します。2行目以降はADBのシェルでの操作です。またsuコマンドを実行すると、DELL Streakの画面に[Superuserリクエスト]のダイアログが出るので、[記憶する]のチェックを外して*7許可を出しておきます。
        adb -d shell
        cd /system/etc
        su
        mv install-recovery.sh _install-recovery.sh
        exit
        exit
  3. DELL Streak側でまたmount /systemアプリを起動し、今度は[Mount r/o]ボタンで/systemディレクトリを読み込み専用でマウントしなおしておきます。mount /systemアプリの設定を変更していなければ、再起動すれば読み込み専用に戻りますが、そのまま続けて操作する時は戻さないと色々と危ないので注意しましょう。
  4. root化手順の通りにもう一度StreakMod Recoveryを書き込みます。コマンド入力後はボリュームボタンは押さず、そのまま普通に起動させます。

これで以降は、ボリュームキー両方押しっぱなし起動から[2.Software upgrade via Update.pkg on SD Card]の選択でStreakMod Recoveryのメニューに入れるようになります。リカバリーの復帰機能を復活させたければ、同じ手順でmvコマンド(コマンドプロンプトのrenコマンドに相当)のファイル名を逆に入れ替えて実行してください。

*1:手順については2月8日のエントリを参照。インストール後、Android SDKのtoolsとplatform-toolsへのPATHを通しておきます。

*2:ちなみにFirefox6では上手くダウンロードできませんでした。うまく行かない時はInternetExplorerで試しましょう。

*3:もしかしたら登録(無料)が必要かもしれません。

*4:Noの項目が沢山出ますが気にしない。たぶん、うっかり操作してしまったというミスを防ぐためのものでしょう。

*5:UTCなので9時間ズレます。念のため。

*6:/systemディレクトリが書き込み可能に出来れば良いので、他のアプリでもコマンド打ちでも構わないのですが、説明が面倒なのでボタン一発で出来るこのアプリを使います。

*7:ADBのシェルにroot権限与えっぱなしだと、何かと危ないので記憶させないほうが無難です。