AOTAKA's web Copyright(c)AOTAKA 1995-2003 - www.aotaka.jp 2003-02-06(初版)

システム修復ディスク
ERD for WindowsNT4.0

システム修復ディスク(ERD:Emergency Repair Disk)はWindowsが壊れた際に修復セットアップで使うディスクである。必須アイテムではないが、この仕組みが有ると無いとでは復旧できる可能性が段違いである。本稿ではERDの仕組みと実際の使用について解説する。

なおWindowsはインストール時にシステムフォルダーの場所を変えられるが、標準設定のままインストールした場合は %SystemRoot% → C:\WinNT と読み替えればよい。

1.システム修復ディスクの内容

WindowsNT4.0では最小のシステム構成でも165MB(PC/AT互換機の場合)のディスクを消費する。このシステム全てをバックアップすることは簡単でないが、CD-ROMに無い重要なファイルで、しかも壊れる危険性が高い物だけでもバックアップしておけば修復には役立つことも多い。

WindowsNT4.0のシステム修復ディスクには、表のように圧縮されたレジストリ ハイブ、セットアップ情報ファイル、そしてautoexec.nt、config.ntとsetup.logが保存されている。このファイルはRDISKのGUIモードで [修復情報の作成] を選ぶかか、コマンドプロンプトでRDISK /SまたはRDISK/S-を実行すると %SystemRoot%\repairフォルダー内にファイルが作成される。

レジストリーハイブは特殊なAPIを使用して読み込み、圧縮しながらrepairフォルダーに書き込むため、アプリケーションやサービスが動作中でも問題はないはずだが、できればアプリケーション類は終了させておいた方が良いだろう。

