F-12C(ビルド番号 V21)のroot化

F-12CのADB用USBドライバが更新されたのか、DooMLoRD_v4_ROOT-zergRush-busybox-su.zipに含まれるadbコマンドが上手く動作しなくなってたみたいなので、Android SDKで最新のadb.exeを持って来て上書きする手順を追加(2012/11/03更新)
最新バージョンにまで更新したF-12C(ベースバンドバージョン 6001.0101.25、ビルド番号 V21)をroot化してみた。(ベースバンドバージョン 6001.0101.14、ビルド番号 V13なら何も考えずにDooMLoRD_v4_ROOT-zergRush-busybox-su.zipでroot化、DooMLoRD UNROOTING Script v1.0でunroot化が出来ることを確認済み)
DooMLoRD_v4_ROOT-zergRush-busybox-su.zipはroot権限を取得するために使っているzergRushの脆弱性は塞がれていてそのままでは使えないので、goroh_kunがF-05Dのroot権限取得の際に使った/data/local.propを歩数計データにシンボリックするやり方を組み込んだバッチ(runme-F12C.zip)を作ってみた。

  1. MENU→設定→端末情報でバージョン等を確認。モデル番号はF-12C、Androidバージョンは2.3.4、ベースバンドバージョンは6001.0101.25、カーネルバージョンは2.6.35.7-perf、build@masato030 #1、ビルド番号はV21だった。
  2. MENU→設定→表示→バックライト→消灯までの時間→30分、MENU→設定→アプリケーション→「提供元不明のアプリ」にチェック、MENU→設定→アプリケーション→開発→「USBデバッグ」にチェック
  3. F-12C ADB用USBドライバをダウンロードした後、解凍
  4. F-12CとWindows PCをmicroUSBケーブルで接続、ドライバを求められたら先ほど解凍したものを使う
  5. DooMLoRD_v4_ROOT-zergRush-busybox-su.zipをダウンロードして解凍
  6. Android SDK for Windowsをダウンロードして実行し「Next」でインストールを進めて「Finish」の後にAndroid SDK Managerが起動したら「Android x.x.x (API xx)」のチェックを外して「Android SDK Platform-tools」のチェックを入れて「Install x packages...」、「Accept All」を選択して「Install」、「Done: loading packages.」が出るまで待って「Close」で閉じる。SDK Pathとして表示されている箇所のplatform-toolsフォルダにあるadb.exe、AdbWinApi.dll、AdbWinUsbApi.dllをDooMLoRD_v4_ROOT-zergRush-busybox-su.zipを解凍して出来たfilesフォルダに上書きコピーする。Android SDK Managerのウィンドウを閉じたら、スタート→プログラム→Android SDK Tools→Uninstall Android SDK ToolsでAndroid SDKをアンインストールしてもかまわない。
  7. DooMLoRD_v4_ROOT-zergRush-busybox-su.zipを解凍した出来たrunme.batと同じ箇所にrunme-F12C.zipを解凍して出てきたrunme-F12C.batを置いて実行(途中「続行するには何かキーを押してください . . .」が出たら、その都度ごとに画面の指示に従ってF-12Cを操作する)

元に戻す(unroot化)のはDooMLoRD UNROOTING Script v1.0で出来た。unroot化後にMENU→設定→プライバシー→データの初期化も問題なく行える。その後に再度root化も出来た。そういえばroot化すると、Applications→カメラ→戻るキー→戻るキーで、ホーム画面の時計/日付/天気のウィジェットが小さくなったりするのは何故だろう?(ウィジェットを消して再度設置するか、再起動すると元に戻る)root化してないF-12Cでも発生したので別にroot化が原因じゃないと思う。
DooMLoRD_v4_ROOT-zergRush-busybox-su.zipは/data/localにtmpフォルダを作ってzergRushを転送して実行することでroot権限を取得、以後はbusyboxを転送して/systemを書き込み可能でマウントし直し、/system/xbinに移動させてインストール、さらにsuとSuperuserアプリを転送して/data/local/tmpを空にしたら再起動って動作になってる。このroot権限を取得する箇所をF-12Cのビルド番号 V20以降では次のような方法で書き換えないといけない。
ADB接続でのroot権限はro.kernel.qemu=1と書かれた/data/local.propを用意することでも取得できるが、F-12Cでは/data/local.propが無く、/dataフォルダに書き込む権限も無い。が、歩数計のOFF/ONで作られるデータは一般ユーザでも扱える上に/dataフォルダであっても書き込むことが出来るので、歩数計データの/data/local/motion_activemass02.dbをリネームする等して退避させた後、歩数計データを/data/local.propのシンボリックリンクにする。そして、歩数計のOFF/ONを行えば歩数計データが/data/local.propとして作成されるので、/data/local.propにro.kernel.qemu=1を書き込んで再起動することでADB接続でのroot権限が取得できるようになる。これをzergRushでのroot権限取得の代わりに埋め込んでいる。尚、/data/local.propを残したままだと突然再起動する挙動があちこちで発生するのでroot化が終わったら(busybox、su、Superuserを組み込んだら)削除するようにしている。