Xperia SX SO-05D、マジで文鎮5ループ前
去年の12月からxpreia sx SO-05Dを使っていて、初期状態ではandroid 4.0だったものが、この7月に4.1 jelly beansへのアップデートが公開されていた。
しかし私はiijmioで運用しているので、root化、テザリング制限解除、cwm recovery導入、mod化、セルスタンバイ対策などなどと手を入れて使っており、しばらくはアップデート後にこれと同じ状態にする手法が確立されていないからそのままにしてあったのだが、最近rootを取るセキュリティーホールが発見されたので、意を決してアップデートした。
アップデートとroot化までは上手くいったものの、テザリング制限を解除した後にadb接続からの再起動でadb接続が出来なくなり、電源を切った後に起動すると再起動ループになってしまった。
メインで使っている端末でオサイフやらなんやらが入っているのでめっちゃ焦ったのだが、最終的にはFlashtoolでファームウェアを焼きなおしてムリヤリ復活させた。
結局、原因はテザリングの設定が入っている/data/data/com.android.providers.settings/databases/settings.dbのジャーナルファイルのパーミッションの不備であった様だ。
デフォルトは
-rw-rw—- system system 57344 2013-09-02 09:22 settings.db
-rw——- system system 21032 2013-09-02 09:22 settings.db-journal
と、settings.dbが660、settings.db-journalが600だが、settings.db更新後に、settings.dbとsettings.db-journalをまとめて666にしたのがまずかったらしい。
正解はsettings.dbのパーミッションのみ666で、勢いあまってsettings.db-journalまで666にすると「マジで文鎮5ループ前」になる。良い子のroot簒奪者は注意だぞ!
ちなみにsettings.dbのパーミッションは再起動後にandroidの中の人によって660に戻されるので安心だ!
とりあえず、スモールアプリはデフォルトで入っているのでmod化せず、root化、テザリング制限解除、cwm recovery導入、セルスタンバイ対策と問題なく動作している。
———-
一応問題になったテザリング制限解除の方法を書いておく。
sqlite3コマンドはTitaniumuBackupをインストールすれば、/data/data/com.keramidas.TitaniumBackup/files/sqlite3 /system/bin/sqlite3に入るので、これを/system/binあたりにコピーして
mount -o rw,remount /system と言う感じで/systemをrwでリマウント後に
sqlite3 /data/data/com.android.providers.settings/databases/settings.db などと開き、
sqlite> select * from secure where name=”tether_dun_required”;
49|tether_dun_required|1
sqlite> update secure set value=0 where name=”tether_dun_required”;
sqlite> select * from secure where name=”tether_dun_required”;
49|tether_dun_required|0
sqlite> select * from secure where name=”tether_dun_apn”;
50|tether_dun_apn|docomo tethering,dcmtrg.ne.jp,,,,,,,,,440,10,0,*
sqlite>update secure set value=”iijmio tethering,iijmio,jp,,,mio@iij,iij,,,,,440,10,3,default,supl” where name=”tether_dun_apn”
sqlite> select * from secure where name=”tether_dun_apn”;
50|tether_dun_apn|iijmio tethering,iijmio,jp,,,mio@iij,iij,,,,,440,10,3,default,supl
tether_dun_apnの変更はtether_dun_requiredが0になってれば必要ないけど一応しておく。
某サイトを参考にtether_dun_apnの行を削除してtether_dun_requiredを0にしたところデータ通信が無効ですとなりつながらなくなってしまって困ったのですが、こちらを参考にtether_dun_apnの行を入れなおしたところ無事につながりテザリングもできるようになりました!本当にありがとうございます。