2013リンクを取得FacebookTwitterPinterestメール他のアプリこの度、死闘の末にSH-03Cが元通りの環境で使えるようになりました。この話をする前に、事の始まりを説明しなければなりません。一言で言うならば「大ミスをしてしまった」ことが原因です。以前の日記で「システムパーティションの書き換えも可能である」ということに気づき、調子に乗って色々弄りまくっていた自分ですが、この度非常に大きなミスをしました。何をしようとしたのかというと/system/binの中にあるsuバイナリを置き換える時に、別の箇所に配置したsuへシンボリックリンクを貼るとどうなるのか?という実験をしてしまったのが運の尽き。ここに「タイプミス」という非常にアレなミスが重なってしまい、何が起きたのかというと・・・。suバイナリへのシンボリックリンクを「sh」に上書きしてしまったのです。気づいた時には時既に遅し、即座にシェルは閉じられ、二度と繋がらなくなりました。いうのも、「/system/bin/sh」はLinuxのシェルコマンドに必須なファイルです。コレがなくてはシェルコマンドは実行できません。shell」をしても何も返ってこず、「端末エミュレータ」は何を入力しても反応しません。その上、shコマンドが使えない場合、SH-03Cの一時Root化に必須の「SHBreakV2」もエラーで使用できないのです。「シェルを使わないなら関係ない」と思うかもしれませんが、そうも行きません。Wi-Fiの接続にはshを使うようで、Wi-Fiをオンにするとフリーズしまくりの再起動しまくりです。やむを得ず電波OFFモードにして、音楽を聴いたり写真を撮ったりすることにしか使えなくなってしまうのです。あまりに不便だったので、どうにか直そうと考えました。これが去年の12月頭の話。以下は自分用のメモとして記録しておこうと思って記載しています。あまりにも長いので、興味のない人は見る必要のない記事になっていると思われます。ここからは本当に試行錯誤の繰り返しでした。手近に試せそうだった方法を取ります。<事前準備>・正しいshファイルを端末のSDカード直下においておく。��shファイルはCyanogenMod6のファイルから入手)・Bootkitが導入されていて、/data/localに「ae2break」「busybox」がある前提。1PCと接続しコマンドプロンプトを実行し、adbからリカバリーへ。recovery2Bootkit導入済みなのでシャッターボタン半押しでカウントを止める。/system/binさて、うまくいくはずがありません。いうのも、NANDLOCKを解除していないからです。SDBoot挑戦者はだれでもやったことのある作業をする必要があります。/data/local/ae2break※途中でエラー出ますが無視さて、この状態で再度4を実行するのですが、やはりエラーになってコピーできません。調べてみると、どうやらこのブートキットはsystemパーティションを直接弄れないようです。・・・駄目じゃん!!!!というわけで、この方法がダメだった次点で諦めていました。他の手段を特に思いつかなかった上、「電波OFFモード」にすれば、何とか使えてはいたので。今日の夕方のことですが、ふと訪れたとあるサイト・・・正確にはP-01DのRoot化Wikiですが。そこに載っていたのは「システムパーティションのTARバックアップ」でした。「ふ~ん」と見ながら思いついたのは、「このTARバックアップしたtgzファイルを編集した上でSDブート時の/systemパーティションに戻せばうまくいくのでは?」ということでした。思いついたら即実行です。上記の1~3までを実行して、NANDLOCKの解除も行います。/systemこれで、SDカード内のsystem_backupフォルダ内に「system.tgz」の圧縮ファイルが出来上がります。一度Windowsで見てみると、7-zipなどで開いてみれば分かりますが、パーミッションや管理者もそのまま保存されています。Windows上でファイルの追加を行うと、このパーミッションの追加等ができないのです。ここで必要なのがLinuxベースのマシンです。他のAndroid端末を所持している場合はそれでも構いませんし、ない場合はUbuntuやAndroid-x86などを利用しても構いません。自分はAndroidOSの方が慣れているという理由+既にインストールされているという理由でAndroid-x86を利用しましたが、基本は一緒のはずです。SDカードをLinuxマシンに差し、マウントします。私はAndroidベースだったので、Nexus7でもお世話になった「StickMount」を使ってマウントしました。SDカードは「/mnt/sdcard/usbStorage/sdb1」にマウントされました。場合によってここは違うので、適宜読み替えて下さい。こちらでも端末エミュレータを起動し、コマンドを入力します。1SDカード内のtgzファイルを、/data/localに展開する。※/mnt/sdcard内に展開すると権限管理が面倒なため/data/localに展開。--exclude='sharp_movies'これで作業は終了です。SDカードをAndroid端末から抜き、再度SH-03Cに装着。リカバリー起動を行なって再度Bootkitへ向かいます。ここから先はSDBootの作業と大差ありません。リカバリーカウントダウンを止め、PCからコマンドを入力します。/data_appここまでの作業は、通常のSDboot化作業と変わりません。異なるのはこの部分です。-)赤文字の部分が、通常とは異なります。コレで、tgzの中身が/systemの中に展開されるのですが、経過を見れば分かりますが、元々/data/localの中で作成したものなので、/systemの中に/data/localが新たに作られ、その中に本来の/systemが展開されてしまいました。コレでは起動できないので、移動する必要があります。/system/dataこの後は通常のSDBoot化作業と同じく、data領域のコピーを行なっていきます。recovery以上で作業は終了です。端末のメニューボタンを押すとSDBootが実行されます。shell」をすると「$」が返ってきました!端末エミュレータを開いてみると、先頭に「$」が表示されています。この状態ではまだSDBoot領域が修復されたにすぎません。ここから、NAND領域内の/systemパーティションを修復する必要があります。1SHBreakV2を実行し、NANDUNLOCKをし、ISTweakでSUコマンドを有効にしておく。su3ae2breakを使ったNANDロック解除も行う。rebootこれで、全作業が終了になります。この作業によって、SH-03Cは元通り、シェルコマンドがきちんと使える端末に戻りました。Wi-Fiにすら繋げない電波OFF専用機からも解放され、約1ヶ月ぶりに同期をしております。アプリのアップデートもたんまりと・・・。目的がこれだけの人は、SDBootを削除した上で、リカバリーパーティションをデフォルトのものに復元しても構いません。今回は自分用のメモ代わりに長々と書いたので、最後まで読む方はあまりいないかと思っています。この記事が誰かの何かのお役に立てば幸いです。SH03Cリンクを取得FacebookTwitterPinterestメール他のアプリコメントコメントを投稿TwitterでフォローTwitterをやっています。フォローして頂けると喜びます。絡むときはお気軽にどうぞ。2014年の9月に録画サーバーの構築を行い(http://advancedbear.blogspot.jp/2014/09/PX-W3PE-setup.html)、2016年の2月に組み換えを行った(http://advancedbear.blogspot.jp/2016/02/rebuild-tvrecord-pc.html)録画サーバーですが、この3月に函館から東京へと引越しを行った際にセットアップのし直しを行いました。Homeへとアップグレードしたのですが、様々なソフトウェアの残滓が影響してか不安定な状況が続いていたためOSの再インストールをしなければなと考えていたタイミングでした。そのタイミングで、引越しに伴う停止期間が発生したのでついでとばかりに録画サーバーのリビルドを行うことにしました。App」をリリースしました。Talker」アプリの後継ソフトウェアとなり、機能拡充版となります。Bloggeradvancedbear。