Windows 11のエッジPCで、次のような症状が発生しました。
Power ON
↓
BIOS
↓
Windowsロゴ
↓
ブラックスクリーン
↓
ログイン画面が表示されない
BIOSは通過し、Windowsロゴも表示されます。
しかし、ログイン画面へ切り替わる直前で画面が真っ暗になり、そのまま操作できなくなる状態です。
今回はこの問題を、
- セーフモード
- Windowsのブートログ
- イベントビューアー
- Microsoft Basic Display Adapter
の順で切り分けました。
最終的には、Intel GPUドライバー、またはその周辺のグラフィックススタックが関係している可能性が高いところまで原因候補を絞ることができました。
同じように、
- Windowsロゴまでは表示される
- ログイン画面が出ない
- 起動途中でブラックスクリーンになる
- セーフモードなら起動できる
という症状が出ている場合の参考になればと思います。
環境
今回の対象は、現場に設置して長期間無人運用するWindows 11 ProのエッジPCです。
一般的なデスクトップPCとは少し目的が異なり、
新機能よりも、長期間同じ状態で安定して動くこと
を重視しています。
なお、今回の切り分け方法自体は、一般的なWindows 11 PCでも利用できます。
症状:Windowsロゴの後でブラックスクリーンになる
起動時は次の状態でした。
電源ON
↓
BIOS表示
↓
Windowsロゴ表示
↓
ログイン画面へ移行
↓
ブラックスクリーン
再起動しても同じ症状が再現します。
ここで最初に注意したのは、
ブラックスクリーンだからといって、Windowsそのものが起動していないとは限らない
という点です。
Windowsは動いているものの、
Windows
↓
グラフィックスドライバー
↓
ディスプレイ出力
のどこかで問題が発生し、画面だけ表示できなくなっている可能性もあります。
そのため、いきなりWindowsを再インストールするのではなく、
どこまでは正常に動いているのか
を順番に確認しました。
1. セーフモードで起動できるか確認する
最初に行ったのは、Windowsのセーフモード起動です。
結果は、
セーフモードでは正常に起動できました。
ここで原因候補をかなり絞ることができます。
セーフモードでは、通常起動時に読み込まれる一部の
- デバイスドライバー
- サービス
- スタートアップ
- GPU固有の機能
などが使用されません。
そのため、
通常起動
↓
ブラックスクリーン
セーフモード
↓
正常起動
となる場合、
Windowsそのものやストレージ障害だけではなく、通常起動時に追加で読み込まれる要素を疑う
方向に進めます。
今回の場合、さらに重要だったのがブラックスクリーンになるタイミングです。
Windowsロゴ
↓
ログイン画面へ切り替わる
↓
ブラックスクリーン
ログイン画面への移行時は、グラフィックス関連の処理も本格的に動作するため、GPUドライバーを原因候補の一つとして調べることにしました。
2. ntbtlog.txtで起動時のドライバーを確認する
次にWindowsのブートログを確認しました。
ブートログを有効にすると、以下のファイルが作成されます。
C:\Windows\ntbtlog.txt
ここには、Windows起動時のドライバー読み込み状況が記録されます。
今回特に確認したのは、グラフィックス関連のドライバーです。
| ファイル | 役割 |
|---|---|
igdkmd64.sys |
Intel GPU関連ドライバー |
dxgkrnl.sys |
DirectX Graphics Kernel |
BasicDisplay.sys |
Microsoft標準の基本ディスプレイドライバー |
BasicRender.sys |
Microsoft標準の基本レンダリングドライバー |
今回のログでは、
igdkmd64.sys
がロードされていることを確認しました。
また、
BasicDisplay.sys
BasicRender.sys
も確認できました。
一方で、
dxgkrnl.sys
については、複数の
NOT_LOADED
という記録がありました。
NOT_LOADEDだけで原因と判断しない
ここは注意が必要です。
ntbtlog.txt に
NOT_LOADED
があったからといって、
そのドライバーが故障している
とは断定できません。
ブートログには、ドライバーの読み込み順序や条件によって NOT_LOADED が記録される場合もあります。
そのため、
dxgkrnl.sys に NOT_LOADED がある
↓
dxgkrnl.sys が原因
とは判断しませんでした。
今回ブートログから得たのは、あくまで
起動時にどのグラフィックス関連コンポーネントが動いているかを確認する材料
です。
この時点で分かっていたのは、
- 通常起動ではログイン画面直前でブラックスクリーン
- セーフモードでは正常起動
- Intel GPUドライバー
igdkmd64.sysが使用されている - グラフィックス関連コンポーネントをさらに確認する価値がある
ということでした。
3. イベントビューアーでブラックスクリーン発生時刻を確認する
次にイベントビューアーを確認しました。
イベント ビューアー
↓
Windows ログ
↓
システム
重要なのは、エラー一覧を闇雲に見るのではなく、
ブラックスクリーンが発生した時刻の前後
を見ることです。
今回、グラフィックス関連の仮説を確認するため、主に以下のキーワードやイベントを確認しました。
Display
dxgkrnl
Kernel-Video
igfx
また、ディスプレイドライバー関連でよく確認されるものとして、
Event ID 4101
も確認対象にしました。
ただし、Event ID 4101が存在しないからといって、
GPUドライバーは正常
とは言い切れません。
イベントビューアーも、単独で原因を決定するものではなく、他の結果と組み合わせて判断する材料として使用しました。
4. ここまでの情報を整理する
ここまでの状態を整理すると、次のようになります。
通常起動
↓
ログイン画面直前でブラックスクリーン
+
セーフモード
↓
正常起動
+
ntbtlog.txt
↓
Intel GPUドライバーがロードされている
+
発生タイミング
↓
画面描画が切り替わる付近
この結果から、
通常起動時のグラフィックスドライバー周辺を疑う
という仮説を立てました。
ただし、この段階ではまだ仮説です。
そこで次に、
GPU固有のドライバーを使わなければ症状が変化するか
を確認しました。
5. Microsoft Basic Display Adapterで比較する
今回の切り分けで最も大きな判断材料になったのが、
Microsoft Basic Display Adapterとの比較
です。
通常は、
Windows
↓
Intel GPU Driver
↓
Intel GPU
という構成で動作しています。
そこでIntel GPU固有のドライバーを使用する構成から離れ、
Microsoft Basic Display Adapter
を使用する方向へ構成を変更しました。
イメージとしては、
Windows
↓
Microsoft Basic Display Adapter
↓
基本的な画面表示
となります。
Microsoft Basic Display Adapterでは、GPU固有の高度な機能や最適化は使用しません。
そのため、
Intel GPU Driver
↓
ブラックスクリーン
Microsoft Basic Display Adapter
↓
正常起動
となれば、
Intel GPU固有のドライバーを通る経路に原因が存在する可能性
をかなり高めることができます。
6. Basic Display Adapterでは症状が改善した
実際に比較したところ、
Microsoft Basic Display Adapterを使用する構成では、ブラックスクリーンが改善しました。
今回の切り分けでは、これが最も強い判断材料になりました。
結果をまとめると、
Intel GPU Driver
↓
ブラックスクリーン発生
Microsoft Basic Display Adapter
↓
ブラックスクリーン改善
となります。
これまでの結果も合わせると、
- セーフモードでは正常
- 通常起動ではブラックスクリーン
- 発生タイミングがログイン画面直前
- Intel GPUドライバーが通常起動時に使用される
- Basic Display Adapterでは症状が改善
という状態です。
そのため、
Intel GPUドライバー、またはIntel GPUドライバーを含むグラフィックススタック周辺が関係している可能性が高い
と判断しました。
もちろん、
Basic Display Adapterで直った
↓
Intel GPUそのものが故障している
とまでは断定できません。
ドライバーのバージョン、Windowsとの組み合わせ、設定、更新履歴なども関係する可能性があります。
そこで次に、GPUドライバーのバージョン履歴を確認しました。
7. GPUドライバーのバージョン履歴を確認する
確認したのは主に以下です。
- 現在のIntel GPUドライバー
- 以前使用していたドライバー
- ドライバーが変更された日時
- OEM/PCメーカー提供ドライバー
- Intel側のドライバー
- Windows Updateによる更新履歴
特に重要だったのは、
現在何が入っているかだけでなく、いつ変わったかを見る
ことです。
例えば、
8月1日
GPUドライバー更新
8月2日
ブラックスクリーン発生開始
であれば、かなり重要な手掛かりになります。
PC側の設定を変更していなくても、Windows Updateによってデバイスドライバーが更新されることがあります。
そのため、
障害が発生し始めた時期
↓
Windows Update履歴
↓
ドライバー更新履歴
を並べて確認すると原因を追いやすくなります。
エッジPCでは「最新版=最適」とは限らない
一般的なPCトラブルでは、
ドライバーを最新版へ更新してください
という対応がよくあります。
もちろん、セキュリティ修正や不具合修正が含まれているため、更新は重要です。
一方で、長期間無人運用するエッジPCでは、
最新版
だけでなく、
検証済み
安定している
構成が変わらない
再現性がある
ことも非常に重要です。
例えば、
安定しているドライバー
↓
24時間正常稼働
↓
Windows Update
↓
GPUドライバー変更
↓
ブラックスクリーン
となれば、最新になったとしても運用上は問題です。
そのためエッジPCでは、
安全に更新すること
と
すべてを常に最新版にすること
は分けて考える必要があります。
一度直してもWindows Updateで構成が変わる可能性がある
今回さらに問題になったのが、
一度安定したドライバー構成を作っても、Windows Updateによって再び変更される可能性がある
ことです。
イメージとしては、
問題のあるGPUドライバー
↓
安定するドライバーへ変更
↓
正常動作
↓
Windows Update
↓
GPUドライバー更新
↓
再びブラックスクリーン
です。
つまり、
どう直すか
だけではなく、
直った状態をどう維持するか
まで考える必要があります。
これは、無人運用するPCでは特に重要です。
今回の切り分けフロー
最終的な切り分けの流れは次のようになりました。
Windowsロゴ後にブラックスクリーン
↓
セーフモード起動
↓
正常起動
↓
通常起動固有の要素を疑う
↓
ntbtlog.txt確認
↓
GPU関連ドライバーを確認
↓
Event Viewer確認
↓
発生時刻周辺のDisplay /
dxgkrnl / Kernel-Video /
igfxなどを確認
↓
グラフィックス周辺を疑う
↓
Microsoft Basic Display Adapter
で比較
↓
症状改善
↓
GPUドライバー周辺へ原因候補を絞る
↓
ドライバーのバージョン・
更新履歴を確認
ブラックスクリーンが発生したからといって、いきなりWindowsを再インストールするのではなく、
セーフモード
↓
ログ
↓
イベント
↓
構成変更による比較
という順番で確認すると、原因候補を絞り込みやすくなります。
まとめ
今回特に有効だったのは、
Microsoft Basic Display Adapterに変更したときに症状が変わるか確認すること
でした。
セーフモードが正常だからといってGPUドライバーが原因とは断定できません。
ntbtlog.txt に NOT_LOADED があるだけでも断定できません。
しかし、
セーフモードでは正常
+
通常起動ではブラックスクリーン
+
ログイン画面への切り替え時に発生
+
Basic Display Adapterでは改善
という複数の結果を組み合わせることで、
GPUドライバー周辺まで原因候補をかなり絞り込むことができました。
エッジPCのような長期無人運用環境では、
問題を直すだけでなく、直った構成を維持すること
も重要です。
そして今回、この後もう一つ問題が発生しました。
次回:Windows UpdateでGPUドライバーが戻された
安定するGPUドライバー構成を作っても、
Windows Updateによって別のGPUドライバーへ変更される
ことがあります。
次回は、
Windows UpdateでGPUドライバーが再び更新され、対策した構成が戻ってしまった事例
についてまとめます。
主に、
- Windows UpdateによるGPUドライバー更新
- Intel/OEMドライバーの違い
- Hardware IDの確認
- ドライバー更新をどう制御するか
- 安定した構成をどう維持するか
を扱います。
本記事は、実際のエッジPC運用・障害対応経験をもとに、機密情報に配慮して一部を一般化・匿名化しています。
特定の組織、施設、製品、システムについて説明するものではありません。