C0000218エラー(UNKNOWN HARD ERROR)を考える記事


C0000218とは?発生の状況発生環境データの救出修復方法解決策私のケース関連リンク集最後に

 注)この記事は私的なメモです。以下の情報に関しての正確性を保証するものではありません。あらかじめ承知の上で利用してください。

C0000218とは?

 このページに来られた時点でおおよその見当はつきます。ひとまずお察し申し上げます。
 C0000218はWindows2000がリリースされた当初から発生が確認されているエラーであり、にもかかわらず今にいたるまで完全な解決策が編み出されていないというWindows最凶クラスのエラーです。この原因不明の凶悪なエラー症状から、「死のエラー」という別称で呼ばれています。
 このエラー症状はWindows2000/XPにおいて、レジストリ部分のファイルの破損によってOSが立ち上がらなくなるものです。OSロゴが現れた後のブルーバック画面にエラーメッセージが白文字で表示され、以後リブートを繰り返します。なお、以下に表示されるであろうエラーメッセージを記述しますが、他にもいくつか存在すると考えられています。

STOP: c0000218 Unknown Hard Error
Hard Unknown Error
Beginning dump of physical memory. 
Physical memory dump complete. Contact your system administrator or technical support group for further assistance.
Stop 0xc0000218 (0xe11a30e8, 0x00000000, 0x000000000, 0x00000000) 
UNKNOWN_HARD_ERROR 
Stop: 0xc0000218 {Registry File Failure} 
レジストリは、ハイブ (ファイル) 
\SystemRoot\System32\Config\SYSTEM、そのログ、または代替ファイルを読み込めません。 
壊れているか、紛失したか、または書き込み不可能です。 
Stop : c0000218 {Registry File Failure}
The registry cannot load the hive (file):
\systemRoot\System32\config\Software or its log or alternate
It is corrupt, absent, or not writable
STOP: c0000218 Unknown Hard Error
Unknown Hard Error
Beginning dump of physical memory
Dumping physical memory to disk: *(countdown)
ネット上の画像1
ネット上の画像2
ネット上の画像3
ネット上の画像4

 なぜこの症状が発生するのかは以後の説明に譲りますが、これで解決したという確固たる方法も見つかっていませんし、必ずこうなるという環境も見つかってはいません。
 OS起動前にリブートを繰り返すエラーは「STOPエラー」と呼称されています。STOPエラーの一覧もご覧ください。
 なお、データの復旧に関しては、他にHDDを接続できるPCさえあれば問題なく行うことができます。重要なデータがある場合には、まずはデータを救出させることを優先してください。

発生の状況

 このエラーの発生は、Windowsが終了時にレジストリの変更を行うわけですが、HDDへのレジストリの書き戻しが終わる前にWindowsがシャットダウンされてしまい、そのためにOSが起動しなくなるというものです。
 そして、このエラーの発生の原因は3つに分けることができます。この原因によって、取るべき対処が異なってきます。

発生環境

 このエラーはWindows2000,XPで発生します(この環境以外では発生しない)。OSとの相性と言われる所以ですが、問題が発生しやすいケースを列挙します。

 古い報告例は2000年8月から確認されています。当時のエラー発生事例は比較的intel440BXチップセットとVIAで二分されていました(他のチップセットでも確認されている)。しかし、PentiumIII時代の古いチップセットであり、かつHDDとの相性が現在ほどシビアでなかったこともあってか、それほど多く報告はされていません。
 元々報告のあったVIAチップセットは現在においても、ユーザからの報告で多くを占めるようになっています。もちろんそれ(チップセット)だけでなく、HDDの高速化(ATA100になってから症状は発生している)・キャッシュの増加・ACPIの実装の仕方などによる要因の増加も原因として考えられています。故に、このエラーで悩まされる報告はむしろ増加傾向にあるといえなくもありません。
 それにしてもVIAチップセット全般で危険が生じるというのは、チップセットメーカーの少ないAthlonユーザにとっては深刻な問題です。
 さらに気になるのは、この不具合が常に起こるというわけではなく(常に起こっていたら回収は免れないはず)、結局のところは理由がわからないことです。
 確かにここあたりはマザーボードメーカーのチューンの仕方にもよるのでしょうが、それにしても原因が見えません。

VIAチップセットIDEドライバとの相性

 Googleで調べてみれば分かりますが、エラー発生の環境において、VIAチップセット利用マザーボードでの発生報告が多く見られます。
 指摘されているのがVIAのIDEドライバによる悪影響。真実はわかりませんが、VIAのIDEドライバをMSが認めていない(不適合となっている)というところに微妙な影響があるような気がします。
 シェアの少なさの割に報告が圧倒的に多いのが気にかかります。

