奇跡の生還スペシャル!

2年前に買った現在のメインPC。
2ヵ月後には夏の暑さにやられ、3Dゲームなんかしてるとしょっちゅうブルースクリーンが出てた、へたれマシン。
memtest86かければエラー大量に出るわ、DVD再生中に固まるわ。
しかし、なんだかんだで現在も使用中。
乱暴に扱っても(*1)、意外と致命的には壊れないのである。
  *1 例えば、ハードディスクアクセスしてるのに電源長押しする。
    どこの馬の骨だか知れないドライバをインストールしてみる。
    Linuxをインストールしてみるなど。

そんなマシンにも、2回ほど、嗚呼こりゃもう駄目だ、というときがあった。

その一つは、1年ほど前、Linuxをインストールし、デュアルブートを試みたとき。

マシンに複数のOSをインストールし、使い分けることをデュアルブートという。
それを実現するためには、ブートローダーについて知らなければならない。
パソコンのスイッチをオンにすると、まずMBRというところにあるプログラムが動く。
これをブート・ストラップ・ローだと呼ぶらしいが、長いからMBRでいいや。
MBRはパソコンに一つだけ。
MBRの役割は、OSの読み込み・起動を行うプログラムを呼び出すこと。
このプログラムは、ブートセクタという場所にある。
ブートセクタはハードディスクのパーティション(区分け)ごとにある。
MBRとブートセクタにあるプログラムをまとめて、ブートローダと呼ぶ。

デュアルブートを構築するときは、以下の手順となる。
1.ハードディスクの中を2つに分割し、パーティション1にWindows、2にLinuxをインストールする。
  (この時点で、パーティション1のブートセクタにはWindowsを起動するプログラム、
   2のブートセクタにはLinuxを起動するプログラムがそれぞれ入る。)
2.MBRに、OSの切替メニューを表示するプログラムをインストールする。

こういう構成にすれば、電源ONすればOSの切替メニューが表示され、どちらかを選択すると、それぞれのブートセクタを呼び出し、OS起動。
デュアルブート環境の出来上がり。

頭の中では分かっていた。
しかし、人間は間違ってしまうのだ。

何をやったかというと、MBRにインストールすべきGRUB(フリーの切替ソフト)を、Windowsのブートセクタにインストールしてしまった。
あわててMBRGRUBをインストールしなおしたが、すでに遅し。
再起動した。
起動メニューが出ました。
Windowsを選びました。
起動メニューが出ました。(!!)
その先は、、、何もなし。
メインで使っていたWindowsが起動しなくなってしまいました。再インストール〜♪

しかし、再インストールが嫌だった私は、試行錯誤の末、別の方法でWindowsを復活させた。

まず、幸いにもLinuxは起動に成功したので、インターネットに接続し、情報収集した。
Windowsのブートセクタを復元すればどうにかなるはずなのだ。
バイナリイメージは落ちてなかったが、重要な情報を手に入れた。
NTFSWindowsのディスク形式)は、ブートセクタのバックアップを持っている。
その場所は、パーティションの最後尾。
hda1のお尻512バイトをhexdumpしてみると、確かにブートセクタぽい文言が見える。
じゃあ、お尻512バイトを頭512バイトに上書きすりゃいいんじゃね?
そんなことができるの?
できるんです。Linuxのddコマンド使えば。
(奇跡的にその数ヶ月前、仕事でddコマンドを見かけていた。)
あと必要なのは、勇気!
これは試練だ。未熟な過去に打ち勝てという試練と俺は受け取った!
賽は投げられた。余はブートセクタをコピる。手で!

どきどきしながら再起動。
だめでもともとさ〜、と思いながらWindowsを選択。
見慣れた起動ロゴ。
ヤッターーーー。

自慢のように聞こえるかもしれないが、立派な自慢です。
〜〜奇跡の生還スペシャル・完〜〜