【システム修復ディスクの全内容】
ファイル名 内容
(1) default._ HKEY_USERS\.DEFAULT (圧縮されたハイブファイル) *1
sam._ HKEY_LOCAL_MACHINE\SAM (圧縮されたハイブファイル) *1
security._ HKEY_LOCAL_MACHINE\SECURITY (圧縮されたハイブファイル) *1
software._ HKEY_LOCAL_MACHINE\SOFTWARE (圧縮されたハイブファイル)
system._ HKEY_LOCAL_MACHINE\SYSTEM (圧縮されたハイブファイル)
(2) ntuser.da_ %SystemRoot%\Profiles\Default User\Ntuser.datの圧縮ファイル
(3) autoexec.nt %SystemRoot%\System32\autoexec.ntのコピー
config.nt %SystemRoot%\System32\config.ntのコピー
(4) setup.log WindowsNTのセットアップ情報(読取り専用&隠し&システム属性) *2
*1 … RDISK 実行時に/Sまたは/S-を付けた場合のみ更新される。
*2 … RDISKでは作成されない。(repairフォルダーから削除してしまうと再作成は不能)
(1) レジストリーの一部を圧縮
WindowsNT4.0では自身やアプリケーションの設定をレジストリーと呼ばれるデータベースで集中管理する。レジストリーは、Windows3.1などで従来使われていたinfファイルをシステム側で管理することで、複数ユーザー環境でも管理できる仕組みを提供する。
レジストリーはハイブと呼ばれる複数のブロックで構成され、各ハイブの実体はファイルとして%SystemRoot%\System32\configフォルダーに保存されている。Windows起動中はメモリー上で常に読み書きされているが、レジストリーの更新に伴ってレジストリーファイル自身も随時更新される。
ちなみに圧縮されたハイブはWindowsのEXPANDコマンドで展開可能である。
なお\WinNT\system32\configフォルダー内に次のものが存在するが、これを見ればconfigフォルダーのレジストリーファイルが全て保存されていることが分かる。
ファイル名 説明
AppEvent.Evt イベントログ(アプリケーション)
default HKEY_USERS\.DEFAULTのハイブファイル
default.LOG     〃     の変更差分
default.sav テキストモードセットアップ終了時のHKEY_USERS\.DEFAULT
SAM HKEY_LOCAL_MACHINE\SAMのハイブファイル
SAM.LOG      〃     の変更差分
SecEvent.Evt イベントログ(セキュリティー)
SECURITY HKEY_LOCAL_MACHINE\SECURITYのハイブファイル
SECURITY.LOG      〃        の変更差分
software HKEY_LOCAL_MACHINE\SOFTWAREのハイブファイル
software.LOG      〃        の変更差分
software.sav テキストモードセットアップ終了時のHKEY_LOCAL_MACHINE\SOFTWARE
SysEvent.Evt イベントログ(システム)
system HKEY_LOCAL_MACHINE\SYSTEMとHKEY_CURRENT_CONFIGのハイブファイル
system.LOG      〃        の変更差分
SYSTEM.ALT HKEY_LOCAL_MACHINE\SYSTEMハイブのバックアップコピー
system.sav テキストモードセットアップ終了時のHKEY_LOCAL_MACHINE\SYSTEM と HKEY_CURRENT_CONFIG
userdiff 古いバージョンのWindowsNTで作られたユーザープロファイルをアップグレードする際に使用される
(2) ntuser.datの圧縮
これもレジストリーの一部(HKEY_CURRENT_USER)であるが、本来は各ユーザー毎に差し替えられる部分である。ERDではDefault Userのntuser.datをバックアップすることでユーザーを作り直してもシステムが修復できない最悪の事態を回避する。
なおHKEY_CURRENT_USERは、HKEY_USERSサブツリーのエイリアスであり、HKEY_USERS\<現在のユーザーのセキュリティーID(SID)>を指し示す。
(3) AUTOEXEC.NT、CONFIG.NT
VDM(Virtual DOS Machine…仮想MS-DOSマシン)環境下で実行される16ビットアプリケーション用の環境設定ファイルで、本体は %SystemRoot%\System32 に存在する。MS-DOSやWindows 3.1用の16ビットアプリケーションをWindowsNT上で実行するときに、このファイルに書かれた内容で環境を初期化する。
このファイルはWindowsNTを動かすために絶対必要というわけでもないが、過去の遺産を動かしているWindowsNTには不可欠な設定ファイルである。WindowsNT/95以降用の32ビットアプリケーションを実行する場合は使われない。
(4) セットアップ情報ファイル
インストール時の情報を保存したテキストファイル。内容は下記参照。
[Files.SystemPartition] と [Files.WinNt] セクションのCRC情報を元に修復オプション『WindowsNTシステムファイルの検査』で実際のファイルと照合される。違うとCD-ROMからコピーするかを聞かれる。しかしわざとファイルを書き換えた場合は書き戻すと問題になる。ServicePack適用程度ならば運良く起動できるかもしれないが、NetWareをインストールした際には『WindowsNTシステムファイルの検査』でオリジナルに戻してはいけない。もしも書き戻してしまうと二度とログオンできなくなるからだ。
【setup.logの内容】
[Paths]
TargetDirectory = "\WINNT"
TargetDevice = "\Device\Harddisk0\partition2"
SystemPartitionDirectory = "\"
SystemPartition = "\Device\Harddisk0\partition1"
[Paths]セクション
WindowsNTのインストール先が記録されている。この情報からboot.iniを再作成?
[Signature]
Version = "WinNt4.0"
[Signature]セクション
WindowsNTのバージョン情報が書かれている。
[Files.SystemPartition]
ntldr = "ntldr","2a80e"
bootfont.bin = "bootfont.bin","2b4ba"
NTDETECT.COM = "NTDETECT.COM","b69e"
[Files.SystemPartition]セクション
システムパーティションにあるNTLDRなどのCRC情報(ファイルに相違が無いかを確認するための情報)が記録されている。
[Files.WinNt]
\WINNT\Help\31users.hlp = "31users.hlp","1fa66"
\WINNT\Help\acc_dis.cnt = "acc_dis.cnt","83a"
\WINNT\Help\acc_dis.hlp = "acc_dis.hlp","804a"
\WINNT\inf\accessor.inf = "accessor.inf","b6b2"
\WINNT\system32\acledit.dll = "acledit.dll","255f5"
…以下略
[Files.WinNt]セクション
%SystemRoot%下のファイルのCRC情報が記録されている。

なおsoftware._はインストールされたアプリケーションによっては巨大になるため、ERDにコピーされていないケースも多いが、このような場合にはハードディスクに保存されたsoftware._を使っている。なお、setup.log(隠し&システム属性)と共に新しいフロッピーディスクに手動でコピーするとフロッピーディスクでの利用が可能である。
(もちろん2HDの場合は合計で1.38MBを超えればコピーできない。)

