システムが立ち上がるまで

今回、パソコンの電源を入れてからシステムがどのように立ち上がっていくかをまとめてみました。パソコンの動作を理解し、また障害が発生した場合の対処の方法を理解するうえで必要と思われます。今使っているPCも6年を経過して(WindowsXP)ぼちぼちDISKの障害が心配になりました。10年から15年前のHDDは400メガバイト程度から4ギガでした。私がWindows95を使っていたころのDISKの容量は1.6ギガ程度でした。その頃はよくシステムが立ち上がらなくなったり、動作中にフリーズ(動かなくなる)したりHDDが起動しなくなったりしたことが多かった。したがってCHKDSKとかDISKCOPYなどいろいろのコマンドも必然的に使っていました。システムの入れなおしなども何回か実施したことがあります。またバックアップとしてDISK丸ごとコピーしていました。WindowsXPにしたあとは大きなトラブルがなくバックアップも今まで何もしてこなかったのですが、いずれ機械ものは壊れます。とりあえず、DisktopPCとNotePCをLANで接続してDisktopの中で必要なものはNoteにコピーしました。1テラバイト程のHDDも数万円ほどで購入できるので、DHH丸ごとコピーを検討します。その前に基本的な知識を整理しようと思いました。

電源オン

電源を入れるとBIOS(マザーボードにあるROM)によりマシンの基本的なチェックが行われます。(メモリー、DISK、KB、表示装置など)また構成に変化があったかなどが調べれます。この辺は機械購入時のマニュアルに書かれており、セットアップユーティリティの理解が必要になります。異常がないとセットアップユーティリティで設定した順序で起動されます。(一般的にはFDD{最近はオプション}、CD、HDD)HDDの読み込みの最初はBIOSによりHDDの先頭セクタMBR(マスターブートストラップローダー+パーティションテーブル)が読み込まれ、制御をマスターストラップローダー移動します。ここまでのところで異常が発生した場合はマザーボード上の不具合と思われるので、PCドクターといった診断プログラムにより細かい診断ができ、HDDの初期化機能もあります。

MBRの概要と起動シーケンス

マスターブートストラップローダー パーティションテーブル ブートセクター(DOS IPL) Win95

IO.SYS
MSDOS.SYS
WINDOWSシステムファイル
ブートセクター(NT IPL) WinXP

NTLDR
MTDETECT.COM
BOOT.INI
BOOTFONT.BIN
BOOTSECT.DOS

拡張領域1 拡張領域2
MBR 基本区画1 基本区画2(アクティブ) 拡張区画

HDDが上記のように区切られていた場合(基本区画1にWin9x、基本区画2(WinXP)、残りは拡張区画に割り振られていた場合)

BMRのうちの0バイト〜455バイトまで。BIOSにより制御が移され、パーティションテーブルを参照しながらアクティブな基本区画のブートセクターのIPLを読みに行く。

  1. パーティションテーブルの検査 ブート可能な基本区画を調べる
  2. 見つかったら、その領域の先頭位置をテーブルから取得
  3. BIOSにその位置をしめして、先頭位置セクターをロードしてもらう(ブートセクターIPLをロード)
  4. ロードした先頭セクターに制御をうつす。

区画情報が446バイト目より登録される。ひとつのパーティションは16バイトで構成される。最初の1バイトはブートフラグ。次の3バイトでパーティション開始位置(シリンダー、ヘッド、セクター)。次の1バイトでパーティションのタイプ(基本/拡張)。次の3バイトで終了位置(シリンダ、ヘッド、セクター)。次の4バイトで開始位置(Logical block Address)。次の4バイトで終了位置(Rogical Block Address)。0510バイトはブートシグニチャといいOxAA55の値が入る。

IPL(イニシャルプログラムローダー)

Windows 9xのブート・プロセスでは,制御を渡されたIPLが同一パーティション内の特定ファイルを読み込む。Windows 9xでは「IO.SYS」を読み込むことに決まっているため,このタイプのIPLを「DOS IPL」と呼ぶ。

 DOS IPLによりIO.SYSが実行されると,IO.SYSは「MSDOS.SYS」をロードした後,CONFIG.SYSやAUTOEXEC.BATがルートに存在すればそれらを読み込む。さらに,デバイス・ドライバなどの初期化が行われる。その後,Windowsディレクトリへ移行してレジストリを参照後,ドライバや「WIN.COM」,各種DLLなど必要なシステム・ファイルが順次読み込まれ,Windows 9xが起動する

