2012年08月06日

次のファイルが存在しないかまたは壊れているため、Windowsを起動できませんでした: \Windows\SYSTEM32\CONFIG\SYSTEM

業務用のパソコン(WindowsXP)で、「黒い画面に意味不明なメッセージが表示され、起動できない」との相談を受けました。
見に行くと画面には以下の表示が。

次のファイルが存在しないかまたは壊れているため、Windowsを起動できませんでした:

\WINDOWS\SYSTEM32\CONFIG\SYSTEM

オリジナルセットアップCD-ROMからWindowsセットアップを起動して、このファイルを修復できます。
修復するには、最初の画面で' R 'キーを押してください。


黒い画面と聞いて「 Operating System not found」かな、と嫌な予感がしましたが、このような画面は初めて見ました。
幸い、回復コンソールを動かすために必要なWindowsセットアップディスクは用意されていましたので、さっそく修復の準備に入ります。

ネットで対処法を探すと、マイクロソフトのページがヒット。

Microsoft サポート エラー メッセージ "次のファイルが存在しないかまたは壊れている" が表示され、製品版パッケージの Windows XP を起動できない

こちらの手順の通り、セットアップディスクを挿入してPCを起動、回復コンソールを起動してC:\WINDOWS\SYSTEM32\CONFIG ディレクトリに移動しました。
手順3のA-2でdir system を実行したところ、ファイルが存在。
A-3 のとおりにリネーム〜ディレクトリを再読み込み。
A-4 の copy c:\windows\repair\system を実行したところ、「ファイルがありません」のメッセージが。

C:\windows\repair ディレクトリの中を見てみると、system.bakはありましたが、 systemというファイルはありません。

「この場合はこのsystem.bak をsystem にリネームしてC:\WINDOWS\SYSTEM32\CONFIG ディレクトリに移せばいいんじゃね?」と安易に考えましたが、この件で調べると、実際に実行してとんでもない目にあった人のブログ記事を発見しました。

参考サイト : I will work it out - Windows XP修復大作戦

偉大な先人の失敗を無にしないようこの方法は排除し、同じブログ内の解決方法を参考に Linux のライブCDを作成、そこから起動してSystem volume Informationのレジストリバックアップから必要データを抽出する手順で行くことにしました。

ところで、このPC機種名はDELLのDimension2400というやつで、搭載メモリは512MBです。
当初Ubuntu12.04 のLiveCDを使ってみたんですがメモリ容量不足のようでデスクトップ画面の表示まで20分、そこからピクリとも動かなくなりました。
「とにかく軽いLinuxを!」と探した結果、PuppyLinux の存在を知り、これをCDに焼いて件のPCを起動したところ、今度はOK!ディスクのマウントも、デスクトップ上のアイコンをシングルクリックでOKですのでとても使いやすいです。
何はともあれ、第一に「Documents And Settings」の全ユーザーフォルダを外付けUSBにコピーし、業務データの救出を行いました。
(なお、今回の作業ではCドライブは PuppyLinux 上では sda2 と認識されました。)

続いてレジストリの修復です。こちらのサイトを参考に、ファイルをコピーします。