repairフォルダーは、WindowsNTのGUIモードセットアップ最中に「構成を保存しています」という進行インジケーターが表示された際に作成が行われている。よって、repairフォルダーはユーザーが勝手に削除してしまわない限りは存在することになる。

repairフォルダーを削除してしまうと、setup.logだけは再生成ができなくなってしまい、ERDをERDとして認識してくれなくなる。この場合はアップグレードインストールを行い、setup.logを再度作成しなければならない。

2. ERDの用途

次の場合にERDを適用することができる。ただし修復不能な壊れ方や、物理的にディスク装置が壊れた場合などは復旧できないので過信は禁物だ。

  1. レジストリーを壊した
  2. ファイルが壊れた
  3. 間違ったドライバーをインストールした
  4. ユーザーを削除した(SECURITYおよびSAM)
  5. 管理者(Administratorグループ)のパスワードを忘れた(SECURITYおよびSAM)

3.システム修復ディスクの作成

ERDはWindowsNT4.0インストール中に作成することも可能だが、インストール後の各種設定を反映させるためには、全てのソフトをインストールした後に取らなければ意味が無い。そこで手動による作成が必要となる。

3-1. RDISK…GUIモード
このユーティリティは、システムをインストールするときに保存した修復情報を更新し、システム修復ディスクを作成します。…

修復ディスクユーティリティー(RDISK.EXE)はGUIアプリケーションなのでエクスプローラーからダブルクリックすればよいと思っているユーザーも多いかと思うが、それは間違いである。何もオプションを付けずに起動して [修復情報の更新] と [修復ディスクの作成] を選ぶだけでOKと誤解しがちだが、ここが大きな落とし穴なのである。

もちろん [修復ディスクの作成] しか押さなければ古い情報のままであることが画面を見れば想像できるが、なんと、[修復情報の更新] をクリックしても全てが新しくなるわけではない(default._、sam._、security._の3つは更新されない)のである。これではイザという時には役に立たない可能性もある。

[修復情報の更新] 修復情報の更新を行った後でERDを作成するかを聞かれ、[はい] を選べばERDが作成される。
(ただし default._ と sam._ と security._ の3つは更新されない)
システムのインストール時、またはこのユーティリティの前回実行時に保存された修復情報は、削除されます。この操作を続行しますか?
[修復ディスクの作成] 情報の更新は行わずにERDを作成する。
3-2. RDISK /S

そこで、通常はコマンドプロンプトで「/S」オプションを選択することになる。コマンドプロンプト画面([スタート]-[ファイル名を指定して実行] でも良い)で「rdisk /s」と入力すると、すぐさま構成の保存が開始される。

「構成を保存しています」

しばらく待っていると「システム修復ディスクを作成しますか?」と聞かれる。ここで [はい] を選択すると、そのままERDの作成に移行する。

ユーザーはシステムの修復情報を含むシステム修復ディスクを作成できます。今後、このディスクはWindowsNTの修復に使用できます。システム修復ディスクを作成しますか?

新しいフロッピーディスク(フォーマットの必要無し)を挿入し [OK] をクリック。

フロッピーディスクに「システム修復ディスク」と書いたラベルを貼り、ドライブA:に挿入してください。準備ができたら[OK]をクリックしてください。警告:フロッピーディスク上のすべてのデータは消去されます。

“ディスクのフォーマット”と“構成ファイルのコピー”が行われるので、しばらく待つ。

「ディスクをフォーマット中」

ERDに修復情報をコピーし終わると、次の警告が表示される。

WindowsNT修復情報にはセキュリティ上重要なデータが含まれています。直前に作成したシステム修復ディスクが、このシステムの管理者だけが使用できるような安全な場所に保管されているか確認してください。

ERDは多くのレジストリー情報を含むため、このディスクを解析すれば、インストールされたソフトの設定からパスワードまでありとあらゆる情報にアクセスすることが可能となり、セキュリティー上は非常に問題があることに注意せねばならない。

