>突然の Invalid partition table<

やあ(´・ω・`)

お久しぶりです。 半年くらい間が開いてるようですが相変わらずPSO2したりしてました。 その話はとりあえず置いといて、ある日突然PCがブッ壊れたもののなんとか自力復旧に至りましたのでその経過をお送りします。 mouse computer謹製、2年弱くらいの生まれも育ちも Win 7 Pro 64bit な子です。

いろいろやったのですが、最終的に有効だったと思われる手段をまとめると、

  1. TestDisk で有効なパーティションとアクティブ指定をしてパーティションテーブルを書き換え
  2. Windows REの自動診断に身をゆだねる

このくらいだったように思われます。 まあ不慣れな部分だったり情報が少ない環境だったのでかなり時間はかかったんですが、途中のあれこれで直ったというケースもあるみたいなので、検索の際の手がかりにでも。というわけで以下、全過程。

ある日PCを起動すると「Invalid partition table」の文字。 前日の夜までは正常に動いていたのです。 PSO2やって寝る前に普通にシャットダウンしました。 別に新生FF14βが待ち遠しくて「よーしパパ、オーバークロックしちゃうぞー」とかやってません。 いわゆる「なにもしてないのに壊れた」というヤツです。 いやホント、俺が一体何をした。

仕方ないのでとりあえずインストールディスクからWindows REに入りスタートアップ修復を試みます。 あ、Windows REはインストール画面で「Shift+F10」押しでコマンドプロンプト呼び出しからの「recovery\recenv」な。

再起動→「Error loading operating system」治ってねえ…

この後、先人の知恵に習い、コマンドプロンプトから

>bootrec /fixboot
>bootrec /fixmbr

を試みるも、fixboot の時点で「要素が見つかりません」などとエラーを吐かれる始末。

インストール先の候補に挙がっていた元のインストール先も消えています。コマンドプロンプトからアクティブ化を試みる。

>diskpart
DISKPART>list disk (タゲるディスクの番号確認)
DISKPART>select disk 0
DISKPART>list partition (タゲるパーティションの番号確認)
DISKPART>select partition 0

が、しかし、「パーティションが選択されていません」…だと…。このあと DISKPART で active 叩くはずだったのに。詰んだ。

こんな事もあろうかとTestDiskなるツールが万病に効くと言う話を聞いていたので、先代のWindows 2000ノートを使って入手します。 お皿が焼けない残念な子なので、Windows版をUSBメモリに突っ込んでコマンドプロンプトから呼び出します。 最後の希望です。

参考サイト(TestDisk非公式ヘルプ)に一通り目を通し、これから何やるのかそれなりに把握した上で進めていきます。Analyze の結果…

Disk /dev/sda - 120 GB / 111 GiB - CHS 14593 255 63
Geometry from i386 MBR: head=255 sector=63
NTFS at 0/32/33
NTFS at 12/223/20
BAD_RS LBA=3767389821 15963374
file_pread(4,2,buffer,3767389822(234509/43/29)) lseek err Invalid argument
check_FAT: can't read FAT boot sector
check_part_i386 failed for partition type 0B
BAD_RS LBA=652151297 12518786
check_part_i386 4 type 87: no test
Current partition structure:
 1 P HPFS - NTFS              0  32 33    12 223 19     204800
 2 P HPFS - NTFS             12 223 20 14593  33 32  234231808 [Windows]
check_FAT: can't read FAT boot sector
Invalid FAT boot sector
 3 * FAT32                234509  43 28 456671 117  7 3569037172
 3 * FAT32                234509  43 28 456671 117  7 3569037172

Bad relative sector.
 4 * HPFS FT mirror-V/S set 40594 137 57 219757 250 55 2878260713

Bad relative sector.
Only one partition must be bootable

こ れ は ひ ど い

なにがひどいって1番目、2番目のパーティションまではお目当てのものがそっくりそのままあったけど、その後ろ完全にでたらめじゃねーかw

詳細な説明はほかのページに譲るとして、1番目と2番目はビンゴです。 Quick Search、Deeper Search と進めてもこの2つに関してはそのままです。

大事なのは、1番目のパーティションがシステムパーティション、2番目が Windows のもろもろがインストールされているいわゆる C ドライブ、2つとも必要なものです。 Windows 7 からこういう感じでわかれていて、普段使っている分には1番目が見えない状態になっているのだそうです。 XP とか Vista からアップグレードしてる場合は以前の構成を引き継いでるらしいので、この限りではないみたいですが。 システムパーティションをブッ潰して復旧する方法もあるとかないとかみたいですが、リスクが見えないのでこのまま生かします。

もう一つ、1番目のパーティションが 0/32/33 から始まっている点について。 従来だと 0/1/1 から始まるのですが、Vistaからパーティションの区切りがシリンダ境界でなく、2048セクタ単位になったそうなのでそのせいかと。

32h*63s + 33s = 2049s (=2048 + 1)

2番目のパーティションの終点と全体のサイズが合わないのが気になりますが、 Deeper Search まで行って変わらなかったんでそのまま通します。 パーティションテーブルを書き換えて再起動。

今度はブートマネージャーでエラーが/(^o^)\

再びインストールディスクから起動します。 パーティションテーブルの更新で一応見えるものは見えるようになりました。 システムパーティションがCドライブ、元々のCドライブが埋まっているDの次のEドライブになってたりしますが、これは Windows RE から見た時だけのようです。 復旧過程でパーティション情報ふっ飛ばしてるので下手に動けず、この情報に行き当たるまでに手間取って進まなかった。

その後は、TestDisk で設定したけど念のために DISKPART からシステムパーティションをアクティブに指定したり、ブートマネージャーのメッセージ「0xc000000e」を手がかりにMSのページにしたがってbcdeditでごにょごにょしたりしましたが事態は動かず、結局コマンドプロンプトから「recovery\recenv」でシステム回復オプション呼び出した瞬間に自動診断が走り、そのまま再起動したら復旧しました。

…とまあこんな感じで、自作PCも組んだ事のない人間が、場当たり的に知識を叩きこみつつなんとか復旧に至りました。 そこら辺の細かい説明がしたかったというよりは、 Windows 7 での事例が見つからず難航したのでそこら辺に触れた感じで残しておきたかったというものなので、全体の流れとしてはあんまり参考にならないと言うか、あくまで自己責任で活用いただければと思います。