ZCR/bLOG


[PC] WindowsXP起動せず

2007年03月02日 02時 更新

メインのデスクトップマシンのFreeBSD(デュアルブート)のバージョンUPをおこなって、Windowsに戻ろうとしたら、なぜか起動しなくなっていた。FreeBSDからも ntfs領域が見えない。パーティションをチェックすると、なんと「unused(未使用領域)」になってるじゃぁあーりませんか。WinMeの起動フロッピの FDISKで見ても同じである。ぐおぉ・・こ、これはまずい。

どうも、デュアルブートにするための設定をミスったらしい。FreeBSDの boot0というファイルを使うのかと思ったのだけれど、これではダメのようだ。この boot0を使うと、HDDのパーティション・テーブル(01セクタ〜30000セクタ=NTFS・・・とかいう情報)を削除してしまうようなのだ。(boot0を単純にC:\にCOPYしてはダメ・・・ということはちゃんと公表されている。ドキュメントはちゃんとチェックしませう)

とりあえず、デュアルブートは後回しにして、なんとかディスクの復旧をおこなわなければ・・・なんせ常時バックアップしているのはごくわずかのファイルでしかない。Windowsやアプリケイションのインストールはなんとかガマンしてできるが、膨大なお絵描き・作曲・実験データ・母親に頼まれた婦人会の資料(^^;)等がパーになったとなれば悔やんでも悔やみきれない。

まず情報収集を開始。FreeBSDのほうは、ブラウザのインストール前だったので、予備機のPC9821Na9改でぐぐってみる。このようにトラブルが発生してもネットにアクセスできるため、なんぼ動作が遅くても予備機があるということはありがたい。(なくても仕事場に走ってただろうけど)

FreeBSDから見ると、ひとつの未使用領域があるだけということになっているが、WindowsXPではこいつはもともと C: と D: に分割されていた。やはり、パーティション・テーブルがクリアされただけのような気がする。

世の中にはたいへんありがたいフリー・ソフトがあるもので、gpart というツールを使えばディスクをスキャンしてパーティション・テーブルを推測し「たぶんこうじゃない?」と表示してくれる。もちろん、それが完全に正しいという保証はないのだが、この際、そういう脅し文句は世迷い言のように聞こえてきてしまうわけで、とにかくやってみることにする。

FreeBSDは生きているので、portsからgpartをインストール(DOS用のgpartがあるかは不明)。#gpart /dev/ad0 で起動してみると、おぉ!ディスクの中身はちゃんとあるみたい。あとはgpartの出力情報をたよりにパーティションを再構築してやればよいのだ。

しかし、FreeBSDのパーティション・エディタでは、gpartの出力どおりのセクタを指定できない。テキトーにそれらしいセクタ数で設定してみると、セクタの頭から始まる C:ドライブ部分はFreeBSDからマウント可能になったが、データの詰まった D:ドライブが見えない。うーむ、やはりぴったしのセクタ数でなければダメか・・・・・

ネットにある情報は Linuxのものがやはり多いようだ。ここで、雑誌の付録の KNOPPIX(1CDブートのLinux)のCDROMがあったことを思いだす。Linuxはほとんど触ったことがないが、なに、起動してしまえばFreeBSDとあまりかわらないだろうと、このCDから起動させると、なんということだ。gpartもインストールされているではないか。

それで、あらためてKNOPPIXでgpartを起動して情報を取り、次に #fdisk /dev/hda でパーティション・テーブルの復旧おこなった。#mount -t ntfs /dev/hda2 /mnt してみると、無事にかつての D:ドライブの中身が見えた。

さて、これで残る問題は、WindowsXPがちゃんと起動してくれるかどうか・・ということになった。KNOPPIXを終了させ、次にWinMeの起動フロッピでFDISKを立ち上げ、C:をアクティブにし、最後に A:\FDISK /MBR してフロッピ抜いて再起動・・・・・

これで、めでたくWindowsXPは復活したのである。

とまぁ、一気に書いてしまったが、問題が発覚したのが午前2時頃。朝5時頃までいろいろやってみたもののダメダメで、寝て起きて10時。再挑戦して完全復活が17時であった。個人用PCであっても、これだけデータが多くなってくれば、やはりフルバックアップは必要だなぁ・・・

・・・・・・疲れた。


2007/02/18追記: またまたデュアルブートの設定でハマってしまった。

詳細は省略するが、MBRをFreeBSD用に書き換えたのだ。2台目のHDDにインストールしたFreeBSDの起動には成功したものの、1台目のHDDにあるWindowsXPが起動できない。

パーティション情報は保持している。このため、とりあえずはMBRを書き戻してやれば復活するはず・・・と、WindowsXPのCD-ROMから回復コンソールを起動して、fixmbr ・・・でOK・・・と、思ったらこれがダメダメなのだ。fixboot C: でもダメ。

ここでもうアタマがくるくるで付いていけなくなり、よせばいいのに修復セットアップを・・・しちゃいました。でも、これでもファイルコピーはできるけどXPは起動せず。いったい、何を見落としているのだ・・・と小一時間悩む。

もしかしたら、例のパーティションがアクティヴじゃない状態なのでは?? と、気づいたものの、なんということだ、XP回復コンソールに用意されているツールでは、パーティションをアクティヴにはできないのである。こんなん、ありなのか!??!

しかたないので、WindowsMe起動ディスクのFDISKを使ってみたら、これがビンゴ。で、ようやくXPは再起動。でも、修復セットアップかけちゃったんで、セットアップの途中からの起動となり、画面解像度も800*600からのスタート。とはいえ、画面以外の以前インストールしたアプリや各種設定はそのままであった。よかった。

追記 ※ よかった・・・じゃねーよ! 修復セットアップかけると、それまでしこしこ WindowsUpdate してた各種パッチがすべてクリアされてしまうのであった。考えてみりゃアタリマエか。で、久々に WindowsUpdateに行ってみたら、「優先度の高い更新プログラム(72)」ですと!! あ、あっぶねえぇ(^^;)


けっきょく、デュアルブートは、FreeBSD側ではなく、MBM という Freeなブートマネージャを導入することで実現した。こいつを使うのが一番簡単なのではなかろうか。(あまり使いたくはなかったが ^_^;)

ただし、MBM install だけではダメで、XP側のHDDパーティションが非アクティヴのままになってしまうため、F4→F6で FreeBSD側のブートモードを1以上に設定する必要がある。

Tada/JA7KPI : 2005年06月05日(日)

«ダブル逆L その後 (追記訂正) 最新 ダブル逆L /G5RV /田代町移動»
編集