Windows Server 2019で発生するDISMエラー0x800f081fの解消方法

日々のサーバー運用で、Windows Updateやシステムの安定性を維持するためにDISMコマンドを活用している方も多いのではないでしょうか。しかし「0x800f081f (CBS_E_SOURCE_MISSING)」のエラーで修復がうまくいかない場合、対処方法が分からずに困ってしまうこともあります。そこで本記事では、問題の原因や具体的な解決策、実行するうえでの注意点を詳しく解説します。

DISMエラー「0x800f081f (CBS_E_SOURCE_MISSING)」の概要

Windows Serverの運用において、DISMコマンドは破損したWindowsイメージを修復するための非常に有用なツールです。しかしながら、実行中に「0x800f081f (CBS_E_SOURCE_MISSING)」というエラーが発生することがあります。このエラーは、修復に必要なソースファイルが見つからない場合に起こるのが特徴です。

エラーが起きる背景

DISMコマンドでは、基本的に破損したシステムファイルを修正する際に、同じバージョンのWindowsイメージから該当ファイルを取得して修復します。通常であれば、ローカルの「C:\Windows\WinSxS」フォルダーやWindows Updateサーバーから必要なコンポーネントをダウンロードする仕組みになっています。しかし、何らかの理由でこれらのソースが利用できない、もしくは整合性が取れない場合に「0x800f081f (CBS_E_SOURCE_MISSING)」が返されることがあります。

Windows Updateにも影響が出る理由

このようにDISMによるイメージの修復がうまくいっていない状態では、Windows Updateの更新プログラムのインストールでも整合性が合わずエラーが発生し、更新が完了しないケースが多く見られます。したがって、まずはDISMでの修復を優先して行い、システムファイルを正常な状態に戻しておくことが重要です。

よくある原因とエラーの根本

原因1: システムファイルの破損

システムドライブ(Cドライブなど)におけるディスク障害や、過去の不完全なWindows Updateによって、Windowsコンポーネントが破損しているケースがあります。DISMは破損部分を修復するための仕組みですが、その破損状態が大きかったり、既に必要なソースが参照できないほど失われているとエラーを引き起こします。

原因2: バージョン不整合

DISMで参照するソースは、基本的に同じビルドバージョンのWindowsイメージである必要があります。例えば、Windows Server 2019のビルドが同じであっても、累積更新プログラムなどが異なる状態だとソースとして正しく利用できない可能性があります。

原因3: 更新プログラムの一部欠落

Windows Updateで適用途中のパッチが何らかの理由で欠落し、その結果として一部のシステムファイルが不整合に陥ることがあります。中途半端な状態ではコンポーネントのバージョンが食い違い、DISMがソースを正しく特定できない場合があります。

対処方法の概要

他の正常なマシンのWinSxSを活用する

最も直接的な解決策は、同じバージョンのWindows Server 2019で正常に動作しているマシンから「WinSxS」フォルダーをコピーし、それをソースとしてDISMコマンドを実行する方法です。具体的には以下のようなコマンドを用います。

Dism /Online /Cleanup-Image /RestoreHealth /Source:"コピー先パス\WinSxS" /LimitAccess
  • /Online は現在起動中のOSに対して操作を行うオプションです。
  • /Cleanup-Image はWindowsイメージのクリーンアップや管理に関するオプションを指定します。
  • /RestoreHealth で破損したイメージの修復を実施します。
  • /Source: には、正常なマシンから取得したWinSxSフォルダーのパスを指定します。ネットワーク経由でフォルダーを参照できるようにしているなら、そのパスを記述しても構いません。
  • /LimitAccess はインターネット上のWindows Updateを参照しないようにし、あくまで指定されたソースファイルにだけアクセスするように限定するオプションです。

バージョン互換を確保する

ソースとして利用するWinSxSフォルダーは、基本的に以下の条件を満たしている必要があります。

  • 同じエディション(今回であればServer 2019 Standard)
  • 同じビルド番号(10.0.17763系など)
  • できるだけ近い、あるいは同じ累積更新プログラムが適用されている

もしバージョンが大きく異なると、修復プロセス中に別のエラーが発生することがあり、さらに問題が複雑化する恐れがあります。

具体的な手順解説

以下の流れで作業するとスムーズに対応が進むことが多いです。

手順1: システムのバックアップ

障害対応時のセオリーとして、まずはシステムイメージのバックアップを取得しましょう。サードパーティ製のバックアップソリューションやWindows Serverバックアップ機能を使って、少なくともCドライブはフルバックアップしておくことをおすすめします。何らかの理由で修復が失敗したり、別の不具合が発生した場合でも、バックアップからのリストアで元の状態に戻すことができます。

手順2: コピー元の健康なサーバー準備

次に、同じWindows Server 2019 Standardで、アップデートが正常に適用され、DISMコマンドで問題が生じていないマシンを用意します。コピーする際のポイントは以下です。

  • バージョンを確認するためには、winver コマンドや systeminfo コマンドでビルド番号とエディションをチェック
  • 累積更新プログラムを含む更新状況は、[設定] → [更新とセキュリティ] → [Windows Update] から確認

手順3: WinSxSフォルダーの取得

