ある日突然、自宅に置いてあるサーバー機が起動しなくなりました。
なんとなく調子が悪いと思って再起動したのがきっかけでした。
OSはWindows 10 Pro。
このブログを含めて様々なところで使っているので、その日から復旧するまでの数日、生きた心地がしなかったですね…。
とりあえずここには、復旧の備忘録として当時起きたこと、やったことを書いておきます。
※以下の手順ではシステムの深い部分に触ったりしています。よくもわからずに触ると今以上に悪化したり、最悪の場合Windowsそのものが起動しなくなる場合もあります。この記事の内容でいかなる損害が発生したとしても、当方は一切責任を負わないものとします。
~立ち上がらなくなるまでの経緯~
- サーバーをリモートで再起動
- ブログの管理サービスから「ブログが落ちてる」と連絡
- 再起動したんだからそりゃ落ちるだろ、と放置
- さらに1時間経っても復旧していないという連絡
- さすがにおかしいと思いリモートで繋ごうとするも、応答なし
- pingが通らない (Win 10は標準で通らない気もするけど)
- 画面つけたら青画面
- 事件発覚
とまぁ、こんな感じです。
~とりあえずやったこと~
1.再起動
もしかしたら運が悪くて起動しなかっただけかもしれません。
まずは落ち着いて、再起動を試みます。
サーバー機はUEFI起動なので、通常であれば、メーカーロゴの下に読み込み中のマークが出て、その後にサインイン画面が表示されるはずです。
…しかし、今回のケースでは、メーカーロゴの下に読み込み中のマークが出ると同時に、「Preparing Automatic Repair」(自動修復を準備しています)という文字が…。
さらにその後、その文字が「PCを診断中」と変わり、起動できませんでしたという青画面が表示され、再起動か詳細オプションを選ぶ画面になってしまっていました。
というわけで再起動ではうまくいきませんでした。
ちなみに、セーフモードも同様の挙動をし、起動できませんでした。
2.スタートアップ修復
詳細オプションを選ぶことができるのならば、スタートアップ修復が使えます。
Windowsが起動しない場合、このスタートアップ修復を1~3回程度動かすことで、起動できるようになることがあるようです。
と、いうわけで、5回ほどスタートアップ修復を動かしてみたのですが……何も変わりませんでした。
結論としては失敗なのですが、ここでスタートアップ修復をしていたことが、後々役に立つことになりました。
3.システムの復元
Windows XPの時代から、困ったときはシステムの復元をやってみようという試みが多かったような気がします。
もちろん、今回もシステムの復元を試してみました。
直前の復元ポイントに対してシステムの復元を実施し、見事成功…と思いきや、やはり起動しません。
どうやら、システムの復元では直すことのできない箇所が原因のようです。
4.ブートローダーの修復
Windowsが起動できない原因として、何らかの理由でブートローダーが壊れてしまった場合に、正常に起動できなくなるケースがあるようです。
ネットで情報を調べながらブートローダーを修復したりいろいろやってみたのですが、結局悪化しただけで、ろくなことになりませんでした。
今回のケースではブートローダーの修復は無関係なようなので、やらないほうがよいです。
5.スタートアップ修復の無効化
「スタートアップ修復の機能そのものがおかしいんじゃないの?」と疑い、スタートアップ修復の機能をオフにしてみることにしました。
詳しいことは以下のTechNetにあります。Windows 7用の記事ですが、Windows 10でも通用します。
なお、さっくりと書いていますが、この手順はWindowsの起動プロセス(Windows Boot Manager)をいじります。
いじり方を間違えると2度と起動しなくなりますので注意が必要です。
上記手順を実施後に再び起動を試みると、今度は正真正銘の(?)ブルースクリーンが出ました。
スクリーンショットが取れなかったので画像はありませんが、内容としては
- エラーコード:0xc0000242
- エラー原因:msrpc.sysが起動に必要だが読み込めない
というものだった気がします。
これが、今回起動しなかった根本の原因です。
6.診断ログを見る
スタートアップ修復なんかよりも先にやるべきだったのでしょうが、スタートアップ修復で出力されたログを見ることにします。
ログは「C:¥Windows¥System32¥LogFiles¥Srt¥SrtTrail.txt」にあるので、詳細オプションのコマンドプロンプトからメモ帳などで開きます。
(「notepad」と打ってEnterを押せばメモ帳が立ち上がります)
ログにはスタートアップ修復の試行回数や原因などが書かれています。
今回のケースでは、起動できない原因として
- C:\msrpc.sysが存在しないか壊れている
- C:\ksecdd.sysが存在しないか壊れている
となっていました。
どうやら、これらのファイルが原因のようです。
7.新しいファイルをコピーする
壊れているファイルが原因なのですから、まずはそのファイルを修復しなければなりません。
しかしながら、ファイルの修復はそう簡単にできるものではないです。
なので、壊れているファイルは動いている別のWindows 10から持ってくることにします。
このとき、かならず同じアーキテクチャのWindows 10から持ってくるようにします。x64ならx64、x86ならx86といった具合です。
でも、ファイルがどこにあるかわからなければ直しようがありません。
修復ログではCドライブの直下にあることになっていますが、現代のWindowsではCドライブの直下に重要なファイルを置くことなんてありません。
というわけで、ファイルの場所はコマンドを使って調べます。
C:\Windowsにディレクトリを移動し、次のコマンドを実行します。
dir /s /b <ファイル名>
このコマンドは、ファイル名に合致するファイルを、今いるディレクトリとサブディレクトリの中を再帰的に探すコマンドです。
いくつかファイルが見つかるかもしれませんが、目当てのファイルはWinSxSフォルダに入っていないファイルです。
今回壊れているとされたmsrpc.sysとksecdd.sysは、どちらもC:\Windows\System32\Driversにありました。
ファイルの場所は分かったので、今度は別のWindows 10からファイルを拝借します。
ありきたりなUSBメモリーにコピーしたいファイルを入れ、起動しない方のパソコンにUSBメモリを刺し、壊れているファイルに上書きします。
いちおう、バックアップはとっておいた方がいいかもしれません。
今回のケースでは、msrpc.sysがコピー元とコピー先で異なっており(壊れてる?)、ksecdd.sysは同一のものでした。
8.再起動する
壊れたファイルは直したので、通常通りWindowsの起動を試みます。
なお、途中でスタートアップ修復を無効化しましたが、あえて今はそのままにします。まだエラーがないとは限らないので…。
しばらく待つと、なんとなく挙動が怪しいですが、通常通りWindowsが立ち上がりました。
久しぶりのデスクトップ画面です。どっと肩の力が抜けました。
通常通り起動はしたものの、何らかの理由でシステムファイルが壊れたわけなので、まだ安心はできません。
システムログを見るなり、chkdskやsfcを走らせるなどして、故障がないか探ることをお勧めします。
もちろん、一番おすすめなのはWindowsの再インストールです。
HDDを取り替えてWindowsを入れ替え、きれいさっぱり始めるのが一番です。
画像もなく読みづらい記事ではありましたが、誰かの助けになればいいな、と思います。
といっても、今回のようにサーバー機が起動しなくなったらこの記事も見られなくなるわけですが……
システムの回復イメージを作っておけば、そこから復旧するのが最も簡単かもしれません。(試してないですが)
コメント