
Ubuntu日本語フォーラム

ログインしていません。
こんばんは。
partition table.Error loading operating system.Missing operating system
第一パーティション FAT 32、LBA プライマリあり ブートフラグあり
第2パーティション Linux(ext2)
motiiさんMBRの情報、有難うございました。
普通にGpartedと同じ結果(サイズの算出はまだしていないですが)ですが、エラーが出ています。
もしMBRが違う情報を示している箇所がと思いましたが同じようです。
ほんとに再確認に終わってしまいましたね。
これでCドライブのチェックも行えれば悩む事は無いんですが現状では
パーティションテーブルを修復してディスクを正常に読めるようにする。
1、Windowsが起動可能になる
2、システムが上書きされて起動しないがライブCDからデータをバックアップごリカバリー
と言う事だと思うのですが。
それとTestdiskの使用方法せすね。
できる限り大容量のメディアか、別PCに接続出来る環境(外付けのケースやセカンダリとして繋ぐケーブル等)があれば事前にバックアップ出きるのですが。
後はディスクのデータの救出ですが何かツールと方法を模索してみます。
その間に他の方の情報や指示が有りましたら気兼ねなく自由に行って下さい。
オフライン
kiyoshiさま
hirOさま
お返事ありがとうございます!
はい、わかりました!
よろしくお願いしますm(. .)m
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-03-18 09:12:10)
オフライン
皆様、こんにちは。
解決策とあまり関係のない話ですみません。
kiyoshiさん による投稿:
オフトピ:ちなみにmotiiさんのはXPですが、VISTAには詳しく無いのですが、VISTAではパーティションを認識するための機構があって、それがうまく認証されないと起動しないとか、どこかで見たような気がします。本当にMicrosoftは、違法コピーを防ぐためかもしれないですが、不要な余計なことを・・・。
http://www.multibooters.co.uk/mbr.html
のことでしょうか。
MBRには Disk Signatureというdrive ID numberをもっているようです。
XP以前のWinNTは、Disk Signatureを利用せず、ドライブの場所をBIOSでチェックしていたが、
Vistaでは起動時に Disk Signatureを参照するようです。
(英語力がないので、読み間違えてるかも知れません。)
EFIに対応するために、起動がBIOSに依存しないようにしたのではないでしょうか。
オフライン
解決策には詳しく無いので情報収集の手段のみ投稿します.
此方では Windows と dualboot にしているのは Fedora です.まず此方での testdisk の結果から
Disk /dev/sda - 40 GB / 37 GiB - CHS 4864 255 63
Current partition structure:
Partition Start End Size in sectors
1 * HPFS - NTFS 0 1 1 2610 254 63 41945652 [S3A2249D001]
Bad sector count.
2 P hid. FAT32 LBA 4462 0 1 4863 254 63 6458130 [HDDRECOVERY]
... 以下略 ...第2パーティションの 開始 C/H/S を LBA に変換すると
/* 計算式は http://www2.odn.ne.jp/~hab81760/myfs_fd.htm を使用 */
C/H/S=4462/0/1 => LBA=71682030
この位置の 512 バイトが PBR のはずなのでダンプしてみました.Fedora では hd の代わりに hexdump -C を使います.
# dd if=/dev/sda bs=512 count=1 skip=71682030 2>/dev/null | hexdump -C 00000000 eb 58 90 4d 53 57 49 4e 34 2e 31 00 02 08 20 00 |.X.MSWIN4.1... .| 00000010 02 00 00 00 00 f8 00 00 3f 00 ff 00 ee c7 45 04 |........?.....E.| 00000020 12 8b 62 00 98 18 00 00 00 00 00 00 36 00 00 00 |..b.........6...| 00000030 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000040 80 00 29 00 19 13 3b 48 44 44 52 45 43 4f 56 45 |..)...;HDDRECOVE| 00000050 52 59 46 41 54 33 32 20 20 20 fa 33 c9 8e d1 bc |RYFAT32 .3....| ... 途中略 ... 00000180 01 27 0d 0a 49 6e 76 61 6c 69 64 20 73 79 73 74 |.'..Invalid syst| 00000190 65 6d 20 64 69 73 6b ff 0d 0a 44 69 73 6b 20 49 |em disk...Disk I| 000001a0 2f 4f 20 65 72 72 6f 72 ff 0d 0a 52 65 70 6c 61 |/O error...Repla| 000001b0 63 65 20 74 68 65 20 64 69 73 6b 2c 20 61 6e 64 |ce the disk, and| 000001c0 20 74 68 65 6e 20 70 72 65 73 73 20 61 6e 79 20 | then press any | 000001d0 6b 65 79 0d 0a 00 00 00 49 4f 20 20 20 20 20 20 |key.....IO | 000001e0 53 59 53 4d 53 44 4f 53 20 20 20 53 59 53 7e 01 |SYSMSDOS SYS~.| 000001f0 00 57 49 4e 42 4f 4f 54 20 53 59 53 00 00 55 aa |.WINBOOT SYS..U.| 00000200
計算は正しいみたい.
そこで motii さんの場合のパーティション開始 LBA を
Disk /dev/sda - 80 GB / 74 GiB - CHS 9729 255 63
Partition Start End Size in sectors
* HPFS - NTFS 0 1 1 7842 254 63 125997732 [S3A2416D002]
D FAT32 LBA 7843 1 1 9148 254 63 20980827 [DATA]
D FAT32 LBA 9148 120 1 9729 254 63 9342270 [HDDRECOVERY]から計算すると
C/H/S=0/1/1 => LBA=63 /* これは当然 */
C/H/S=7843/1/1 => LBA=125997858
C/H/S=9148/120/1 => LBA=146970180
になります.
計算があっていれば気になる HDDRECOVERY の PBR は
$ sudo dd if=/dev/sda bs=512 count=1 skip=146970180 2>/dev/null | hd
で眺めることが出来るはずです.
追加:
DATA パーティションの終了位置の次あたりは
C/H/S=9149/0/1 => LBA=146978685
C/H/S=9149/1/1 => LBA=146978748
さらに追加:
DATA パーティションが論理パーティションだとすれば(多分間違いない),その前の
C/H/S=7843/0/1 => LBA=125997795
には拡張パーティションのパーティションテーブルがあるはず.
余談:
motii さんの MBR の内容から第1パーティションの 開始 LBA を読み取ると LBA=1 !!!
つまり MBR のすぐ後ろになっています.
ここは通常使わない領域で,GRUB の stage1.5 がインストールされたりします.
MBR の bootcode 部分は見た目壊れていないみたいなので,MBR が LBA=1 の 512 バイトを PBR として処理を移し,
j が画面に出て... と推測します.
参考:CHS => LBA の変換には間に合わせの Perl スクリプト chs2lba.pl を作成し計算しました.
Usage: ./chs2lba.pl [-tH=総ヘッド数] [-SpT=トラック当たりセクタ数] C H S
#! /usr/bin/perl -s
use strict;
use warnings;
our $tH ||= 255;
our $SpT ||= 63;
sub chs2lba {
my ($c, $h, $s) = @_;
return ($h + $c * $tH) * $SpT + ($s - 1);
}
printf "%d\n", chs2lba(@ARGV);最後の編集者: einundzwanzighundertsechs (2009-03-18 16:24:02)
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-03-18 13:24:03)
オフライン
情報が集まり出して混乱するといけないので整理すると、
#53 の発言はエラー表示に対しての意見とサポートに相談するかTestDiskでパーティション情報を修復すると言うことですね。
#54 はHDDRECOVERYのパーティションIDの確認方法と以前このトピックに数度出ている疑問にヒントを出しています。
motiiさんが意味を理解し易いための補助として書いています。einundzwanzighundertsechsさまと kiyoshiさまに意見をいているのではないので気分を害されたのでしたら削除します。また、私の解釈が間違っていましたらご指摘下さい。
ここからは私の意見ですがfixmbrはパーティションテーブルとは関係無い位置を修復するので万が一の誤動作を防ぐためにも修復が完了するまで行わない方が良いかも。
たしかにご指摘の通り 01 00 00 00 です。Windows起動よりリカバリー前のデータ回収に頭を切り替えた方がいいと言う事を示唆しているということでしょうか。
すこし私が混乱してきたかも。USBにインストールしようとしたデータがパーティションを切ってコピーされるのか、そのデータサイズのみ移すのか。どこでエラーが出て中断されたのか。
しかし、実際にHDDのパーティションに変更を摘要する前にエラーで停止したのか。
あっそうか、推測よりも実行と自分で書きこんだのだった。
憶測を確信に変える情報があれば気分も変わってくるのですが。
einundzwanzighundertsechsさまのご指摘のあったHDDRECOVERY の PBR は書き込みが無ければまた夜にでも投稿します。
最後の編集者: hir0 (2009-03-18 14:01:48)
オフライン
kiyoshiさん による投稿:
MBRのパーティションテーブルのうちの間違っている部分に正しい情報をddで直接書き込んで修復できないでしょうか。
それはやっぱり怖いので,私が同じ目にあったとしたら,内臓ディスクにはまず手をつけず,
1. 各パーティション(の残骸?)の開始LBA値を特定し,パーティションサイズを算出,
2. 新品のUSB 接続のハードディスクをそれに合わせてパーティションを切り,
3. Linux CD で起動して dd で各パーテション(の残骸?)を新ディスクの対応パーティションにコピー
4. コピーしたパーティションをマウントできるか確かめ(できれば中身が無事なのを確かめ)
てから,内臓ディスクをいじります.
motii さんへ,
根拠を理解してもらおうとするとどうも文章がまわりくどくなるので
取り合えず私の投稿は(#55 も)読みとばして下さい.
最後の編集者: einundzwanzighundertsechs (2009-03-18 16:11:37)
オフライン
急いでいたので忘れていました。
motiiさん、#55の einundzwanzighundertsechsさんのコードで
$ sudo dd if=/dev/sda bs=512 count=1 skip=146970180 2>/dev/null | hd
を貼り付けて見てください。
そこからHDDRECOVERY の PBRのIDをみてみます。
オフライン
motiiさん、およびフォーラムの皆さんこんにちは。
なんだか、私の頭ではついていけないような話しになってきているので、参考程度にしておいてください。
まづ、AX740LSの仕様説明によると
リカバリー領域として約 4.3GB
Dドライブ( FAT32 ) 約 10GB
Cドライブ( NTFS ) 残りの領域すべて
ということらしいです。
http://dynabook.com/pc/catalog/dynabook/051219ax/spec.htm
あと、フォーラムの皆様は知っておられると思いますが、
NTFSの場合、ブートセクタのバックアップがパーティションの一番後ろに
作られているので、
kiyoshiさんの 『Test Disk 』の解説のリンク先で
「Test Diskを使ってブートセクタ(ディスクパラメータ)を回復」の部分で
「Advanced」→Cドライブのパーティションを選択→「boot」→「dump」
で、オリジナルのブートセクタとバックアップブートセクタの比較ができるようです。
ただし、バックアップブートセクタが常に正しいわけではなさそうですが、
オリジナルのブートセクタとバックアップセクタ、およびXPをクリーンインストールした
ブートセクタの内容を比較すると何かヒントが見つかるかもしれませんね。
hirOさん、#51で解説されている
>>第一パーティション FAT 32、LBA プライマリあり ブートフラグあり
第2パーティション Linux(ext2)
この部分はどこの内容を読み取ればわかるのでしょうか?
お手の空いたときで結構なので少し解説していただけると幸いです。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-03-18 18:42:24)
オフライン
kiyoshiさん、ありがとうございます。
リンク先これからじっくり読んでいきます。
あっ、あとコマンドのほうも実際に試してみます。
motiiさんには悪いですけど、私もこの場をお借りして勉強させていただきます。
オフライン
あまり投稿が重なると motii さんが迷うかも知れないので出来れば回答を控えたいのですが...
kiyoshiさん による投稿:
ただ、各パーティションではなく、内蔵HDDまるごとddでコピーするでしょうけど。
それではパーティションテーブルの壊れたマウントできない HDD がもう一つできてしまいます.
確かに完全コピーでバックアップの意味はありますが,私は早期のデータの救出を最優先に考えています.
まずHDDに正しいパーティションの「枠」を作っておいてそこに「残骸」を嵌め込むのです.
うまくいけば他の Windows に繋いでも中身を確認出来ます.
-- 「残骸」に「枠」を合わせる作業の方が困難,計算を間違えると「枠」が「残骸」を切り裂いてしまう --
追伸:あくまで「私が同じ目にあったら」の話です.
幸いにもそのような経験は無く,testdisk は -- 実績はあるでしょうが -- 最近になって知ったぐらいで動作の詳細に確信は無い.
それなら自分の使い慣れた tool を組み合わせてどこまで出来るかを考えます.
最後の編集者: einundzwanzighundertsechs (2009-03-18 20:15:03)
オフライン
rewindさん今晩は。
私も勉強中と言うよりあれこれ興味をもってしまう質なので正式に勉強したわけではありませんが、まずHDDの先頭に1セクタ=512bytesのMBRと言われる領域があります。
この辺りは
http://caspar.hazymoon.jp/OpenBSD/arch/ … cture.html
こちらをご覧になれば分かるかと。
と有りましたが、それと合わせて読んで頂けると理解の手助けになると思います。
まず512bytesの最初の領域にリンク先で言うブートストラップローダに通常WindousやLinuxのブートローダーが格納されます。その領域の後半部分は何もない事の方が多いので 00 で埋め尽くされています。
次にパーティションテーブルの領域が来るわけですが、16bytesで1パーティションの領域を表しています。
パーティションは4つまで作れるので、最高16bytes x 4
ブートフラグは 80 で表されます。
16bytesの内訳は
ブートフラグ(1bytes)
開始位置,CHS(3bytes)
パーティションID(1bytes)
終了位置,CHS(3bytes)
開始位置,LBA(4bytes)
セクター数,LBA(4bytes)
以上を踏まえてみると
00000000 33 c0 8e d0 bc 00 7c fb 50 07 50 1f fc be 1b 7c |3.....|.P.P....|| 00000010 bf 1b 06 50 57 b9 e5 01 f3 a4 cb bd be 07 b1 04 |...PW...........| 00000020 38 6e 00 7c 09 75 13 83 c5 10 e2 f4 cd 18 8b f5 |8n.|.u..........| 00000030 83 c6 10 49 74 19 38 2c 74 f6 a0 b5 07 b4 07 8b |...It.8,t.......| 00000040 f0 ac 3c 00 74 fc bb 07 00 b4 0e cd 10 eb f2 88 |..<.t...........| 00000050 4e 10 e8 46 00 73 2a fe 46 10 80 7e 04 0b 74 0b |N..F.s*.F..~..t.| 00000060 80 7e 04 0c 74 05 a0 b6 07 75 d2 80 46 02 06 83 |.~..t....u..F...| 00000070 46 08 06 83 56 0a 00 e8 21 00 73 05 a0 b6 07 eb |F...V...!.s.....| 00000080 bc 81 3e fe 7d 55 aa 74 0b 80 7e 10 00 74 c8 a0 |..>.}U.t..~..t..| 00000090 b7 07 eb a9 8b fc 1e 57 8b f5 cb bf 05 00 8a 56 |.......W.......V| 000000a0 00 b4 08 cd 13 72 23 8a c1 24 3f 98 8a de 8a fc |.....r#..$?.....| 000000b0 43 f7 e3 8b d1 86 d6 b1 06 d2 ee 42 f7 e2 39 56 |C..........B..9V| 000000c0 0a 77 23 72 05 39 46 08 73 1c b8 01 02 bb 00 7c |.w#r.9F.s......|| 000000d0 8b 4e 02 8b 56 00 cd 13 73 51 4f 74 4e 32 e4 8a |.N..V...sQOtN2..| 000000e0 56 00 cd 13 eb e4 8a 56 00 60 bb aa 55 b4 41 cd |V......V.`..U.A.| 000000f0 13 72 36 81 fb 55 aa 75 30 f6 c1 01 74 2b 61 60 |.r6..U.u0...t+a`| 00000100 6a 00 6a 00 ff 76 0a ff 76 08 6a 00 68 00 7c 6a |j.j..v..v.j.h.|j| 00000110 01 6a 10 b4 42 8b f4 cd 13 61 61 73 0e 4f 74 0b |.j..B....aas.Ot.| 00000120 32 e4 8a 56 00 cd 13 eb d6 61 f9 c3 49 6e 76 61 |2..V.....a..Inva| 00000130 6c 69 64 20 70 61 72 74 69 74 69 6f 6e 20 74 61 |lid partition ta| 00000140 62 6c 65 00 45 72 72 6f 72 20 6c 6f 61 64 69 6e |ble.Error loadin| 00000150 67 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74 |g operating syst| 00000160 65 6d 00 4d 69 73 73 69 6e 67 20 6f 70 65 72 61 |em.Missing opera| 00000170 74 69 6e 67 20 73 79 73 74 65 6d 00 00 00 00 00 |ting system.....| 00000180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001b0 00 00 00 00 00 00 00 00 f4 02 f5 02 00 00 80 00 |................| 000001c0 02 00 0c fe 3f 55 01 00 00 00 d5 14 15 00 00 00 |....?U..........| 000001d0 01 56 83 fe ff ff d6 14 15 00 eb cf 3b 09 00 00 |.V..........;...| 000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
のこの部分
000001b0 00 00 00 00 00 00 00 00 f4 02 f5 02 00 00 80 00 |................|
000001c0 02 00 0c fe 3f 55 01 00 00 00 d5 14 15 00 00 00 |....?U..........|
000001d0 01 56 83 fe ff ff d6 14 15 00 eb cf 3b 09 00 00 |.V..........;...|
000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
探して見てください。
これを16bytesの説明で区切ると
80 / 00 02 00 / 0c / fe 3f 55 / 01 00 00 00 / d5 14 15 00
00 / 00 01 56 / 83 / fe ff ff / d6 14 15 00 / ed cf 3b 09
00 / 00 00 00 / 00 / 00 00 00 / 00 00 00 00 / 00 00 00 00
00 / 00 00 00 / 00 / 00 00 00 / 00 00 00 00 / 00 00 00 00
になります。
少し?オフトピックぎみですが
トピックにそってもう少し続きますが取り合えず途中でアップします。
motiiさんも状況を理解した方がまわりが何を言っているのか判断しやすくなると思います。もし解らなくてもリンクを眺めるよりは多少解り易いのでは?
間違った解説箇所があればドンドン指摘下さい。
アップ後また続きを「編集」で追加しておきます。
まずブートストラップローダ領域の後方に 00 で埋められている辺りに目星をつけると 付近に 80 を見付ける事が出来ます、ブートフラグの前にパーティションを表す16bytesは見当たりません。
これで第一パーティションにブートフラグが建っている事がわかりました。
次に
ブートフラグ(1bytes)
開始位置,CHS(3bytes)
パーティションID(1bytes)
終了位置,CHS(3bytes)
開始位置,LBA(4bytes)
セクター数,LBA(4bytes)
と照らし合わせるとよく解ると思います。
80 / 00 02 00 / 0c / fe 3f 55 / 01 00 00 00 / d5 14 15 00
00 / 00 01 56 / 83 / fe ff ff / d6 14 15 00 / ed cf 3b 09
00 / 00 00 00 / 00 / 00 00 00 / 00 00 00 00 / 00 00 00 00
00 / 00 00 00 / 00 / 00 00 00 / 00 00 00 00 / 00 00 00 00
こう言うのを見つけました。
http://hp.vector.co.jp/authors/VA008536/data/partition.html
CHSとLBAの箇所をアップしようとしたら何だか終わりの予感の書き込みが、、、
やはりオフトピぎみなので切り上げます。
最後の編集者: hir0 (2009-03-18 23:47:24)
オフライン
すみません
皆さん
忙しくて;
えーっと...よし ゆっくり読んで..
明日の昼ぐらいに報告しに来ます!
みんな ありがとう。
ネットでここまでしてくれたのは、初めてで
とっても嬉しいです。
皆さまの助けがなければ今ごろ
hddすっからかんでした(;_;)
オフライン
hirOさん、説明ありがとうございます。
セクタエディタなどを使いつつ理解していこうと思います。
motiiさんへ、
私があなたのお役に立てることはほぼ終わりました。
トラブルが、ベストな形で解決することを願っています。
オフライン
※規約違反により追放されたユーザの投稿は、ログインユーザにのみ表示されます。
最後の編集者: kiyoshi (2009-03-19 01:49:35)
オフライン
:) motiiさん今晩は:)
途中で横道にそれましたが基本的に #51 のスタンスなので、その続き(暇をみてツールとその他方法探し)をします。
HDDRECOVERY の PBR ダンプデータは張り付けてあればコメントします。(他にコメントが付かなければ):D
einundzwanzighundertsechsさま本当にいつも勉強になります(変な意味じゃ無いですよ)。
接触が有るたびに教えられたり見習うべき手法を発見します。
最後の編集者: hir0 (2009-03-19 02:06:05)
オフライン
motii さんへ,読みとばして下さい.混乱されませんように.
kiyoshi さんへ,
それではパーティションテーブルの壊れたマウントできない HDD がもう一つできてしまいます.
が非難めいて響いたならばあやまります.それは本意ではありません.
もちろんディスクに余裕があり完全バックアップも取っておけば2重の安心感で作業が出来ます.
私はデータの無事(or 破壊)が確認できるまでは,たとえ完全バックアップがあったとしても
「内臓ハードディスクには何も書き込まない」方針をとります.
私が同じ目にあったなら,破損ディスクはしばらく凍結し,とにかくデータを確認したいので,
各パーティションを破壊されたパーティションテーブルから切り出して(<= ここが私にとって重要),
(A) 前述の方法を試みる.
(B) 各パーティションを他のディスクにイメージファイルとして保存し loopback マウントを試みる.
(C) 他のディスクにパーティションを作らずディスクの先頭から書き込んでしまう.
昔のフロッピーディスクのように,ディスク1つがまるまる1つのファイルシステムになるようにしてマウントを試みる.
/* 4GB の FAT32 ではサルベージ以外の文脈で経験済み */
(A)と(B)は80GB強の予備のディスクが1つあれば試せます.
ただし(B)は他ディスクのファイルシステムによるファイルサイズの上限を考えておく必要があります.(ext3 なら 4TB)
(C)は重要なデータを含むパーティションが収まるサイズのディスクがあれば最優先で試します.
(A)と(C)はうまくいけば他の Windows マシンで使えるので仕事が続けられます.
平坦な道では無いことは認めます.
元々,各パーティションの LBA=offset の計算方法を提案するだけに留めるつもりでした.
サルベージの経験が無いため,それ以上は力になれそうにありません.しばらく引っ込むことにします.
決して変な意味に取らないでください.遅筆のためこれだけ書くのにとっても疲れてしまうのです.
短く書ける良い思いつきがあれば提案します.
hir0 さんへ,
褒めていただけるのは嬉しいのですが,「さま」づけは気恥ずかしいので「さん」でお願いします.
最後の編集者: einundzwanzighundertsechs (2009-03-19 05:31:43)
オフライン
私の念頭にある手順の概略を整理しておきます.
0. 目標
DATA 領域,NTFS 領域の必要なデータを救出する.RECOVERY 領域は後回し.Windows を起動するのが目的ではない.
(私はデータの救出さえ出来たらメーカ推奨の方法で工場出荷時の状態に戻すことも視野に入れています)
1. 前提
DATA, NTFS 両領域の開始LBA値(PBRの位置)とセクター単位のサイズがC/H/S等から計算できていること.
数値を調整する等の試行錯誤の可能性あり.(PBRの位置が正確ならサイズが多少違っても何とかなるのではと思ってます)
2. 必要な物
充分な容量(80GB以上)の USB 外付けディスク(複数あれば完全バックアップや作業領域としても使えるが,1台と仮定)
(あれば)確認用の Windows マシン
3. DATA領域吸い出しの準備
サイズの小さい DATA 領域の吸いだしで勘を掴む.Live CD で起動しディスクを問題のマシンに接続,
ディスクにパーティションを1つ作成し,タイプとサイズは DATA 領域のタイプ・サイズに合わせる.
新品なら大抵の場合,ディスク全体に広がったパーティションが既に1つ存在するのでタイプを合わせてサイズを縮小.
サイズがどうしても等しくならなければ DATA 領域サイズより多少大きくしておく.
(多少大きくても大丈夫とは思うが経験が無いため不明).フォーマットは不要.
4. DATA領域吸い出し
外付けディスクのデバイスファイルが /dev/sdb だとしたら 作成したパーティションは /dev/sdb1 となる.
$ sudo dd if=/dev/sda bs=512 count=「DATA領域サイズ」 skip=「DATA領域開始値」 of=/dev/sdb1
/dev/sdb1 がマウント出来るか確かめる.(あれば Windows マシンに繋いでマウント出来るか確かめる.)
5. 対策
マウントできたら一休み.吸い出したファイルシステムは不健康なので,大事なファイルは健康なディスクにコピーする.
そのためにも,もう一つディスクが有った方が良い.ファイルシステムのチェックもする.
(Windows を使ったことが殆ど無いので詳しい方法は??? 我が家の Windows はハード初期不良のチェックのためのもの)
マウントしないときは /dev/sdb, /dev/sdb1 を testdisk, fdisk, dd と hd で解析して対策を立てる.
testdisk, LBA値とサイズの計算以外はごく一般的なコマンドの組み合わせなのでアドバイスを求めやすい.
ここで煮詰まっても,ともかく次に挑戦,データを少しでも救出する.
6. NTFS領域吸い出しの準備
3 で作ったパーティションの後ろにパーティションを作成(/dev/sdb2),タイプとサイズは NTFS 領域のタイプ・サイズに合わせる.
以下同様.
7. NTFS領域吸い出し
同様に
$ sudo dd if=/dev/sda bs=512 count=「NTFS領域サイズ」 skip=「NTFS領域開始値」 of=/dev/sdb2
/dev/sdb2 がマウント出来るか確かめる.
8. 再び対策
5. と同様
追伸:
細かいことを書いていたらキリがないのでこれで勘弁して下さい.少し休みます.短く書けることなら書き込みます.
初心の方にはハードルが高いところもあるので,ずっと簡単な方法があればそちらを実行してください.
失敗が再チャレンジへの気力をできるだけそがないように工程を並べたつもりです.
最後の編集者: einundzwanzighundertsechs (2009-03-19 13:27:25)
オフライン
motii さんへ,
今後しばらく,解決に目処がつくまでの間は LiveCD で起動直後には !! 必ず !!,
$ sudo chmod a-w /dev/sda*
を実行して,内臓HD(及びそのパーティション)への書き込みを禁止してから作業して下さい.
たとえ単なる情報収集だったとしてもです.
情報収集のつもりの dd コマンドがタイプミスにより内臓HDへの書き込みになってしまう恐れがあります.
作業中 Permisson Denied 等のメッセージがあったら掲示板で誰かに相談して下さい.
最後の編集者: einundzwanzighundertsechs (2009-03-19 12:00:44)
オフライン
みなさん こんにちは
お返事ありがとうございました!
einundzwanzighundertsechsさんの言われていたコード実行してみました。
ubuntu@ubuntu:~$ sudo dd if=/dev/sda bs=512 count=1 skip=146970180 2>/dev/null | hd
00000000 eb 58 90 4d 53 44 4f 53 35 2e 30 00 02 08 22 00 |.X.MSDOS5.0...".|
00000010 02 00 00 00 00 f8 00 00 3f 00 0f 00 44 96 c2 08 |........?...D...|
00000020 f0 60 8e 00 87 23 00 00 00 00 00 00 02 00 00 00 |.`...#..........|
00000030 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000040 80 00 29 fd da 2b a4 4e 4f 20 4e 41 4d 45 20 20 |..)..+.NO NAME |
00000050 20 20 46 41 54 33 32 20 20 20 33 c9 8e d1 bc f4 | FAT32 3.....|
略
全く意味不明です、、、
電話の件ですが
忙しいので時間が取れません;;
時間が取れたら電話してみます!
ありがとう。
einundzwanzighundertsechsさんへ
わかりました! これからLive DCから起動するときは、
$ sudo chmod a-w /dev/sda*を使います!ありがとうございました。
よろしくおねがいします。
最後の編集者: motii (2009-03-22 16:04:54)
オフライン
今晩は、第2拡張領域のPBRの情報が必要見たいです。
申し訳ないですが、
$ sudo dd if=/dev/sda bs=512 count=1 skip=125997858 2>/dev/null | hd
をお願いします。
そこに入れ子構造の論理領域の情報が有ると思うので。
オフライン
motii さん,皆さんこんばんは,できるだけ短く書きます.用語の使い方を決めておきましょう.
HD は 512 byte=1 セクターとして,セクター単位で通し番号を振り管理しています.
その通し番号を LBA(値) と呼びましょう.
「LBA=5 からの 2セクター」では 5 はHD内の位置を示す「序数」で, 2 はセクター数を示す「数量」です.
つまり LBA=5 と LBA=6 の 2つのセクターを指します.
dd コマンドにくっつける
bs=512 count=1 skip=63
は,
512byte(=1セクター)を単位として,LBA=63 からの 1 セクター
の意味になります.
2>/dev/null は エラーメッセージを一時的に抑制するおまじないです.
HDではパーティション(領域)は LBA が連番のセクターの塊です.今必要なのは
「DATA領域は LBA=x からの y セクターである」
と言った情報です.
パーティションの最初のセクタ−(LBA=x からの 1 セクター)には
PBR と呼ばれるパーティションの情報が詰まっています.
PBR には特徴があり dd と hd コマンドを併用して人間が読めるようにすると判別がつきます.
どのような復旧手段を取るにせよ,「PBR を探してパーティションの開始位置をはっきり特定しよう.」と言うのが当面の目的です.
#72 のコマンドは リカバリ領域の開始を探すためのもので,結果情報は PBR に間違いは無いのですが...
何故か NO NAME ?? testdisk は HDDRECOVERY の文字列を何処から拾ってきた??
もう少し念をいれて探っておくのが良いでしょう.後で拡張パーティションテーブルも探して見ましょう.
コマンドの練習も兼ねて NTFS領域(c ドライブ)の PBR も見たいので,
#72 及び hir0 さんの #73 のコマンドを見比べつつ応用し,「LBA=63 からの 1 セクター」の情報を見せてください.
(練習のために,要所を除いて私は具体的なコマンドでは指示をしないようにします.ある程度意味を知ってもらわないと,
残ったデータの破壊だけでなく,次の投稿で注意するような危険があります.)
Live CD 起動直後には #71 のコマンドを実行することをお忘れ無く.
最後の編集者: einundzwanzighundertsechs (2009-03-20 04:01:09)
オフライン
motii さんへ,
今の作業は motii さんの HD を衆目に晒そうとしているようなものです.
PBR の特徴(特に右側の可読部分)を #55 の2番目の箱,#72 の結果から把握して,
コマンドの結果が当面の目的「PBRの捜索」と関係のない,個人情報漏洩につながるものだと判断したならば
「一切貼り付けない」,「一部を省略する」,「ほんの一部だけ示す」の処置をして下さい.
後に探すことになるであろう拡張パーティションテーブルは此方では次のようになりました.
$ sudo dd if=/dev/sda bs=512 count=1 skip=14988645 2>/dev/null | hd 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 |................| 000001c0 c1 a5 82 fe ff d4 3f 00 00 00 f1 c3 0b 00 00 00 |......?.........| 000001d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200
解析に必要なのは 「コマンド部分」 及び 「左の欄が 000001b0 の行から最後まで」 で,
000001f0 の行の中央最後の 55 aa がパーティションテーブルの印です.
* は すべて 0 であるため hd が省略をしたという印です.
短くしようと思ったのに結局長くなってしまいました.休み休み行きましょう.作業の要所でまた会いましょう.
最後の編集者: einundzwanzighundertsechs (2009-03-20 01:14:49)
オフライン