XP用のIPLが読み込むファイルは「NTLDR」。そのため,このIPLを「NT IPL」と呼ぶ。
 NTLDRは,インストール済みの複数のOSから1つを選んで起動できるマルチブート機能を備えている。そのため,NTLDRが読み込むファイルは,複数のOS名と起動元になるパーティション,Windowsディレクトリ(デフォルトでは\WINNT)の情報を記述可能な「BOOT.INI」ファイルとなる。NTLDRが表示したOSの切り替え画面でWindows XPを選択した場合,NTLDRは「NTDETECT.COM」を実行し,ハードウエアの互換性をチェックする。その後,OSがインストールされているディレクトリに移行してレジストリを変更・参照後,カーネルの「NTOSKRNL.EXE」やドライバ,各種DLLの起動を経て,WindowsXPが起動する。

MBR の修復

Windows 2000/XPのパーティションに対してWindows 95のFDISKを実行するとパーティションが壊れることがあるので,必ずMS-DOSのFDISKを使うこと 
ソフトウエアRAID構成のパーティションがあるディスクにFDISK/MBRを実行してはいけない
Windows 2000/XPの環境でMS-DOSの起動ディスクがない場合は,回復コンソールを起動して「FIXMBR」コマンドを実行する。

回復コンソール起動方法

  1. セットアップCDよりブート
  2. 「セットアップ開始」が表示されたら「R」キーをおして修復を選択
  3. キーボードの種類選択
  4. 回復コンソールが起動して「どのWindowsインストールにログオンしますか?」で「1」キー
  5. Adominisutoratorのパスワード入力
  6. 「FIXMBR」
  7. 「新しいMBRを書き込みますか」で「Y」

その他の方法

  1. MSDOS(英語モード)フロッピーにて立上げ
  2. Disksaveフロッピーにかえて「Disksave」と入力 (DisksaveファイルはインストールCDのsupport\Toolsの「Disk Prove」?)

(MBR 及びPBSのバックアップも出来る)

PBS(パーティションブートセクター)の修復

以上でシステムの立上げ及びMBR、PBSの不具合時の対処方法の概略はわかります。あくまで操作上の問題、その他で立ち上がらない場合の対応が可能ですが、実際にはハードディスクの故障の場合はほとんど回復しないと思われます。ハードディスクが立ち上がらないか、読み書きできない(部分的な場合もある)時のためにバックアップが必要です。実際にトラブルに遭遇してバックアップの必要性を理解しても遅すぎます。ハードディスクの障害が発生し、どうしても中身が必要なときは状況によりますが、数万から数十万円以上の費用で中身を抜くか別のHDDに復帰してもらえるそうです。諦める場合が多いでしょう。

バックアップについて

安全性、信頼性を上げる為に諸々の方法があります。レイド構成、ミラーリング構成のHDDを使用する。本体を二重にした構造。電源トラブル対策といて安定化電源(UPS)を使う。バックアップとしてはテープドライブを使用して、フルバックアップをしたり、変更箇所のみバックアップする方法もあります。しかし費用がかかり個人向けではありません。とりあえずWindowsXPに備わっている機能を整理してみました。

「ファイルと設定の転送ウイザード」でバックアップ

PCのリプレース時に既存のWindowsXP上のユーザーファイルを一括で取り出して新しいPCに移動するユーティリティー。
ユーザ単位のバックアップに使用できる。ファイル単位のリストアは出来ない。

バックアップ手順

リストアの手順

「NTBACKUP」でバックアップ

レジストリーを含めたシステム全体のバックアップに使用する。(NTBACKUP)

ファイル単位のリストアも可能

バックアップ手順

注意  Cドライブしかない場合はバックアップ完了後CDとかネットワークドライブに移動する。直接CDを指定できず。

リストアの手順

「システムの復元」を使う

システムの変更やアプリケーションのインストールによってWindowsXPの動作がおかしくなった場合などに使う。セーフモードでも動作が可能。特に操作方法、手順は複雑ではないので起動方法のみ上げてみる。なおデーターファイルに影響がなくシステムファイルやレジストリが復元元ポイント作成時に戻る。

起動方法

  1. スタートメニューの「ヘルプとサポート」より「コンピュータへの変更をシステムの復元で元に戻す。」を選択。
  2. スタートメニューの「ヘルプとサポート」の「パホーマンスと保守」を選択し、「システムの復元を使って変更を元に戻す」を選択
  3. スタートメニューの「すべてのプログラム」から「アクセサリー」→「システムツール」→「システムの復元」を選択。
  4. コントロールパネルの「パフォーマンスとメンテナンス」を開き、「関連項目」から「胃ステムの復元」を選択。

「システムの復元」を実施したことにより別の問題が発生した場合には再度「システムの復元」を起動して「以前の復元を取り消す」オプションを選択することにより復元実行前の状態に戻すことが出来る。

以下。itpro/nikkei/「障害回復の主な機能を比較,回復への道筋を考えよう」  より抜粋しました。

図1●Windowsの起動トラブル対処フローチャート

1●Windowsの障害を復旧させる主な機能の概要