Maxtor製HDDとの相性

 HDDが壊れていないかを確認する必要もあるので、リンク先のHDD診断ツールに関する記述を参考に、チェックをおすすめします(これは他社製HDDにおいても同様)。診断ツールの使い方についてもリンク先のページに譲ります。但し全プラッタをフォーマットする必要がありますので時間がかなりかかります。
 やはり報告例ではMaxtorが多いようです。とはいえ、このメーカーのシェアは高く、加えて他社製のHDDでもそれなりに報告があります。ACPIの実装の仕方の違い、というものがあるのならば、この説も確かに信憑性があるかもしれません。
 これが事実ならば、IDEの転送モードに関わるトラブルなのかもしれません。具体的には、@ITのIDEハードディスクの転送モードにかかわるトラブルを解決するには?が解決への一つのヒントになるような気がしなくもありません。
 HDDのせいでOSのレジストリ領域が壊れるというのは、キャッシュの多さに問題があるという可能性も指摘できますが、キャッシュの量に関わらずエラーは発生します。かといってキャッシュのないのHDDを使うことは現実的な選択肢ではありません。

データの救出

 C0000218エラーはレジストリのsystemハイブが損傷して発生するエラーであるため(HDD故障の場合を除く)、F8を押してWindows拡張オプションメニューを表示させ、セーフモードや前回正常起動時の構成 (正しく動作した最新の設定)を用いても起動することが不可能となります。
 但し、それ以外のデータは損傷しているわけではないため、データの救出は可能です。
 方法は4種類あります。

  1. HDDを他のPCにつなぐ
  2. KNOPPIXを用いる
  3. 別パーテーションにWindowsをインストールする
  4. 回復コンソールを用いる

 1の方法は、ハードディスクを外し、他のデスクトップに接続するだけでOKです。ただし、NTFSフォーマットの場合、9x系Windowsではファイルを読み込めないので注意が必要です。
 2の方法はKNOPPIXという、CDのみでブート可能なLinuxディストリビューションを用いてデータを救出する方法です。ノートPCなどだけの場合や、1台しかPCがない場合などでは強力な救出方法となります。
 3つ目の方法は壊れたWindowsと別のパーテーションに、Windowsを新規にインストールする方法です。新規にインストールしたPCからデータを救出できます。ただし、メーカー製のOEM版Windowsでは別パーテーションへのインストールができない場合があります。
 4つ目の方法はWindows回復コンソールを用いる方法です。ただ、回復コンソールを使う能力があるのなら、次の「修復方法」を参照のうえ、環境を復元することを推奨します。

修復方法

 回復コンソールを用いた修復方法について取り上げます。
 あらかじめ書いておきますが、これは暫定的な方法です。このエラーが頻発する状況では、抜本的な解決策にはなりません。ただし、一時的な切り抜けとしては有効といえます。特に偶発的なC0000218の場合にはこの方法は有効と思われます。
 修復の前段階としてまずやっておくべきことがあります。Windowsのインストールディスクを挿入し、Windows Setup画面まで来たらRを押し、以下指示に従って管理者(Administrator)でログインします。そして該当ドライブ(パーティション)に移動して「chkdsk /r」と入力してください。不良セクタが原因でのエラーならば、これでひとまずハードディスクを安全に使えるという保険をかけることができます。その上で作業に取り掛かってください。
 Windows回復コンソールについては「マイクロソフト サポート技術情報 - 229716」及び「マイクロソフト サポート技術情報 - 307654」を参照してください。
 以下、個別に言及していきます。但し私自身は経験がありませんので(従って確実に修復できるとは保証できません)、Microsoftの技術情報をしっかりと読んで下さい。実際、修復は極めて困難な作業となります。

レジストリのバックアップがある場合

 回復コンソールを用いて問題のレジストリファイルを削除し、バックアップされているレジストリファイルをコピーします。コマンドを打つことになるので、上記の技術情報を参考に修復作業を行ってください。
 レジストリの保存場所は「c:\windows\system32\config\」以下にあります。以下に書くWindowsXPの修復の方法を重ねて参照してください。

レジストリのバックアップがない場合

