目次
さらば初代
設定app>リセット>オールリセットをタッチ、暗証番号を求められるけど、覚えがなければ初期設定の1234のはず。暫く待つと再起動する。とりあえず起動した!と喜ぶのもつかの間。
iPhoneみたいにシステムごと復元するんじゃないんだね…まずいと思いつつとりあえずwifiをonにしてみる。
表示は「wifiを利用できません」。絶対にやばいやつだと思いながら仮想マシンのUbuntuに接続、adb接続してみる。
終わった…完全に終わった…本来ならこういう時はrecovary_kitなるものをリカバリー領域に用意しておくらしいのだが、そんなこと知らない頃に手に入れて放置していた代物。もちろん用意されているわけもなく投了です。コマンドが一行も実行できないので、apkを持ってきてもインストールできず。泣きそうです。$ adb shell- exec '/system/bin/sh' failed: No such file or directory (2) -
が、gdpWinを諦めた身としては安価な物理キーボード端末でまだ遊びたい…そこでメルカリでサクッと検索。ちょうどいいのがあったのでぽいっと購入。カードって怖いね。
こんにちは2代目
今度は水色!ちょっとかわいく見えて個人的には気に入ってる。
初期化されてたから特に手間はなし。幸運にもBBが10.00.07だったから簡単にrootが取れた。ちなみにBB10.00.10以降はroot権取得やsystemを書き換え可能にする作業が違う。system内を書き換えるのは前述の通り危険!自己責任です!以下は覚え書きな感じで。
rootを取る
- wi-fiに接続。この段階ではなぜかadbで認識できない。
- marketでsuperSuのインストール。supersuを更新やアップデートすると使えなくなるので注意
- ブラウザで「is01 rooter」を検索し、トップヒットするここからis01rooter.apkをダウンロード、インストール
- step1-3を実行
これでrootを取れた。
アプリをインストール
この状態で以下の物をマーケットからインストール
- ClockSync
- ネットワークを通して時刻を修正
- TimeZone Changer
- タイムゾーンを修正(いらないかも)
- Jota Text Editer
- テキストエディタ
- Wi-Fi 高速接続アプリ
- 電波強度でAPを切り替えてくれる。APが多い我が家では役に立つ
- Android Terminal Emulator
- 読んで字のごとく、ターミナル
- Gscript Lite
- 設定したコマンドをワンタッチで実行できるアプリ。この後のsystemの書き換え可能マウントなど、何回も実行しそうなコマンドライン作業を簡単にできるので便利。
- OI File Manager
- この後ESファイルエクスプローラーを入れるまでのつなぎ
- ADW
- ホームランチャー。ここにあるのはis01用に調整してあるらしい。全画面で使える上に解像度を上げてもきれいに見える気がする。記事作成時に使ったのはADW136.apk
- ESファイルエクスプローラー
- 名前通りのファイラー。なんとなくこれに落ち着く。Verが3.2.5.3のものもあるけど、なぜかうまく行かなかったので、使ったのはES ファイルエクスプローラー_1.6.1.0.apk。
- Opera mini 5 beta
- ブラウザ。標準は証明書が古くて警告が出まくるからこれじゃないとやっていられない。
- twicca
- twitterクライアント。初期設定のときのPINが一瞬しか表示されない問題はあるけど、それを超えれば普通に使える。動作を確認したバージョンは0.C.9。
- Airplane mode Wi-fi Tool
- 電波OFFモード(3G,wifi,bluetooth使用不可)中にwifiを有効にするツール。セルスタンバイ問題があるようなので入れたほうがいい。
NANDロックを回避してSystemをいじる準備
ここでadbで認識されるようになったのでPCで作業。sysremount_atmyownrisk.shが使えるとホント楽ちんだぁ…2行目以降をAndroid上のTerminalでやっても問題なし。
ここまですると、/に@PC $ adb shell //これでandroidに接続、terminal操作できる$ su# cd /sqlite_journals/is01root# ./sysremount_atmyownrisk.sh
system.rwディレクトリができる。ここにsystemディレクトリが読み書き可能な状態でマウントされていて、ここで変更を加えると再起動後に反映される。ちなみに再起動後はis01rooterのstep3と一緒で実行しないとマウントされない、永続的なものではないってこと。Gscript Liteでこのsysremount_atmyownrisk.shを実行するようにすると、再起動が多い作業中は楽ちん。バックアップとリカバリ作成
危なかっしいことをする前にバックアップとリカバリを作成する。過去からの反省です。長いコマンドが多いので
adb shellでの作業推奨、念のためroot権限で作業する。バックアップを作る
コマンドの参考はここ(is01wiki)- bootのイメージ
# dd if=/dev/mtd/mtd0 of=/sdcard/boot.img
- recoveryのイメージ
# dd if=/dev/mtd/mtd2 of=/sdcard/recovery_org.img
- systemの中身
# tar cvzf /sdcard/system.tgz /system
- dataの中身
# tar cvzf /sdcard/data.tgz /data
下の2つは、諸々に変更を加えた後問題ないようなら再度実行してバックアップを取ると復旧が楽になって良い。後の作業をするならば、boot.imgはPCに転送しておくといい。recovery_kitを準備する
これを探すのが大変だった…自分はTwitterのタイムライン検索から見つけたけど、Googleでrecovery_kit_v130と検索するとトップヒットする4shareの中継サイトからrecovery_kit_v130.7zがダウンロードできる。recovery_kit.imgがあるので、これをSDカードにコピーしておく。以下の作業は前項の手順でsystemを読み書き可能でマウントしていることが前提。ここまですると、recovery領域にrecovery_kitが準備されたことになる。//systemやrecoveryがマウントできているか確認//ここでsystem_rwやrecovery_wrがない場合はsystemがマウントできていない# cat /proc/mtddev: size erasesize namemtd0: 00b00000 00020000 "boot"mtd1: 00500000 00020000 "cache"mtd2: 00b00000 00020000 "recovery"mtd3: 00180000 00020000 "splash"mtd4: 00b40000 00020000 "ipl"mtd5: 10000000 00020000 "system"mtd6: 00300000 00020000 "log"mtd7: 06420000 00020000 "userdata"mtd8: 00b00000 00020000 "boot_wr"mtd9: 00b00000 00020000 "recovery_wr"mtd10: 10000000 00020000 "system_rw"//念のためコマンドがあるか確認# which flash_image/system/bin/flash_image//recovery_kit.imgを置いたディレクトリへ行く# cd /sdcard//まず、バックアップをとったmtd2.binを焼く# flash_image recovery_wr mtd2.bin//次にrecovery_kitを焼く# flash_image recovery_wr recovery_kit.img
recovery_kitの起動を確認する
PC側でadb reboot recoveryとするか、Android上のターミナルでreboot recoveryを実行してリカバリー領域から起動。ロゴと一緒にrecovery_kit~みたいな文字が見えたらひたすらhomeと電源ボタンを交互に連打。黒地に青文字のメニューが見えたらトラックボールを動かして、カーソルが動けばOK。Enable QXDM -> Start adbd recoveryの順で実行すればadb接続できるようになる。この状態でadbに認識されていればrecovery_kitのイメージは正常であることが確認できる。確認できたらBoot boot partitionを選んで再起動する。
ここからの工程は途中でやめてはいけない。
recovery領域にboot領域のイメージを書き込まないと延々とrecovery_kitが起動することになる
recovery領域にboot領域のイメージを書き込まないと延々とrecovery_kitが起動することになる
recovery_kitをboot領域に焼く
いつもどうりに起動したらシステムを読み書き可能でマウントしてboot領域にrecovery_kitを焼く。なんでこんなことをするかというと、is01は電源が落ちている状態からリカバリブートできないからだ。リカバリ領域にrecovery_kitを焼いておいたままでは、万一「起動しない!やっちまった!」となってもadbで認識できなければrecovery_kitが使えない。これでいきなりrecovery_kitが起動するようになるので、すかさずhomeと電源ボタン交互連打でメニューに入ってadb接続する。//recovery_kitを置いたディレクトリで# flash_image boot_wr recovery_kit.img# reboot
recovery領域にbootを焼く
adb接続があることを確認。この作業をすることで、電源投入後(boot領域の)recovery_kit -> (recovery領域の)boot -> 通常起動 の順で起動する。recovery_kitは何も操作しないとrecovery領域から再起動するので、何も用がない時はなにもしなければ今まで通り起動する。これで万一通常起動ができなくなってもrecovery_kitが最初に起動するのでこれを使えば直せる、という保険が得られた。systemの書き換えを安心して(?)できる。//PCにboot.imgをコピーしていればそれを再度is01に渡す。していなければ、/system2以下に元の/以下があるので探し出す。SDカードにある時は、usb接続したまま思い切って電池パックを抜いて取り出してもなんとかなる(自己責任)@PC $ adb push boot.img /data/@PC $ adb shell# cd data# flash_image recovery boot.img# reboot
ちなみにこの項目の作業後は絶対に設定>リセットのオールリセットを実行してはいけない。本当に再起不能になるのでお気をつけ。
解像度の変更
続いて解像度変更のためにbuild.propを書き換える。当然だけどsystem.rwがある状態が前提。
持ってきたbuild.propを適当なエディタで開き# exit$ exit //ここでAndroidのterminalから出た@PC $ adb pull /system/build.prop40 KB/s (2144 bytes in 0.051s)
ro.sf.lcd_density=240の箇所をro.sf.lcd_density=180に書き換える。小さいほど解像度が高くなるらしい。書き換えて保存したら、
@PC $ adb push build.prop /system.rw/build.prop
として、転送。書き換えはESファイルエクスプローラーで開いて行っても問題なし。PCで編集してpushした時は念のため/systemでls -lをしてbuild.propが全ユーザーで読み出し可かどうかを確認すること、二の舞いになる可能性あり。問題なければ再起動。目に見えて見やすさが変わる、モバイルPCっぽくなってよい。標準アプリの退避
お次はメモリ確保のために標準アプリを退避する。
以降@PC $ adb shell$ su# cd /system.rw/app# mkdir escapeapk# mv [退避したいファイル] escapeapk
mvコマンドを繰り返して不要なものを移動させる。参考はIS01常駐タスクの削減|GHP。今のところ自分が退避しているのは以下。今のところは支障がないので一安心。# ls /system/app/escapeApkVoiceSearch.apkVoiceRecorder.apkTwitter.odexSoundMemoProvider.apkCompassApp.odexYouTube.odexSendCmailService.odexSoundMemo.odexMaps.odexWebFiltering.odexWebFiltering.apkVoiceSearch.odexVCardViewer.odexTalk.odexBlogUp.apkLauncher.apkMailProvi.odexTalk.apkRss.odexMaps.apkTwitter.apkMajorUpdate.apkFotaApp.apkmixiAppManager.apkMailProviDataProvider.odexMail.apkAuoneidSetting.odexLauncher.odexNetDictionary.odexPVWmdrmService.odexVCardViewer.apkMailProvi.apkNetDictionary.apkSoundMemo.apkCompassApp.apkYouTube.apkFotaApp.odexRss.apkMajorUpdate.odexMailProviDataProvider.apkAuoneidSetting.apkBlogUp.odexSendCmailService.apkVoiceRecorder.odexmixiAppManager.odexPVWmdrmService.apkSoundMemoProvider.odexMail.odex
bashの導入
shでも問題は無いけど、矢印キーが使えない上に履歴も残らないなんてむず痒いので懲りずにbashを導入する。とりあえず置き換えたりせず、安全な方法を使ってみる。
まずはこのページに行き、
if someone is interested, there it is for downloadの下の行のリンクからbash本体を入手。adbでもsdカード経由でもなんでもいいのでis01に渡したあと、bashの置いてあるディレクトリにcdしてから、のようになればok。権限が違っている場合は# chmod 755 bash# cp bash /system.rw/bin/bash//bashの権限の確認(大切)# ls -l /system/bin | grep bash-rwxr-xr-x root root 2569259 2017-05-03 13:09 bash
/system.rw/binに移動して、chmodのコマンドをやり直す。これで再起動後からターミナルでbashと実行すればbashがつかえる。shとbashの入れ替え
入れ替えなくてもいいんだけれどもsuをするたびにshに戻ってしまうのでめんどくさい。前述の手順を踏んでいればbashは絶対実行可能!というわけで前回しくじった入れ替えもやってしまう。例によってsystem.rw前提。これで入れ替えは完了、shをリネームしてbashのリンクをsh名義で貼ってるだけ。成功すれば、ターミナルの頭が# cd /system.rw/bin# mv sh sh.org# ln -s bash sh
sh-3.2$のように変化する。後始末
shとbashを入れ替えるとsysremount_atmyownrisk.shが動かなくなる。この状態でsysremount_atmyownrisk.shを実行すると、systemがアンマウントされたままになってなんのコマンドも効かなくなる。が、再起動すると元通りになる。原因はis01rooterのautoexec.shが正しく動かなくなって、mtd10が作られなくなるため。対処のために書き換える。is01上でやってもいいけどPCで。引っ張り出したら、一行目を以下のように書き換える@PC $ adb pull //autoexec.shを引っ張り出す/sqlite_journals/is01root/autoexec.sh
#!/system/bin/sh //元
#!/system/bin/sh.org //変更後
shをsh.org以外の名前に変更した場合は、その名前に変更すること。adb pushでファイルを返した後、chmodでパーミッションを755に変更。済んだら再起動、rootを有効にしてcat /proc/mtdの出力にmtd8~10があれば成功。ダメなら何かがおかしい。やったこと以上終わり
ファイルを必要なファイルを探し出すのになかなか骨が折れるが、こういう作業は楽しい。今後はブログ下書きなんかで大切に使っていきたい。
0 件のコメント:
コメントを投稿