コピー元のマシンにある「C:\Windows\WinSxS」フォルダーを、そのままフォルダーごとコピーすることが理想的です。サイズが非常に大きいケースもあるため、外付けストレージやネットワーク共有を活用して慎重にコピーしましょう。コピー後、アクセス権が正しく引き継がれているか確認してください。

手順4: DISMコマンド実行

コピーが完了したら、問題の発生しているマシンで、管理者権限のコマンドプロンプトまたはPowerShellを起動します。そして、以下のようにコマンドを入力します。

Dism /Online /Cleanup-Image /RestoreHealth /Source:"D:\repair\WinSxS" /LimitAccess

上記例では「D:\repair\WinSxS」というローカルフォルダーをソースにしています。ネットワーク経由で直接参照する場合は、UNCパス(例:\\servername\share\WinSxS)を指定することも可能です。

手順5: 修復結果の確認

エラーが出ずに完了したら、イメージの修復が成功しているかどうかをさらに確認します。次のコマンドを実行し、再度スキャンだけを行い問題が検出されないかをチェックします。

Dism /Online /Cleanup-Image /ScanHealth

もし問題があれば詳細が表示されます。さらに念のため、

sfc /scannow

でシステムファイルチェックも実行し、破損ファイルが検出されないことを確認しましょう。

追加対策とトラブルシューティング

Windows Updateコンポーネントのリセット

DISMでイメージが修復できたとしても、Windows Updateの構成ファイルが不完全な状態のままだと、更新に失敗する可能性があります。以下のようなコマンドでWindows Update関連のサービスを停止し、SoftwareDistributionやCatroot2フォルダーをリネーム(バックアップ)してから再度サービスを開始するといった方法を取ると、Windows Updateの初期化を行うことができます。

net stop wuauserv
net stop cryptSvc
net stop bits
net stop msiserver

ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old

net start wuauserv
net start cryptSvc
net start bits
net start msiserver

これによって、Windows Updateに関するキャッシュがリセットされ、新しい状態でアップデートを取得・適用できるようになる可能性が高まります。

CBSログ・DISMログの分析

エラーが発生する場合、以下のログファイルをチェックすると詳細情報が分かる場合があります。

  • C:\Windows\Logs\CBS\CBS.log
  • C:\Windows\Logs\DISM\dism.log

これらをテキストエディタで開いてエラーコードや「Failed」などのキーワードを検索すると、不具合の原因を突き止めやすくなります。

インプレースアップグレード (修復インストール) の検討

どうしてもエラーが解消できない場合は、同じビルドのWindows Server 2019のインストールメディアを用いて「修復インストール」を実施する方法が最後の切り札として挙げられます。この場合、設定やデータを保持したままOSの構成ファイルを再展開できることが多いですが、万一のトラブルを考慮してバックアップを必ず取得してから行ってください。

表を使った情報整理

以下に、エラー発生時のチェック項目を表形式でまとめます。必要に応じて確認すると、トラブルシュートがスムーズになります。

チェック項目内容補足
Windowsのエディション・ビルド確認winversysteminfo でバージョン情報を確認同じバージョンのソースを用意できているか確認
ディスクの状態確認chkdsk やディスクスキャンツールでファイルシステムを点検物理障害やファイル破損が無いかをチェック
DISMログ・CBSログの確認C:\Windows\Logs\CBS\CBS.log / C:\Windows\Logs\DISM\dism.logエラー内容や原因を詳細に調べる場合に有効
Windows Updateコンポーネントサービス停止 → SoftwareDistribution等をリネーム → サービス再開更新プログラムのキャッシュクリア、再取得で問題解消を図る
sfc /scannowシステムファイルの整合性チェックDISM前・後に確認しておくと破損ファイルの有無を把握しやすい
ソースファイルコピー正常なマシンの WinSxS フォルダーをコピー → /Source で指定バージョンやパッチレベルが近い、あるいは同一のものを推奨
修復インストール (最終手段)インストールメディアによる修復インストール既存環境を可能な限り保持しつつファイルを再展開

エラー解決後の仕上げ

DISMやsfcでファイル修復が完了し、Windows Updateコンポーネントのリセットも実施したら、改めてWindows Updateを実行し、最新の累積更新プログラムを適用してみましょう。エラーの再現性がなく、更新が正常に完了すれば、基本的には問題解決と考えられます。

もし依然としてエラーが発生する場合は、前述のCBS.logやDISM.logをさらに解析し、必要に応じて修復インストールを検討するのが適切です。

まとめ

「0x800f081f (CBS_E_SOURCE_MISSING)」は、DISMによるイメージ修復時にソースファイルが見つからない場合に発生するエラーです。Windows Updateの不具合やシステムファイルの破損があるとこの問題に直面しやすく、複数の手順を経て原因を切り分けながら対処していく必要があります。

  • 正常なマシンのWinSxSフォルダーを用いてDISMを実行
  • バージョンやビルド番号の整合性を確認
  • Windows UpdateコンポーネントのリセットやSFC実行で追加チェック
  • 最終手段として修復インストールを検討

これらのプロセスを順番に実行することで、多くの場合は問題を解消できるはずです。サーバー環境では安定性と継続稼働が求められるため、こまめなバックアップとログ解析、そして定期的なメンテナンスを心がけて安全な運用を続けていきましょう。

コメント

コメントする