それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Windowsの起動しない&認識しないHDDを修復する(raw/bootsect/mbr/chdsk)

故障したWindows HDDが持ち込まれ、修復したのでメモ

ディスクの回復作業

HDDはWindowsがブートしない感じだった。

必要な作業

  1. ディスクのバックアップ
  2. 必要なツール・ハードの準備
  3. 用語とHDDに付いて最低限の知識
  4. 必要なツールの準備
  5. 作業手順

故障ディスク修復の初めにやること!ディスククローン

故障ディスクディスクをみたら、なによりもまず、クローンを行いましょう。
故障ディスクを直接触るのは厳禁。

ディスクコピーを作る専用機

6000円くらいです。しかもプライム対応。幾つか試したけどこいつが電源の安定性と速度が優れてた。



その他のクローン機器

クローニングはDDコマンドで行うことも出来るが、CPUメモリ性能や・USB性能に左右されて時間がかかるの。専用クローン機器があったほうが時間を有効に使える。マルチタスクで作業進行できて嬉しい。ddに慣れない人は、生兵法は大怪我のもと。じっくり練習する必要がある。HDDトラブルで精神的余裕が無いので専用ハードに任せて睡眠をじっくりとって落ち着くことが必要。

必要なハード。

HDDお立ち台ケース
お立ち台ケースが大活躍。HDDの抜き差しが頻繁にあるので、eSATA/USB3.0の外付けドライブドライブがあると便利。
PC
PCは複数台あるのがいい。古いPCは遅い。待ち時間を無駄にする。コピーやチェックでデータ転送に時間が必要になり能率が悪い。USB2.0世代やIDE(ATA133世代)は不適切だと思う。
USBメモリ
必要なツールや、Windows起動に使うので、複数個あるとイイ。
DVDドライブ&メディア
USBメモリが足りない時に代替として便利、リカバリディスクを読み込むのにも使う。

必要なツール

Windows PE
Windows 7のインストールディスクに付いている
GNU/Linux
使い方がわかるもの。UbuntuのLiveCDが一枚あればいいんじゃないかな。knoppix はどうせDebainだし、Debianubuntu使えばいいと思う。
TestDisk
パーティションを探すのに必要。

HDDに付いて最低限の用語