WindowsXPの場合

 WindowsXPの場合においては、レジストリ破損時の修復の方法が「レジストリの破損により Windows XP を起動できなくなった場合の回復方法」に詳細に記述されていますので、これに従ってレジストリの修復を行うことが可能です。
 但しOEM版(メーカーの製品は全てこれ)の場合、この方法を用いないようMicrosoftが警告しています(リンク先参照)。そもそも、メーカー製の場合はまずメーカーに問い合わせましょう。
 流れとしては、

  1. 回復コンソールでのバックアップと削除と暫定パッチ
  2. システムの復元ファイルからレジストリ情報を取り出す(NTFSの場合は少し厄介)
  3. 再び回復コンソールを用いて最後のレジストリファイルに置き換える

 といった感じになります。
 レジストリのバックアップがある場合の修復方法は、3の作業だけ行えばいいということになります。
 画像のついたわかりやすい説明として、JOY Computerによる「回復コンソールを使用して、問題を解決するには」も紹介しておきます。

Windows2000の場合

 回復コンソールを用いて、System.alt を使用してシステム ハイブを修復するを参考に、破損したSystemファイルをSystem.altファイルで置き換えます。
 この方法についてはpapalagiさんが書いたものを参考にしたものです。感謝。

上記の方法で失敗する場合

 これらの方法で失敗した場合、別のパーティションにWindowsの再インストールを行います。その上で再インストールしたレジストリ情報を取り出し、「%SystemRoot%\System32\Config」にあるレジストリハイブを回復コンソールを用いて手動で復元します。FAT32ファイルシステムにインストールされていた場合は、回復コンソールでなくともOSから上書きが可能です。
 つまるところ、破損したレジストリを削除して新しくインストールしたWindowsのレジストリで置き換えるのです。
 方法は、「マイクロソフト サポート技術情報 - 322755」を参照ください。
 この場合、明らかにレジストリの情報に矛盾が生じていますので、早急に再インストール作業を行うなどの対処をされることを勧めます。ドライバの入れ直しだけで使えるようになるのならば、それはそれでいいという考え方もあるでしょうが、このエラー以外の爆弾を抱えることになるので注意が必要です。念のため申し添えておきますが、この方法で修復してもまともに動作しない可能性があります。

解決策

 解決されたという方のページもいくつか拝見しました。しかし残念ですが、どれも特に決め手に欠ける気がします。
 上記の修復方法についても、原因がわからなければどうしようもない気がします。またあの青い画面になって復旧作業を行わなければならないのでは修復した甲斐がないというものです。
 ただ、いくつかの対策が頼りないとはいえ編み出されているようです。

HDDのジャンパ設定

 これをどうにかすることで何とかなったという例もあるようです(Maxtor製の場合)。
 Capacity Limitationジャンパ(J46)を外す、とあります。
 仁義なき戦い<代理戦争>@Windows2000に詳細が載っていますので、これを頼りに設定を変えてみることも考えてみましょう。
 WinFAQのアーカイブにも「Maxtorのジャンパ設定に関する記事」があります。
 が、極めて望み薄であると考えておいた方が良いでしょう。この程度で直れば苦労しません。

Memory cache を disableにする

 BIOSで設定できるらしい。おそらくHDDのキャッシュのことだろう。ただ、パフォーマンスの低下は避けられないと思われる。
 ここまで妥協しなければならないというのは、絶対におかしい。普通の使い方で壊れるからノロノロしていても我慢するなんて、そんなことは私には納得できない。それは消費者側が意図して買ったモノではないはずだ。

コンピューターの電源を影響がないように切る

ACPIを無効にする

 WinFAQ内のWindows 2000/XP を「コンピュータの電源を切ることができます」でとめるには?を参照してください。これによってシャットダウンの制御をOSからユーザ側に移すことが可能になり、HDD書き込み前のシャットダウンを回避することが可能となります。端的に言えば、ACPI機能を無効にすると言うことになります。
 やったことがないですが、おそらく唯一の解決策です。とはいえ、ここまで面倒なことをしなくてはならないのでしょうか。
 なお、マザーボードによってはBIOSでACPI/APMを無効にすることもできるかもしれませんが、可能な場合でも再インストールが必要とされています。

シャットダウン時、サービスに終了遅延時間を与える

 WinFAQのシャットダウン時、サービスに終了遅延時間を与えるには?から引用します。

  1. [スタート]−[ファイル名を指定して実行] からregeditを起動します。
  2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Controlを開きます。
  3. [編集]−[新規]−[文字列] で WaitToKillServiceTimeout を作成します。
  4. WaitToKillServiceTimeout をダブルクリックし、データに 20000 より大きい値を設定します。(タイムアウト遅延時間をミリ秒で指定します。)

 なるべく大きな値を設定することでシャットダウンを遅くし、HDDのキャッシュからプラッタへの書き込み時間に余裕を与え、レジストリの破損を防ぐというものです。
 これによってかなり安全性を上げる事が可能です。しかし確実といえないところが痛いところです。
 実際にダメだった方がいらっしゃいます。ダメだった場合にどうなるかということを想像するだけで、実用性は厳しいものといえるでしょう。

