検索
連載

君は100%?――Windows 10仮想マシンで発生した原因不明のCPU使用率問題山市良のうぃんどうず日記(118)(2/2 ページ)

2018年1月のWindows Updateは、Spectre/Meltdown問題で大変でした。まだ、PCベンダーからのマイクロコード提供待ちという状況でしょう(その対策されたはずのマイクロコードでも、問題が発生しているようです)。この問題とは関係ありませんが、筆者のテスト環境では2018年1月の更新で、とてもクレイジーなHyper-V仮想マシンに遭遇しました。同様の問題で悩んでいる人がいるかもしれないので、正常化までをレポートします。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

ネット切断でCPU使用率が改善、パッチのダウンロード&インストールで完了

 CPU使用率がどうにかならないか、いろいろ試した結果、ネットワーク接続を切断することで、ある程度CPU使用率が改善することが分かりました(ただし、若干高い状態)。エラーが発生するたびに、Windowsエラー報告が何かを送信しようと繰り返していたようです。そこで、別のPC(Hyper-Vホスト)でダウンロードした更新プログラムパッケージ(.msu)を仮想マシンにコピーし、ネットワークを切断した状態でインストールを試みました。更新プログラムのインストールには3時間ほどかかり、その後の再起動にはさらに40分かかりましたが、無事、2018年1月の累積的な更新の最新ビルドを適用することができました(画面4)。

画面4
画面4 ネット切断でCPU使用率が改善し、時間はかかったものの、更新プログラムパッケージのインストールも成功

 再起動後、Windows Updateを実行して残りの更新プログラムをインストールしました。今度はそれほど時間もかからず、CPU使用率も許容される範囲に抑えられました(画面5)。イベントビューアーで「システム」ログを確認すると、サービス強制終了の問題も発生していません。どうやら、全てが正常に動作しているようです。

画面5
画面5 Windows UpdateとCPU使用率が正常な状態に戻り、「システム」ログに大量に記録されていたエラーも解消した

 なお、CPU使用率が改善した後の最初のWindows Updateの前に、本連載の以下の回で紹介した「Windows Updateの正常化テクニック」(筆者の経験に基づくもの)を念のために実行しておきました。その効果が関係しているかどうかは不明です。

 今回はこれでWindows Updateを正常化できましたが、もし、Windows Updateの影響で正常に起動しなくなった場合の更新プログラムのアンインストール方法については、以下の記事を参考にしてください。

 仮想マシン環境では、仮想HDD(VHDやVHDX)をローカルマウントして、オフラインイメージに対して「DISM」コマンドを実行し、更新プログラムをインストールまたはアンインストールするという方法もあります。その方法については、以下の記事で紹介しました。

おまけ――「System32\CatRoot」は絶対に削除してはいけない!

 実は、今回のCPU使用率問題を解消するために、何度もチェックポイントを戻してさまざまな方法を試しました。その理由は、更新プログラムのインストールにあまりに時間がかかるため、途中で戻して別の方法を試してみたからです。結局、2018年1月の累積的な更新プログラムのインストールを完了するために、3時間40分待つ必要がありました。最終的なレポートは成功した操作だけをピックアップしたものです。

 さまざまな方法を試す中、決してやってはいけない操作ミスをしてしまいました。それは、「C:\Windows\System32\CatRoot」の削除です。筆者はWindows Updateを正常化する方法として、主に「C:\Windows\SoftwareDistribution」のリセット(再構築)だけを行います。しかし、以下のMicrosoftのサポート技術情報では、それ以外の操作を含む、より汎用的な手順が記されています。その中に「C:\Windows\System32\catroot2」のリネームがあるのですが、「catroot2」を「catroot」と見間違えたことと、リネームではなく、手っ取り早く削除してしまったことが重なって、大変なことになりました。

 「C:\Windows\System32\CatRoot」を削除して再起動すると、Windowsのシステムコンポーネント(.exeや.dll)やドライバが全て発行元不明のファイルとして扱われてしまうのです。例えば、「ユーザーアカウント制御(User Account Control:UAC)」のダイアログボックスは、通常の青帯のダイアログボックスではなく、黄色や赤帯の警告表示になります(画面6)。

画面6
画面6 「catroot2」を「catroot」と間違えて削除すると、Windowsのシステムコンポーネントやドライバの全てが信頼できない扱いに

 そして、「Windows Defender」のGUIは初期化に失敗します。また、その後のWindows Update後に重要なサービスが開始できずにブルースクリーン(Blue Screen of Death:BSoD)で停止してしまいました。見た目がおどろおどろしくて、マルウェアにでも感染したような感じです。

 「C:\Windows\System32\CatRoot」には、Windowsが信頼できるコンポーネントのデジタル署名を検証するために使用される「カタログファイル(.cat)」が格納されています。「C:\Windows\System32\CatRoot2」は再生成されますが、「C:\Windows\System32\CatRoot」はディレクトリが作成されるだけで中身は空っぽです。「C:\Windows\System32\CatRoot」にあったカタログファイルが消えてしまった、署名を検証できなくなり、信頼できないファイルとして扱われてしまったというわけです。

 Windowsのトラブルシューティングでは、コマンド操作が必要になる場合がありますが、このようなリスクが伴うことをあらためて考えさせられました。

 この問題をどうやって解消したか知りたいですか? 今回の場合、それはとても簡単なことでした。仮想マシンのチェックポイントを戻すだけです。物理マシンの場合は、同一OS、ほぼ同一構成のPCにある「CatRoot」の内容を問題のマシンにオンラインまたはオフライン(正常起動しない場合、Windows回復環境などを使用して)でコピーすることである程度解消すると思います。ただし、「CatRoot」を以前の状態に完全に復元できない限り、一部のファイルの署名検証で問題が残るかもしれません。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP:Cloud and Datacenter Management(Oct 2008 - Sep 2016)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows Server 2016テクノロジ入門−完全版』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

前のページへ |       
ページトップに戻る