MBR
起動に必要。x86系のブートセクタ。起動ボリューム(hdd)とボリューム(パーティション)一覧が含まれる。故障時のためにバックアップMBRが存在する。
ブートセクタ
起動に必要な情報を書き込んだセクタ(領域)のこと.
c:¥boot
Windows7/vistaのブート情報。XpまではNTLDR
GUID
MBRからの置き換え。互換性も考慮された新しいブートセクタ(Vista以降
プライマリ・アクティブ
起動用パーティションのこと。
拡張パーティション
Windowsのブートの復旧にはあまり関係ないかも。MBRパーティション数制限を超えてパーティション内にパーティションを作る機能。
MFT
windows のNTFSのファイルインデックス。このエントリがあってはじめて権限などメタ情報とデータ実体にアクセス可能。修復にはチェックディスクを使う。
raw
壊れたNTFSをWindows7/Vistaのディスクマネージャーで開くとraw パーティションになる。

必要なツール

Testdisk
ロストしたパーティションを検索したり、MBR/MFTを復旧してくれる。Cygwin版がWindowsで利用できる。動いているLinuxがあればapt-get でいい。
windows インストールディスク
windows 7 のUSB起動ディスクを作っておく→win7インストールのUSB起動
chkdsk
NTFSの修正。Vista以降はXpとは使い方が変わってる。

testdisk のインストール

Window場合Cygwin版をTestDiskから本体をDownloadし起動する。

Linuxの場合は apt-get install testdisk でインストール可能。

TestDiskの起動

TestDiskを起動すると、ログ選択の後に、ディスク(ボリューム)選択画面が出てくる。

ログ選択

ログファイルの設定をする。
(select-log)

ディスクを選ぶ。

どのディスクから読み出すか選ぶことが出来る。
(select-disk)

ディスク・タイプを選ぶ。

一般的にはx86 なので、intelを選ぶ。
(select-type)


bad relative sector と出た時はNoneで選びなおす。原因は直接ボリュームを選択が殆どだと思う。
直接ボリュームを選んだのでIntel タイプではない。

パーティションを探す。

メニューからSearchを選ぶ。

パーティションを復元するにはまず探す。QuickSearch→Deeper Searchの順で探す。
必要なパーティションが見つかったら、STOPしても構わない(Enterを押せばストップ)

パーティション一覧。
(search)

バージョンに依ってはVistaかどうか聞かれた。これはGPTのことだと思う。
(vista)

見つかったパーティションのフラグを修正

パーティションが見つかったら、必要なパーティションと要らないパーティションを分ける
沢山パーティションがあるディスクはココが一番難しい。

記号の意味が重要

Windowが入ってるディスクをPrimary bootable に変更する


MBRではprimary bootable は一つしか設定できない、しかし、画像のDellUtilityのようにメーカーのリカバリドライブが付いている場合、リカバリ領域やチェックツール領域がbootableに設定されることがあり、修正が必要だった。

全部見つかって意図したとおりになったらWriteする。
Writeをすると「本当いいか」と聞かれるので「Y」で確定する。

書込が終わったら、ディスクを再認識させる。USBやeSATAならホットプラグ対応なので抜いて差しなおせばOK。SATAでつないでる場合は再起動が必要。

マウントできるか確認。

ここの時点でマウントできたらサルベージ簡単にできるようになる。

確認方法

  1. mount -t ntfs /dev/sdXXX
  2. 回復コンソールでdir c:¥する
  3. WindowsにUSBでつないで管理コンソールからディスクの管理で見てみる。

マウントさえ出来てればrsync でコピーするなりご随意にってことで。

データ・サルベージだけが目的なら、ntfsfix コマンドでntfs修正後にmount で無理矢理マウント出来て、データを取り出せた。

testdiskを使ったサルベージ方法。

ディスクを繋ぎ、testdisk を起動し、Advance を選ぶと、ディスクの情報が見られる。
ここで、list を選ぶと、パーティションのファイル一覧が見られた。

サルベージしたいファイルを「:」選んで、「C(大文字)」を押すと、コピー先を選ぶように促されるので、コピー先を選んでEnterするとサルベージができた。

WindowsCygwin版TesDiskの場合、ドライブ移動が必要だと思うので追記

ドライブ移動はcygwin の場合はcygdrive経由。 ディレクトリ最上位にcygdrive ディレクトリが見えて、cygdrive ディレクトリの中に入ればドライブを切り替えられた。


windowsブートの復旧

Windowsのブートが壊れたディスクについては、TestDiskでMBRとMFTを修正後にCHKDSKを書けることになった。

TestDiskでブートを復旧

TestDiskでディスクを選びタイプを選ぶ、その後「Advanced」選ぶ。
その後ディスクのメインメニューから「MBR」を選んで修正した。


MFTの修正後にCHKDSKを掛けろと言われたのでCHKDSKをかける

Windows PEを起動する。

ここまでで、ディスクからの起動チェックする。起動したら勝ち。起動しなければ・・・

windowsの起動ディスク(DVDかUSB)を突っ込んで起動する。
インストール済みのWindowsが見つかれば勝ち。Windowsの修正インストが可能になる。

Windows修正インストールはデュアルブートなどと違い、いまのWindowsを上書きするので慎重に。
修正インストで上手くいかない場合は、ディスクコピーからやり直し。。。

Window PE のコマンドプロンプトの入り方
・ディスクを探す→見つからない→次へ
・バックアップを選択→キャンセル
・メニューが表示→コマンドプロンプト

Windows Xpの回復コンソールの入りかた。
・Xpでブート後、Rを押して
・キーボードを選択して、Yを押したら暫く待つ。
・どの「Windowsにログイン」しますかと聞かれなければ負け。

dir c:¥ 

とかやるとディスクが正しく読めてるか分かる。

Windowsが見つからない。

インスト済みのWindowsが見つからない。0件になる場合。
「ブートマネージャが存在しないか壊れています」
「ディレクトリを列挙するときにエラーが発生しました」
「bootrec scanos returns 0 」なとき

WindowsPEのコマンドでインストール済みのWindowsを確認

bootrec /scanos
dir c:¥

c:¥が本当に、意図したパーティションかどうかはdiskpart で確認。
ディレクトリを列挙出来ないときはディスクがraw で読めてない。

NTFSが思い切り壊れているので。MFTを修正

testdisk にディスクを接続し直す。

ブートがオカシイ該当パーティションを選ぶ。「boot」を選んでMFTを修正。
MBRも正しくバックアップから書き戻せたことを、表示のidentical (一致)で再確認。

MFTを修正したが、MFT修正にはCHKDSKを使う必要があるのでWindowの回復コンソールに切替。

CHKDSKの実行

Windows PEからCHKDSKを実行

CHKDSK c: /f

今回はWindows Xpの回復コンソールから CHKDSK /r c:¥だと何故か上手く復旧しなかったXpのディスクなのに・・・

CHKDSKは孤立エントリを消しちゃったりするので、作業用ディスクでやること

CHKDSK時間かかる。

3時間位かかった。

CHKDSK が正しく行えた確認

CHKDSK /f c: のあと、CHKDSKを実行しエラー無しになることを確認。
エラーがあれば悲しいけれど再度実行・・・怖いから作業用で。

ブートした

ブートした。安心した。

今回のXpは、TestDiskからパーミッションの修正・MBRの・MFT修正、その後CHKDSKで治った。

その他試したこと

bootrec コマンド
  • scanos
  • fixboot
  • fixmbr

scanos でインストール済みWndowsを探す。fixを実行するとWin7用のブートになる。ちなみにxpにこれをやったらNTLDR compressing になった。

bootsect コマンド
bootsect /nt60 c: /mbr
bootsect /nt60 sys /mbr ##sys がc: の場合全く同じ意味
bootsect /nt52 c: 
##↑ nt52はXpのことvista以降はnt60。これはWin7をxpからをデュアルブート時に使うらしい?
fixboot/fixmbr コマンド

WindowsXp の回復コンソールのコマンド vista以降は bootrec

CHKDSK コマンド

Windows Xp の回復コンソールと Vista/7 のコマンドプロンプトではオプションが違う。

Boot.ini NTLDR Ntdetect.com書き戻し

正常なXp別のマシンからのBoot.ini NTLDR Ntdetect.comの書き換え。これならクリーンインストールしたXpにサルベージされたファイルやレジストリ書き戻ししたほうが。良かったかも。

BCDboot

vista/7 用のbootセクタツール。今回は使わなかったけど調べた。
bootmgr mssing の時に使う

bcdboot c:¥windows /l ja-jp
Windows起動直前にF8連打後に

起動ログ有効やエラーメッセージを表示指定で起動できる。
起動オプションを表示したり、どのエラーで起動しないか調べることが出来た。
Windows再起動地獄に陥った時に役立った。

rsync でコピー

Linux版testdisk 実行後、データが見える状態になったところで一端rsync を使って別HDDに中身を全部コピーした。安心感あった。

nftsfix コマンド

Linux でntfs 系のツールを入れるとついてくる。testdisk でパーティション修復後、パーティションを ntfsfix をすれば、読み出し専用でとりあえず全データにアクセスできるようになった。優秀。

スタートアップ修復

Windows vista/7 に添付のPEから出来る。これでそこそこ治ったので、今回は見込み有りとして判断したキッカケ。

まとめ

だいぶ書きなぐりなってしまった。

結構焦って復旧したので、メモを撮り忘れたし、検証が甘かった。
ディスク復旧に備えてバックアップを取ることは勿論のこと、

それ以前に、ハードウェアは潤沢に数台用意するなりバックアップを頻繁に取るなりして用意しておかないとしんどかった。

2TBのHDDが2本でも足りないと思った。ディスク容量は潤沢に用意して復旧作業に当たること。
ディスクのコピーやOSインストーラー起動に時間を取られるので、DVDより、USBからの高速起動や、ディスクのコピーをバックグラウンドで別PCで行える環境は非常に大事だった。

参考資料

「システム回復オプション」について - パソコントラブルと自己解決
「TestDisk」の使い方 - パソコントラブルと自己解決
「chkdsk」と修復オプション - パソコントラブルと自己解決
「スタートアップ修復」でできること - パソコントラブルと自己解決
MBRの修復 - パソコントラブルと自己解決
「プライマリパーティション」と「拡張パーティション」の違い - パソコントラブルと自己解決
Windows RE(回復環境)の diskpart コマンドでアクティブ設定確認 - Palm84 某所の日記
ThinkPad X40内蔵HDDのWindowsをUSBメモリへバックアップする
XP緊急起動ディスクの作成方法
NTLDR - Wikipedia
Windows XP から Windows 7 を起動してる場合に Windows 7 のドライブにMBRとブートローダーを作成して起動する方法。 - いつものしらべてもでてこない
BCDboot のコマンドライン オプション
Windows RE で Bootrec.exe を使用して起動に関する問題のトラブルシューティングを行う
Windows7ブートマネージャを修復する方法1~4|秋葉は外神田ですがなにか?
Windows7で起動時に0xc000000eエラー - 墜落日誌
Laineema デジタルハードウェア徹底レビュー : HDDやSSDを取り外さずにUMPC HP Mini1000でBOOTMGR is missingを修復
takeone - WindowsXP HDD換装に伴うシステム移行
パソコンの穴|パソコントラブル解決サイト! - 回復コンソールでデータ救出::WindowsXP
起動しなくなったXPを救う「Rebuild」コマンド - GIGAZINE
How to recover from a corrupted registry that prevents Windows XP from starting
GUIDパーティションテーブル - Wikipedia
マスター ファイル テーブル - Wikipedia
Walkthrough: Boot Windows PE from CD-ROM
Why can't I boot XP into recovery console?
How to install and use the Recovery Console in Windows XP
Windows XP 回復コンソールについて (上級ユーザー向け)
XP Pro x86 & Win 7 Ultimate x64
Data Recovery Examples - CGSecurity