起動しない対策

 

起動しないといっても現象はいろいろある。それらの現象と対応策をまとめてみた。これらは最近電話やメールで尋ねられたものを主体にしているので、全てを網羅しているわけでは無いが、次回以降これを見てもらいながら話を進めると分かりやすいだろう。
WIN-XP/WIN2000 の起動プロセスは次のようになっている。
 

BIOSによるPOST

  マザーボード、メモリ、CPUの動作を確認する。通常問題が無ければ「ピッ!」と音が出る。
     

MBR

  パーティション情報を取得する。
基本領域にあるアクティブなパーティションのブートセクターを探す。
     

ブートセクター

  OSローダーを探す。
OSローダーのファイル名はNTLDR(XP/2000)かIO.SYS(WIN9X)
     

NTLDR

  BOOT.INIを読み出して、起動メニューを表示する。
     

NTDETECT.COM

  PCや周辺機器の情報を集め、XPカーネルに渡す。
     

NTOSKRNL.EXE

  OSのカーネル。このプログラムがOSのモジュールを読み出してWindowsが起動する。

MBR
POSTが無事終了すると、BIOSはHDDの先頭セクターにあるMBRを読み出し、そこにあるプログラムに制御を移す。MBRにはプログラムの他にパーティション情報が記録された領域がある。MBRのプログラムはこのパーティション情報を参照し、Cドライブとなるパーティションのブートセクターにアクセスする。
もし、MBRが壊れていると、画面がブラックアウトし、何も出てこない。この場合にはMS-DOSの「fdisk /mbr」コマンドや回復コンソールの「fixmbr」コマンドで修復できる。MBRはOSに依存しないので、どちらのコマンドも使える。(fdisk /mbr は隠しコマンドなので、/?では出て来ない)
しかし、次のようなメッセージが出る場合には上記方法では直らない。

A

Invalid partition table MBRにあるパーティション情報が壊れている。

B
 

Error loading operating system
Missing operating system
ブートセクターが壊れている。

C
 

NTLDR is missing
A disk read error occurred
NTLDR is compressed Ctrl+Alt+Del to start
ブートセクターがOSを読み出そうとして失敗した。
 

Aの場合にはパーティション情報が破壊されているので、MBR全体のバックアップが無いと難しい。
MBRのバックアップがあれば、別のWIN-XPマシンにHDDを接続し「PCを起動」「Disk Probe」でMBRを復旧できる。(MBRは第0セクターから始まり、ブートセクターは第63セクターから始まる)

Bの場合にはCドライブのブートセクターに異常があると考えられる。XP/WIN2000の場合には回復コンソールの「fixboot」コマンドで修復可能。

Cの場合は制御がMBRからブートセクターのプログラムに移ってからの異常である。ブートセクターは正常であるが、その次のOSローダーの起動プロセスでトラブルが発生している。この場合には、正常なOSローダーのファイル群をルートディレクトリにコピーすれば修復できる。
引き出し式のHDDを起動ディスクに適用して、WIN2000/WIN-XP/WIN2003を切り替えて使っていたが、このエラーが頻発した。その場合引出しをやめて、IDEケーブルにHDDを直付けすれば直るので、引き出し式にはこの問題が付きまとうようだ。

MBRのバックアップ(超上級レベル)

ディスクを直接編集できる「Disk Probe」を使う。このツールはWIN-XPのCD-ROM内のSupport Toolsフォルダにある。インストール後コマンドラインから「dskprobe」と入力して起動。「Drivers」「Physical drive」で対象ドライブを選び「Set Active」をクリック。まずはMBRのバックアップ。メニューの「Sectors」「Read」を選びStarting Sectorに「0」を入れ、第0セクターを読み出す。MBRを表示したら、「File」「Save as」で適当な名前を付けて保存。自動的に.dskと言う拡張子が付く。ブートセクターは第63セクターにある。MBRと同様に、第63セクターを表示して保存する。
トラブル時に書き戻すには、対象ドライブを選ぶダイアログでReadOnlyのチェックを外し、保存していたデータを開いて、書き込み先セクターを指定する。データを開いたら、「Sectors」「Write」を選びダイアログの「Starting sector to write data」に書き込み先のセクター番号を入力する。(MBRなら 0、ブートセクターなら 63)

OSローダ群のコピー(超上級レベル)

回復コンソールを使ってCD-ROMから必要なファイルをコピーする。必要なファイルは通常圧縮してあり、拡張子が「.dl_」のように少し変わっている。回復コンソールのcopyコマンドはユーザが拡張子を修正してやれば、自動的に圧縮を解凍してくれる。
(例 C:\WINDOWS\SYSTEM32>copy Q:\i386\HAL.DL_ HAL.DLL)
また必要なファイルが、拡張子「.CAB」に入っている場合もある。これは複数のファイルを纏めて圧縮したものだが、Explorerで一覧できるので、CABファイルから必要なファイルをコピーして上記方法で書き込めばよい。
回復コンソールでも「EXPAND」コマンドでCABファイルから必要なファイルを抜き出せる。「/f」の後に目的のファイルを指定して、そのファイルが入っているキャビネットファイルも指定する。
(例 C:\WINDOWS\SYSTEM32>expand /f:HAL.DLL Q:\i386\sp1.cab hal.dll)
抜き出した後、copyコマンドで修復する。

回復コンソール

回復コンソールは、インストールCD-ROMからPCを起動して、「セットアップの開始」画面で「R」キークリックでスタートする。初期設定では、OSの入っているWINDOWSディレクトリとルートディレクトリにしかアクセスできない。
ハードディスクの全フォルダにアクセスするには、予め「ローカルセキュリティポリシー」ツールで設定を変更する必要がある。「管理ツール」「ローカルセキュリティ」「ローカルポリシー」「セキュリティオプション」の回復コンソール:すべてのドライブとフォルダにフロッピーのコピーとアクセスを許可するを有効に設定すれば良い。
さらに、回復コンソールにログインした後、次に示すように「SET」コマンドで他のドライブにアクセス許可すれば、Cドライブ以外にもファイルをコピー出来るようになる。
C:\>SET AllowWildCards = TRUE
C:\>SET AllowAllPaths = TRUE
C:\>SET AllowRemovableMedia = TRUE