busybox が必要なので、SuperOneClick に付属している busybox をあらかじめ C:\SC02BOMJJ1 にコピーしておく。また、root 権限が必要なので、SuperOneClick で Shell Root になっておく。
C:\SC02BOMJJ1> adb push busybox /data/local/tmp/
C:\SC02BOMJJ1> adb shell
# chmod 755 /data/local/tmp/busybox
# /data/local/tmp/busybox fdisk /dev/block/mmcblk0
C:\SC02BOMJJ1> adb shell
# chmod 755 /data/local/tmp/busybox
# /data/local/tmp/busybox fdisk /dev/block/mmcblk0
ここからは、普通の fdisk の操作と同じ。必要そうなコマンドのみ列挙してみた。
コマンド | 内容 |
---|---|
d | パーティションの削除 |
l | パーティションタイプの列挙 |
n | パーティションの作成 |
m | 使用可能なコマンドの一覧を表示 |
p | パーティションテーブルの内容を表示 |
q | 変更を保存せずに終了 |
t | パーティションタイプを変更する |
w | パーティションテーブルの内容をディスクに書き込んで終了 |
コマンドで p を入力すると、現在のパーティションテーブルの内容を表示できる。パーティションを切り直す場合は、この状態になるようにパーティションを作成することになる。
Command (m for help): p Disk /dev/block/mmcblk0: 15.9 GB, 15925772288 bytes 1 heads, 16 sectors/track, 1944064 cylinders Units = cylinders of 16 * 512 = 8192 bytes Device Boot Start End Blocks Id System /dev/block/mmcblk0p1 5 1672704 13381600 83 Linux /dev/block/mmcblk0p2 1672705 1918464 1966080 83 Linux /dev/block/mmcblk0p3 1918465 1944064 204800 83 Linux
所持している SC-02B だと、以下のように does not end on cylinder boundary と警告が出ていた。この警告が出ていても大きな問題はないが、ディスクアクセスのパフォーマンスが若干落ちる可能性がある。
Disk /dev/block/mmcblk0: 15.9 GB, 15925772288 bytes 1 heads, 16 sectors/track, 1944064 cylinders Units = cylinders of 16 * 512 = 8192 bytes Device Boot Start End Blocks Id System /dev/block/mmcblk0p1 5 1672704 13381600 83 Linux Partition 1 does not end on cylinder boundary /dev/block/mmcblk0p2 1672705 1918464 1966080 83 Linux Partition 2 does not end on cylinder boundary /dev/block/mmcblk0p3 1918465 1944064 204800 83 Linux Partition 3 does not end on cylinder boundary
上記の警告を出なくするには、パーティションを一度全部削除して作り直す必要がある。
コマンド d でパーティションを順に削除していく。削除候補のパーティションが複数ある場合は、数字でパーティションを指定する。
Command (m for help): d Partition number (1-4): 3 Command (m for help): p Disk /dev/block/mmcblk0: 15.9 GB, 15925772288 bytes 1 heads, 16 sectors/track, 1944064 cylinders Units = cylinders of 16 * 512 = 8192 bytes Device Boot Start End Blocks Id System /dev/block/mmcblk0p1 5 1672704 13381600 83 Linux Partition 1 does not end on cylinder boundary /dev/block/mmcblk0p2 1672705 1918464 1966080 83 Linux Partition 2 does not end on cylinder boundary Command (m for help): d Partition number (1-4): 2 Command (m for help): p Disk /dev/block/mmcblk0: 15.9 GB, 15925772288 bytes 1 heads, 16 sectors/track, 1944064 cylinders Units = cylinders of 16 * 512 = 8192 bytes Device Boot Start End Blocks Id System /dev/block/mmcblk0p1 5 1672704 13381600 83 Linux Partition 1 does not end on cylinder boundary Command (m for help): d Selected partition 1 Command (m for help): p Disk /dev/block/mmcblk0: 15.9 GB, 15925772288 bytes 1 heads, 16 sectors/track, 1944064 cylinders Units = cylinders of 16 * 512 = 8192 bytes Device Boot Start End Blocks Id System
これでまっさらな状態になったので、次は新しくパーティションを作成する。
コマンド n でパーティションを作成する。なお、primary partition を作成する。順に、パーティション番号、パーティションの開始位置、パーティションの終了位置を指定する。これを全パーティション分繰り返す。
Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (2-1944064, default 2): 5 Last cylinder or +size or +sizeM or +sizeK (5-1944064, default 1944064): 1672704 Command (m for help): p Disk /dev/block/mmcblk0: 15.9 GB, 15925772288 bytes 1 heads, 16 sectors/track, 1944064 cylinders Units = cylinders of 16 * 512 = 8192 bytes Device Boot Start End Blocks Id System /dev/block/mmcblk0p1 5 1672704 13381600 83 Linux Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (2-1944064, default 2): 1672705 Last cylinder or +size or +sizeM or +sizeK (1672705-1944064, default 1944064): 1918464 Command (m for help): p Disk /dev/block/mmcblk0: 15.9 GB, 15925772288 bytes 1 heads, 16 sectors/track, 1944064 cylinders Units = cylinders of 16 * 512 = 8192 bytes Device Boot Start End Blocks Id System /dev/block/mmcblk0p1 5 1672704 13381600 83 Linux /dev/block/mmcblk0p2 1672705 1918464 1966080 83 Linux Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (2-1944064, default 2): 1918465 Last cylinder or +size or +sizeM or +sizeK (1918465-1944064, default 1944064): 1944064 Command (m for help): p Disk /dev/block/mmcblk0: 15.9 GB, 15925772288 bytes 1 heads, 16 sectors/track, 1944064 cylinders Units = cylinders of 16 * 512 = 8192 bytes Device Boot Start End Blocks Id System /dev/block/mmcblk0p1 5 1672704 13381600 83 Linux /dev/block/mmcblk0p2 1672705 1918464 1966080 83 Linux /dev/block/mmcblk0p3 1918465 1944064 204800 83 Linux
内容に間違いがないか確認する。間違っていた場合は、パーティションを削除してから再度作成し直す。最後にコマンドで w を入力してディスクに書き込む。ディスクに書き込まない限り、変更は保存されないので注意。
Command (m for help): w
# exit
# exit
逆に変更内容を破棄する場合は、コマンドで q を入力する。
Command (m for help): q
# exit
# exit
パーティションテーブルの内容をディスクに書き込んだ場合、変更されたパーティションに書き込まれていたデータは破棄される。/dev/block/mmcblk0p1 は /sdcard 内のデータ、/dev/block/mmcblk0p2 は /data、/dev/block/mmcblk0p3 は DioDict の辞書なので、内蔵SDの全データとアプリのデータ、DioDict の辞書は破棄される。また、パーティションを変更すると未フォーマットの状態になるので、リカバリモードで起動して wipe data/factory reset しておく。DioDict も使用するのであれば、リカバリ方法 を参考にリカバリを行う必要がある。
こんばんは。こちらの記事を参考にさせて頂いて
返信削除パーティションを変更させて頂きました。
最後の、wipe data/factory reset をやり忘れて
リカバリしてしまった所、
E:Can't mount /dev.block/mmcblk0p2
(Invalid argument)
E:install_application_for_customer:Can't mount
DATA
E:copy_data_default_apk:Can't mount DBDATA:
とリカバリ画面に表示され、
起動しても画面が真っ暗になってしまいました。
factory resetを行いましたが、回復せずです。
アドバイスがあれば頂きたいと思いまして
コメントさせて頂きました。
(コメントを誤って削除してしまったので、同じ内容で再投稿させていただいた関係で日時が変わっていますm(==)m)
削除マウントに失敗しているということなので、パーティションを切るのに失敗しているのではないでしょうか。リカバリモードで接続すればadbによる操作はできると思うので、そこからパーティションを切り直す必要がありそうです。
こちのページを参考にパーティションを切り直したいのですが、通常起動しないため、recovery modeで起動してadbでパーティションを切ろうと思っています。リカバリーモードでadb shellまでは出きます。ただ、ルート権限がないのでsuが出来ません。$→#に切り替えができずに困っています。(純正ROMを焼いてしまってこの現象になりました。)
返信削除superone clickは使えませんので、adb shellだけでどうやってrootが取れるでしょうか?それができると上記の方法でパーティションの切り直しができそうです。
SuperOneClickのフォルダ内にあるpsneuter等の脆弱性を突くツールを、
削除adbのコマンドを使って実機に送り込み、実機上で実行してみれば
いいのではないでしょうか?
SuperOneClick自体、内部ではpsneuter等のツールを使って一時rootを
取得しているわけなので。
ご回答ありがとうございます。そういう方法があるんですね。突破口が少し見えてきました。私の知識が限られており、時間がかかるかもしれませんが、上記の方法を挑戦してみようと思います。本当にありがとうございました。
返信削除psneuter等のファイルを送り込んで、実機上で実行してみたら無事に一時ルートが取れ「#」になりました。その語、上記の方法でパーティションの切り直しができました。本当に感謝です。ありがとうございました。
返信削除僕もtiknpさんと同じような状況です。コメントを参考にpsneuter等のファイルを送り込んで、一時rootをとることが出来ました。
返信削除しかし、# /data/local/tmp/busybox fdisk /dev/block/mmcblk0と打つと、fdisk: can't open '/dev/block/mmcblk0'と出てしまい、進めません。何が原因なのでしょうか。
お答えいただけたら幸いです。
/data は /dev/block/mmcblk0 ブロックのパーティション /dev/block/mmcblk0p2
削除にあるので、そのパーティションにある fdisk は実行できるのに、その親にあたる
ブロックが開けないはずはありません。
返信ありがとうございます。なぜできないのか不思議です。
返信削除コマンドプロンプトの画面はこのような感じになっています。なにか問題点はありますでしょうか?http://gyazo.com/6e435a8e548e6b652760be629a83ac7f
あと、リカバリーモードで起動した際、赤文字で、
E:Can't mount /dev/block/mmcblk0p1
(No such file or directry)
E:copy_dbdata_media:Can't mount SDCARD:
と書かれているのですが、これは関係ありますでしょうか?
参考までに画像を貼っておきます。
http://gyazo.com/28cd530a39d4fe443250cc27c954a9d9
リカバリモード起動時に Movinand Checksum Confirmation Fail と出ているのが気になります。
削除私も見たことはないので分かりかねますが、Movinand はフラッシュメモリを指しているので、内蔵SDに問題があるかもしれません。
返信ありがとうございます。
削除なるほどです。内蔵SDが壊れていたらそりゃ直りませんよね。
ありがとうございました。
E:Can't mount /dev.block/mmcblk0p3
返信削除no such file or directory
E:install_application_for_customer:Can't mount
HIDDENSDCARD となりreboot nowで止まります エンターすれば普通に起動しますが、エラーでなく、普通に起動できないでしょうか。
初心者です、cynogenmod10.2からjj1に戻すとこうなりました。
E:copy_data_default_apk:Can't mount DBDATA:
どうか、よろしくお願いいたします。
/dev/block/mmcblk0p3が存在しないからマウントできないといわれているので、
削除パーティションがあるかどうか確認して下さい。
なければパーティションを切り直すしかないと思います。
手順は上記エントリに書いてあります。
お返事、ありがとうございます。
削除わたしには、とてもコマンドプロンプトでは、無理なのでgoogle playのパーテーションツールで見たら 0,1はあるのですが、問題の3がなかったです。
windowsのfdiskなら、わかりますが、andoroid は、私には困難過ぎます。
最新のcwmですべてのパーテーションをスワイプして 初期化をしましたが、やはり3がないと 言われます、残念です。
AndroidのfdiskもLinuxと同じですし、Windowsともそんなに違いはない気はしますがさておき。
削除Odin3でJJ1用のPITファイルを用意してRe-Partitionにチェックが付いている状態で焼き直せば、PITファイルの内容に従ってパーティションを切り直してくれると思うので、それでもいいような気はします。
お返事ありがとうございます。
削除それは、何回もしましたが、同じコメントが出てきて、一端、止まります。
このまま使っていて、差し支えないということも、聞いたのですが、普通に再起動して、戻したいのです。
cyanogen入れるときに、海外のromだと、そのまま、入らないので、加工済みを、入れたときにパーテーション書き換えられたと思います。
re-partionで領域開放で入って、エラー消えると思ったのですが、だめでした。
リナックス用の領域の切れるCDでbootして、PCにUSBでつないで、開放しましたが、おそらくandoroidの部分はできていなかった思います。
pitファイルで完全に領域開放するものはあるのでしょうか。
なにとぞ、ご助言お願いいたします。
JJ1用のPITを使えば普通はうまくいくと思いますが、MicroSDやSIMを抜くとうまくいく、みたいな報告は以前上がっていたような気がします。
削除SC-02Bのパーティションを操作するだけなら、adbとbusybox(SuperOneClick等に同梱されている)を使って上記手順に従って操作するだけなので、大して難しいものではありません。
パーティション情報がCyanogenMod用になっているため、パーティションの削除のところで、指定するパーティション番号が変わるくらいだと思います。
shela様、ありがとうござます、感謝です。
削除結果から、言いますと、エラーなく、帰ってきました。
ここへいくまでの、道のりの大変なこと、初心者には辛いでが、嫌いではないので、できました。
busyboxのコピー shell root #マークが出ない、rootがうまく行ってない、一難さればまた一難、領域の開放まで、行き、jj1 pit入れましたら、今度は1がないといわれて、起動して最初のロゴのところで画面が消えてしまいます、最後はshela様と同じようにパーテーション切りました、その時点でエラーはなくなり、jj1入れなおして、初期化しても、エラー出ません。
ありがとうございます。
パーティションの切り直しを調べていまして、こちらにたどり着きました。
返信削除全くの素人でお恥ずかしいのですが、最初のC:\SC02BOMJJ1というのは、Cドライブ直下に任意で名前を付け作成したフォルダということでよろしいですか?
あと、そのフォルダにbusyboxをコピーするとはどのように行えばよろしいでしょうか。
初歩的な質問ですがお願い致します。
C:\SC02BOMJJ1というのは、Cドライブ直下に任意で名前を付け作成したフォルダ、という意味ですが、Windowsのフォルダ・ファイル操作も覚束ない状態でLinuxのパーティション操作を行えるとは到底思えません。
削除Linuxには精通していてWindowsはよく知らないと言うことならわかりますが、前提知識が足りなさすぎて壊すのがオチなのでやめた方がいいです。