また修復情報が置かれるrepairフォルダーは標準設定では「Everyone 読み取り」属性になっており、これはNTFS上にシステムフォルダーがあったとしても全てのユーザーが修復情報に自由に読み取りできてしまうことを意味する。幸い、管理者権限のみがアクセスできるように変更しても問題無いので、「Administrator フルアクセス」にしても構わない。

(ただしこの場合は異常時に修復情報をハードディスクから得られないことを意味するので、software._も含めた全てのレジストリーがERDに含まれていることを確認すべきである。)

3-3. RDISK /S-

rdisk /s-」とすると修復情報の更新のみが行われる。(ERDの作成は行われない。)このモードはユーザーへの問い合わせも無いので、Scheduleサービス(ATコマンド)に登録しておけば指定した日時に自動的に修復情報を更新させることも可能である。


4.トラブルシューティング

■1つ以上の構成ファイルが見つかりませんでした。
修復ディスクユーティリティはシステム修復ディスクにすべてのファイルをコピーできませんでした.。1つ以上の構成ファイルが見つかりませんでした。repairフォルダーに一部のファイルが無い場合に、このエラーを表示する。このエラーが出た場合は何かしらの重要なファイルがコピーされていないことを意味する。
足りないファイルがsetup.log(隠し&システム属性)の場合は、repairフォルダーにsetup.logが存在するかを確認する。もしも、このファイルが無い場合にはアップグレードインストールを行ってsetup.logを再作成するしかない。(アップデートとは言ってもCD-ROMのバージョンに戻ってしまうので、ServicePackやHotFixを適用し直さなければならない。)
くれぐれもrepairフォルダーを消してはならない。
■修復ディスクユーティリティーはフロッピーディスクドライブに対する構成情報を取得できません。
■修復ディスクユーティリティーは…できませんでした。このディスクはフォーマットできません。
このエラーが出た場合はフロッピーディスクが正しく挿入されているか、ライトプロテクトノッチは閉じているかを確認する。
■修復ディスクユーティリティーはシステム修復ディスクにすべてのファイルをコピーできませんでした。
修復ディスクユーティリティはシステム修復ディスクにすべてのファイルをコピーできませんでした。システム修復ディスクがいっぱいです。構成ファイルはハードディスクに保存されました。このメッセージが出た場合は一部のファイルがコピーされていないことを示す。
コマンドプロンプトで「RDISK」とだけコマンドを入力することにより( SAM._ および SECURITY._ を作成しない)、このエラーを回避する事もできる。ただし古い状態の SAM._ および SECURITY._ ファイルを使用してシステムを修復すると、ユーザーアカウントおよびマシンアカウント情報が失われる場合がある。

software._ 以外のファイルがコピーされていない場合は、リトライしてみる。software._ はMicrosoft Officeなどの巨大なアプリケーションソフトをインストールすると1MBを超えることも珍しくなく、全てを一枚のディスクに収めることができない事が多い。
このような場合はハードディスクのrepairフォルダーが利用されるようだが、このファイルにアクセスができない場合は手詰まりになってしまうので、software._ と setup.log を別のディスクに保存しておくのも良い。
とりあえず再度同じ作業を行ってもこのエラーが出るようであれば、そのまま使うしかない。システム修復ディスクのファイル作成時刻を確認して、次のファイルが揃っていれば良しとしよう。
ファイルが存在していれば良いファイル
(もちろんファイルサイズが0とかでは困るが)
AUTOEXEC.NT , CONFIG.NT
SETUP.LOG (隠し属性)
ファイルの更新時刻が今日であれば良い
(RDISKに/sを付けない場合は古い日付になるが仕方が無い)
DEFAULT._ , SAM._ , SECURITY._
ファイルの更新時刻が今日であれば良い NTUSER.DA_ , SOFTWARE._ , SYSTEM._
■システムのレジストリークォータが不足しています。レジストリークォータを増やすには、「コントロールパネル」ウィンドウの「システム」を起動して「仮想メモリー」をクリックしてください。
このエラーが出る場合は [スタート]-[設定]-[コントロールパネル] の [システム] で [パフォーマンス]タブ から [仮想メモリー] を選び、最大レジストリーサイズを元の2倍(例えば25MBくらい)にしてみると成功することが多い。これは現在使用している量がたとえ10MBくらいでも、修復情報を作成するときにはより多くのメモリーを使う必要があるからだ。

[ index ]