参考サイト : にがちゃんねる( ・`ω・´)キリッ - c0000218 Unknown Hard Error

ここでおかしなことに気が付きました。
マウントさえしてしまえば Windows がインストールされた問題のハードディスクは、Puppy 上からはすべてのファイルにGUI上でのアクセスが可能なはずですが、/mnt/sda2/WINDOWS/system32/ フォルダが空っぽに表示され、そこから奥には進めません。
それでは、とコンソール上でcdコマンドで system32 ディレクトリに入ろうとするとアクセスできない旨のエラー表示が。
しかし同じくコンソール上で ls /mnt/sda2/WINDOWS/system32/config を実行すると、内部のファイルがすべて表示されます。
下位ディレクトリの内容が読めてその上位ディレクトリが読めない、となると、上位ディレクトリである system32 に何か問題がありそうです。

ともあれ config ディレクトリへはアクセスできるようなので、コンソール上で以下のとおり作業しました。

1.C:\WINDOWS\system32\config\ 内の該当ファイルをリネーム
cd /mnt/sda2/WINDOWS/system32/config
mv DEFAULT DEFAULT.backup
mv SAM SAM.backup
mv SECURITY SECURITY.backup
mv SOFTWARE SOFTWARE.backup
mv SYSTEM SYSTEM.backup

2.レジストリのバックアップフォルダへ移動
cd /mnt/sda2/SYSTEM\ VOLUME\ INFORMATION/_restore*

このディレクト内で ls を実行、頭文字がRPでその後の数字が最大のものを探す
cd RPxxx(lsで見つけたディレクトリ)/snapshot

3.該当ファイルを c:\WINDOWS\system32\config\ へコピー
lsコマンドでディレクトリの内容を確認後、以下の5つのファイルをリネームしてコピーする
 _REGISTRY_MACHINE_SAM → SAM にリネーム
 _REGISTRY_MACHINE_SECURITY → SECURITY にリネーム
 _REGISTRY_MACHINE_SOFTWARE → SOFTWARE にリネーム
 _REGISTRY_MACHINE_SYSTEM → SYSTEM にリネーム
 _REGISTRY_USER_.DEFAULT → DEFAULT にリネーム

cp _REGISTRY_MACHINE_SAM /mnt/sda2/WINDOWS/system32/config/SAM
cp _REGISTRY_MACHINE_ SECURITY /mnt/sda2/WINDOWS/system32/config/ SECURITY
cp _REGISTRY_MACHINE_ SOFTWARE /mnt/sda2/WINDOWS/system32/config/ SOFTWARE
cp _REGISTRY_MACHINE_ SYSTEM /mnt/sda2/WINDOWS/system32/config/ SYSTEM
cp _REGISTRY_USER_.DEFAULT /mnt/sda2/WINDOWS/system32/config/DEFAULT

4.作業内容を確認
ls /mnt/sda2/WINDOWS/system32/config

5.問題なければハードディスクをアンマウントして再起動

「さあ、これでバッチリ!」と再起動したところ、

次のファイルが存在しないかまたは壊れているため、Windowsを起動できませんでした:

\WINDOWS\SYSTEM32\l_intl.nls

オリジナルセットアップCD-ROMからWindowsセットアップを起動して、このファイルを修復できます。
修復するには、最初の画面で' R 'キーを押してください。

ああ、もう・・・(´;ω;`)

\WINDOWS\SYSTEM32\l_intl.nls でWeb検索してみると、どうもファイルシステムの破損により読み取れない箇所ができている可能性が高くなりました。
現に、再度Windowsセットアップディスクから回復コンソールを起動、
dir C:\WINDOWS\system32

を実行したところ、lz32.dllまで表示した後、「ディレクトリを列挙するときにエラーが発生しました。」と出ます。

読み込めないディスクの回復方法として
chkdir C: /r
fixmbr

を実行してみました。

chkdskでは実行中に「ボリュームに回復できない問題が1つ以上あります。」と出て中断してしまいました。本当にこれはもう駄目っぽいです(fixmbrは問題なく終了しました)。

完全にあきらめムードでセットアップディスクを入れたまま再起動したところ、どういうわけかWindowsXPの起動画面が!

「???」と画面を見ていると、起動画面上で自動的にCHKDSKが開始され、CDからいくつかのファイルをコピーしている様子。勝手にsystem32フォルダをリカバーしているように見えます。

そのまま待つと、XPのログイン画面が表示されました。おっと、復旧!?
通常使用していたユーザー名でログインしてみると、

「ローカルに格納されているプロファイルを読み込めません」
「ローカルのプロファイルが見つかりません」

のメッセージが出て、仮のユーザーでログインさせられました。
この現象については、Administratorで新しいユーザーを作成、破損したユーザーのデータをその新しいユーザーに丸ごとコピーして事なきを得ました。

Microsoft サポート WindowsXPで、破損したユーザー プロファイルのデータを新しいプロファイルにコピーする方法

・・・それにしてもよくもまあ、復旧できたものです。

結局今回のケースはハードディスク上の読み込み不能箇所の発生によるものと思われ、最初のレジストリファイルの書き換えなしでも、CHKDSK だけで解決したかもしれません。

いずれにせよこの障害が発生した機種は相当古いもので、システムファイルの読み込み不良が現実に発生しましたので、いつ本当にハードディスク自体がダメになるかわかりません。
「必要なファイルはUSBメモリ等に常にバックアップしておいてください」と、きつーく伝えて、今回の作業は終了しました。

数日後、このパソコンでExcel使用中に固まった、との連絡を受けてイベントログを見たところ、Cドライブ上に不良ブロックがあるとのエラーが、今回の作業直後から連続して発生していました。
今度はWindows起動中にCドライブのプロパティ→ツール→エラーチェック→「不良セクタをスキャンし、回復する」にチェックを入れて再起動しました。
チェックディスク画面ではやはり C:\WINDOWS\system32\config\system の修復が行われ、約1時間ほどで通常起動、イベントログ上のエラーも出なくなりました。

しかしこのような状態ですので早いうちにハードディスクを交換するなり、パソコンそのものを買い替えるなり、何らかの手を打つ必要がありそうです。

posted by nambei-x at 10:28| Comment(0) | TrackBack(0) | PC・ネット関連 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。