パーティションテーブルを消してしまった/TestDiskの使い方

VAIO VGN-NW71FB という2009年発売の古い PC に Plamo Linux, Ubuntu, Windows10 を入れてテスト用にしたりしているのですが、Ubuntu の調子が悪く、入れ直すかといろいろやっているうちにパーティションテーブルを消してしまったようです。

ちょっとばかり慌てましたのでキャプチャし忘れたのですが、HDD すべてを Ubuntu 用に割り当ててしまったわけです。

で、どうしたものかと、つまり MBR を書き換えただけで HDD をフォーマットしたわけではありませんので何とかなるんじゃないかとググってみましたら、TestDisk というツールがあることが分かりました。



TestDisk ダウンロード、起動

TestDisk Download

TestDisk を使うには何らかの OS が必要になりますので、起動しない PC でどうするかですが、今ですと USB か CD-R から Ubuntu を起動するのが手っ取り早いですね。CD-R も焼けない環境、1台しかない PC のパーティションテーブルを壊すようなことをやる人はいないとは思いますが、仮にそうなった場合は、雑誌の付録(って今もあるのかな?)を手に入れるか、友人にでも頼むしかないんでしょうね。

それはともかく、USB から Ubuntu を立ち上げた場合は、端末からインストールし起動します。


$ sudo apt-get install testdisk

$ sudo testdisk


TestDisk 使い方、パーティションテーブル復旧

f:id:ausnichts:20170616111409p:plain

起動したところです。

まず、ログを残すかを聞かれます。Create を選べば新規に、Append を選べばログファイルに追加で、No Log はログを残しません。


f:id:ausnichts:20170616112016p:plain

sda が該当する HDD 、sdb は Ubuntu を立ち上げている USB で、その下は現在切られているパーティションということになるんでしょうか、Ubuntu 用の root と swap のようですね。

sda を選んで Enter します。


f:id:ausnichts:20170616112713p:plain

パーティションテーブルの種類の選択です。古いタイプの MBR か GPT かです。今回は MBR で Enter です。


f:id:ausnichts:20170616113434p:plain

これからやることの選択画面です。試していませんが、説明文の通りでしょう。Advanced はファイルシステムの変更、Geometry はパーティションのシリンダー、ヘッド、セクタ位置を変更できるようです。MBR Code は、MBR の先頭ににあるブートストラップローダを書き換えるということだと思います。

Analyse で進みます。


f:id:ausnichts:20170616114834p:plain

現在のパーティションテーブルです。

Quick Search で進みます。


f:id:ausnichts:20170616115010p:plain

(多分)HDD をスキャンして新しくテーブルを作るんでしょうね。それにしても一瞬で元のテーブルが表示されます。


f:id:ausnichts:20170616122136p:plain

下の説明にあるように左右の矢印キーでパーティション特性を指定していきます。矢印キーで下のようにトグルします。

  • * __ アクティブなプライマリーパーティション
  • P __ プライマリーパーティション
  • L __ 論理パーティション
  • E __ 拡張パーティション
  • D __ 削除されたパーティション

整合性が取れていないと下に Structure Bad と出ます。問題なければ緑で表示されますので Enter で進みます。


f:id:ausnichts:20170616121154p:plain

問題なければ Write で書き込むことになりますが、見つからないパーティションがあれば(多分)Deeper Search で探してくれるのではないかと思います。いずれにしても書き込まなければいろいろ試してみて問題ないと思います。


f:id:ausnichts:20170616121525p:plain

確認画面です。


f:id:ausnichts:20170616122019p:plain

f:id:ausnichts:20170616122029p:plain

これでパーティションテーブルは書き換わりましたので PC を再起動です。


ブートローダー Grub2 を入れる

再起動後、これでOKと思いきや、立ち上がりません。

当たり前でした。ブートローダーに Plamo Linux から Grub2 を入れていましたので、ブートローダーも書き換えなければ立ち上がりません。

OS の起動の仕組みというのは日々気にしていることではありませんのですぐに忘れてしまいます。いつもあらためてググったりするのですが、今回こちらのサイトでとても詳しく解説されており役立ちました。

ブート ストラップ - パソコンの起動 by BIOS


で、問題はどうやって Plamo を立ち上げるかですが、ここで役立ったのが Grub2 を インストールした USB です。Grub はコマンドラインを持っていますし、Windows も立ち上げられますのでこういうトラブルにあった時にはとても便利です。


f:id:ausnichts:20170616150608j:plain

Grub から手動で Plamo Linux を立ち上げるところです。


# 以下、# はコメント行として

grub> ls

# ls が使えますので、デバイス、ディレクトリ、ファイルが探し出せます

grub> set root=(hd1,msdos2)

# と、デバイスとパーティションを指定して

grub> linux /boot/vmlinuz-4.3.5-plamo64 root=/dev/sda2

# と、カーネルを指定します
# 通常、続いて initrd を指定しなければいけないのですが、見つからないのでいろいろやってみた結果

grub> boot

# これで立ち上がりました

Plamo が立ち上がればこっちのもので、後は端末から MBR に Grub2 をインストールします。


# grub2-install /dev/sda

grub.cfg は残っているはずですのでこれでOKでしょう。


f:id:ausnichts:20170616150629j:plain

ブートローダー Grub が立ち上がりました!


Windows10 が立ち上がらない

これで Plamo と Ubuntu は立ち上がったのですが、Windows10 が立ち上がりません。キャプチャ(写真)し忘れてはっきり記憶していませんが、ブルー画面(DOS ではなく GUI の薄いブルー)に「起動できる〇〇が見つからない、F8云々」だった思いますが、F8 どころか何を押してもその画面から動きません。

Grub は、それぞれの OS のブートローダーに渡しているだけですので、Windows10 のパーティションにあるブートローダー(Boot Manager?)が壊れているのでしょうか?

ということで、いろいろ試みた結果次の方法で修復しました。

  • Windows10 のインストールディスクで立ち上げる
  • インストール選択画面で、コンピューターを修復するをクリック
  • トラブルシューティング > 詳細オプション > コマンドプロンプト を立ち上げる
  • bootrec /rebuildbcd と打つ

Windows の起動方法を詳しく理解しているわけではありませんが、まあ立ち上げればOKということで(笑)。

無事、完全修復できました。