IDEケーブルのPinを統一、もしくは80Pinのものを用いる

 私はこの方法で安定して動かせるようになりました。ドライブとHDDを接続するIDEケーブルを80Pinのものに変更してみてください。
 あくまで私の例なので、解決する保障はありません。
 また、SerialATAの場合はケーブルの種類は一つですので、お手上げです。

ファイルシステムをFAT32にしてインストールする

 巷で所々に出てくるFAT32解決策です。単にFAT32でフォーマットしてインストールするだけです。
 が、私の場合にはこの方法は通用しませんでした(一瞬でご臨終)。通用しない方も多数であり、試してみる価値はあっても過度の期待は禁物でしょう。
 但し、セキュリティレベルの低いFAT32ファイルシステムは、復旧を楽に行えるということを付記しておきます。

レジストリ書き換え時には常に再起動してからシャットダウンする

 常に気をつけることができるのならば可能です。
 が、「アプリの設定」「ユーザの追加」「壁紙・スクリーンセーバーの変更」「パーティションの設定」「サービスの停止・開始」などなど、少し触れられるだけでレジストリは変更されるわけです。これらのことを常に気をかけ、何らかの作業をした場合には再起動した後、必ず起動しなおしてシャットダウン。できる方はやってください。常にブルーバックの恐怖を背後に受けていてもいいのならば。私にはムリです。
 っていうか、それ解決策違う。

HDDだけ別の電源につなぐ

 一考に値します。

Windows2000,XPを使わない

 ・・・・・・・・・・・・

私のケース

 参考にですが、私の体験に関して記述してみます。
 AthlonXPTM2800とASUS A7V600(standerd)とMaxtor 6Y080M0の組み合わせで当初発生しました。インストールが無事に終了するわけですが、シャットダウンすると次に起動した時には件のバックブルー画面となって動きを止めてしまうのです。
 マザーに付属しているドライバCDからRAID関連のドライバを入れることで何とかシャットダウンしても大丈夫になりましたが、少しシステム領域に関わるところの設定を変えただけでブルーバック画面へと逆戻りしました。例としてパーティーションを切るとか、ユーザーの追加などです。
 メモリチェックは問題なく、ビデオカードは他で動いていたものを流用して使ったものも問題なく動き、HDDもスキャンディスクではエラーはありませんでした。NTFSがダメといううわさを聞いて、FAT32でインストールしてみたものの、OS即死に変わりなく。
 結局ダメなので前に使っていたDuron700で用いていた古い20GBのHDD(データはそのまま)を用いることで何とか動かしていたわけですが、その遅さに耐えられなくなり、そのHDDをつないだまま6Y080M0にインストールを行いました。理由はわかりませんでしたが、2台で動かすことによって安定性が増し(つなぐ以外に特別な事はしていません)、ドライバのインストールやパーティーション分割、ユーザーの追加、さらにはSP4を当てても問題なく推移し、これで大丈夫だと思ってOFFICEをインストールしました。しかしここで例のブルーバック画面に逆戻りしたのでした。
 これら私の経験上のブルーバック発生条件は、レジストリ書き換えの後のシャットダウンにあります。再起動では問題は発生しません(電源が切れることがないから、と予想される)。また、レジストリの書き換え量が多くなるほどこの危険性が高まります。また、HDDの駆動台数が少ないほど危険性が増します。古いHDDも1台で動かしていて最終的に動作を止めました。
 古いHDDと組み合わせて使うと安定性が増すようにも見えます。2台組み合わせることで安定したという報告もあるようなので、HDD監視が行き届きやすくなるということなのでしょうか。理解できない現象です。
 SerialATAに問題があるのではないかと疑ってMaxtor製の6Y080L0を購入して試してみましたが、今度は全く違うエラーが表示されて動作しなくなりました。これがVIAのチップセットによる影響なのかは判明しませんでしたが、これがダメだったことから最終的にはサポートへの委託に切り替えることにしました。
 で、サポートから帰ってきたわけですが、症状が再現されないという報告とともに戻ってきました。そして電源を入れかえて再びトライしてみたところ、やはり再現されるという嬉しくない結果になりました。
 隣席の方が、IDEケーブルのPinが異なっていることに気づき、それを合わせるという方法を提案してもらい、80Pinの(高速な)IDEケーブル(40Pinと80Pinという2種類が存在する)で統一したところ、IDEのHDDにインストールすることに成功。今まで良くしていた「カシャン」と言うHDDの音もしなくなって、今現在は安定したように感じています。
 が、このマザボがSerialATA対応にもかかわらず、このインストールは結局うまくいかずにおわっています。

