ずっと気になっていたことがある。
パソコンのWindowsが、もう何年もアップデートできていない。試みるたびに途中で失敗し、元のバージョンに戻ってしまう。どれだけ時間をおいて試しても失敗するので放っておいた。とりあえず使えていたから。
でもさすがに、そろそろ直したいと思った。
何が起きていたのか
エラーコードは 0x8007001F。調べると「デバイスが機能していない」という意味らしい。
ファイルが足りないとか、容量が足りないとか、そういう話じゃなかった。何かのデバイス(ハードウェア)に問題があって、アップグレードの途中で引っかかっていた。
ログをたどっていくと、怪しいものが2つ見つかった。
- 起動のたびに
damというドライバーが読み込めていない Intel XTUという古いソフトの残骸が、8個も壊れた状態で残っている
どちらもWindowsがアップグレードの直前に「全部のデバイスが正常か」を確認するチェックで引っかかる種類のものだった。
修復の流れ
Windowsには sfc(システムファイルチェッカー)と DISM という修復ツールが標準で入っている。管理者権限のターミナルから実行する。
dism /Online /Cleanup-Image /RestoreHealthsfc /scannow
実行すると、ログにこう出た。
Repaired file: winusb.sysRepaired file: bthmodem.sys
USB のドライバーが壊れていた。
winusb.sys は USB 機器全般に関わるシステムファイルで、壊れていても普段の使用では気づかない。しかし Windows のアップグレード時には厳密なチェックが入るため、ここで毎回引っかかっていたらしい。
あわせて整理したこと
Intel XTU というのは、Intelのオーバークロックツールで、過去にインストールした形跡があった。アプリ本体はとっくに消えているのに、ドライバーの残骸だけが壊れた状態で居座っていた。
これも Windows Update の邪魔をしていた可能性があるため、pnputil コマンドで削除した。
しかし、また失敗…。
残っていた本当の原因
落胆しつつもログを掘る。すると、Intel XTU の「ドライバーパッケージ本体」がまだ3つ残っていることが分かった。
一回目の修復では「デバイス」を削除したつもりでいたが、それを動かす「ドライバー」自体は残っていた。再起動すると、ドライバーが残骸のデバイスを再び呼び出してしまう。だから、何度やっても同じ状態に戻る。
ドライバーパッケージ3つを pnputil コマンドで削除。今度こそ、土台から消した。
結果
修復 → 再起動 → Windows Update を実行したところ、インストールが始まった。
数年間、失敗し続けていたものが、あっさり動いた。
やってみて思ったこと
パソコンの不具合は、「なんとなく使えているから」と放置しがちだ。でも、表面上は動いていても、内側では少しずつ壊れていることがある。
今回の USB ドライバーの破損がまさにそれで、USB は普通に使えていた。ただ、アップグレードという「精密検査」の場面だけで引っかかり続けていた。
健康診断をさぼっていると、気づいたときには積み重なっている。