関連リンク集

C0000218関連のスレッド

Windows.FAQ main page内の、2000/XP 掲示板 旧過去ログ検索結果
〜数多くの問題症状がユーザーによって寄せられるWinFAQの掲示板です。私が調べた時点では109個ものC0000218の記事がヒットしました。必読です。
また、過去ログでもっと古い方は検索がつかえませんが、これらよりもさらに貴重な資料が埋まっています。

C0000218関連の体験記事

2003PC構築顛末記
〜インストール時の症状やエラーへの対策や対応を書かれています。情報が多いです。
Linernotes
〜原因・回避方法についてかなり綺麗にまとめられています。
朝顔日記
〜やはりOSがお亡くなりになった方の体験記。電源を意図したとおりに落とす方法や、簡単なバックアップの取り方などについて記載されている。
きまぐれ日記
〜HDDを変えて調査を行われたようです。このエラーが出ている場合、HDDに負担がかかっていると思われます。注意。
LOGIC BLUEBIRD
〜復旧に成功されていますが、レジストリのバックアップが古く、ドライバの再インストールに追い込まれています。
/var/log/hdk.log
〜復旧に成功されている体験記。
俺様のコンピューター
〜ここでは電源の交換で復活しています。
Windowsの再インストールなしにマザーボード交換を行う
〜異常発生時のマザーボード交換の関連記事
徒然庵
〜この方はSeagateとVIAだったようです。
何気ない一日のこと。
〜復旧に関した少し踏み込んだ情報あり
Hi-Lo
〜Windows2000をシステム修復ディスクを作る方法で復旧に挑まれた方のページです

MicrosoftによるC0000218対応

マイクロソフト サポート技術情報 - 830084
Windows XP インストール時の "STOP: c0000218 {Registry File Failure}" エラー メッセージ
〜XP用の記事ですが、Win2000も同様と考えて差し支えないです。
マイクロソフト サポート技術情報 - 880636
Windows XP を起動できない場合の対処方法
〜復旧方法について詳細に書かれています。
マイクロソフト サポート技術情報 - 314874
STOP 0xC0000218 エラーのトラブルシューティング
〜こちらは回復コンソールを用いた復旧方法に関する詳細です。

消失した記事を読む

Internet Archive: Wayback Machine
〜リンク先の消失の場合には、こちらのサイトをご利用ください。

最後に

 C0000218エラーの原因はいくつかのサイトで取り上げられているものの、情報自体が少なく、こうだと言い切れるほどのものはありません。よって、ここに掲載した情報の一部が間違っている可能性は極めて高いです。この記事を参考にして発生したいかなる損害に対しても筆者は責任を負うことはできません。
 この記事を書くにあたっては、被害に遭われた多くの方々の情報(サイト・掲示板)を参考にさせていただいています。この場を借りてお礼申し上げます。
 なおこのページにおいてはここに載せた情報以上の対応はできませんが、他の掲示板に投稿される際や、日記やBlogでこの問題について触れられる場合、状況の発生したPCの環境を詳しく書かれると、後で参照する私が助かります。
 この記事に対するコメントなどがありましたら、>iktrycアットマークgmail.com<まで。
 また、はてなID「dim」に投げ銭することでも連絡を取ることができます。

更新履歴

2004年5月09日 公開
2004年5月13日 HDD診断ツールについて追記
2004年5月17日 私のケースについて追記
2004年5月22日 校正
2004年6月16日 エラーメッセージについて追加
2004年6月25日 WinFAQの検索結果ページへのリンクに変更
2004年8月09日 回復コンソールについて記述を追加
2004年8月11日 修復方法として回復コンソールについての記述を分離・追加
2004年8月15日 FAT32とACPI(手動シャットダウン)などの記述を追加。
2004年8月28日 関連リンクの更新・解決策について追記
2004年9月03日 文頭に注意書きを追加・エラーメッセージと解決策を追記
2004年9月04日 さらにあちこち追記
2004年9月12日 このエラーについての説明文をいくつか差し替え・回復コンソールの紹介ページを変更
2004年9月19日 IDEの転送モードに関して、Maxtorのところに追記
2004年9月20日 Windows2000の復旧方法・解決策について新しい手法を追記
2005年1月02日 参考サイト更新
2005年1月03日 データ救出方法の記述を分離:追加
2005年4月20日 発生の状況について分野ごとに記述・リンク切れを削除

報告書に戻るTOP PAGEに戻る