仮想環境にある高価なNVMeやVirtIOドライブをWindowsに認識させるのは、OSのインストールほど簡単ではない場合があります。特に、VMwareやProxmoxから移行したVMを扱っている場合、起動時に突然、あの厄介な0x0000007B (INACCESSIBLE_BOOT_DEVICE)エラーが発生することがあります。これは通常、Windowsが起動時にディスクコントローラーを正しく認識できないことが原因です。多くの場合、回復環境やWinPE環境に適切なドライバーがロードされていないことが原因です。少し奇妙に思えますが、不足しているディスクコントローラードライバーを手動でロードすることで問題が解決し、VMが正常に起動し、通常通りローカルディスクにアクセスできるようになることがあります。
ここで役立つのは、これらのドライバーをWinPEまたはWindows回復にロードする方法を学ぶことです。少し面倒ですが、パスとコマンドさえ分かれば、ほぼ簡単です。このガイドでは、VirtIO、NVMe、その他のカスタムドライバーをロードして、WindowsがVMまたは停止中のシステムでディスクドライブを認識し、起動できるようにする方法を順を追って説明します。最終的な目標は?Windowsがすべての仮想ドライブまたは物理ドライブを問題なく認識できるようにすることです。
Windows回復またはWinPEでディスクコントローラドライバをロードする方法
方法 1: WinPE でドライバーを手動で準備してロードする
- 適切なドライバーをダウンロードしてください。VirtIOの場合は、 VirtIOの公式ドライバーサイトをご覧ください。Windows用のドライバーが入ったISOイメージを入手するか、物理マシンで作業している場合は、そのISOイメージを別のコンピューターにマウントし、ドライバーのフォルダをUSBフラッシュドライブにコピーしてください。こうすることで、WinPEまたはリカバリモードで必要な情報がすべて揃います。Windowsは必要以上に手間がかかるため、当然ながら手間がかかります。
- 回復環境を起動します。Windowsインストールメディアまたは回復ディスクを使用します。起動したら、「詳細オプション」 > 「コマンドプロンプト」を選択します。プロンプトが表示された場合は、管理者として実行してください。そこからコマンドを実行し、
diskpartドライブレイアウトを確認します。以下を入力します。diskpartその後
list disk「表示する固定ディスクがありません」と表示される場合、ドライバが正しくロードされていない可能性があります。これは当然のことです。そのため、ドライバを手動でロードする必要があります。
- ドライバーメディアをマウントします。USBまたはISOを使用する場合は、WinPE内でマウントまたはアクセスする必要があります。Ventoy USBスティックの場合は、インジェクションプラグイン(設定されている場合)を使用します。プラグインの設定は以下のとおりです。
{ "injection": [ { "parent": "/ISO/win2k22.iso", "archive": "/drivers/virtio-win-drivers.zip" } ] }これで、ドライバがWinPEに挿入されました。それ以外の場合は、マウントされたメディアを見つけたら、手動でドライブ文字を割り当ててください
wmic logicaldisk get caption, volumename。 - ドライバーのロード:コントローラードライバーのINFファイルを探します。
D:\vioscsi\2k25\amd64\vioscsi.inf(ドライブ文字は異なる場合があります)にあると仮定します。ロードするには、次のコマンドを実行します。drvload d:\vioscsi\2k25\amd64\vioscsi.infWindows Server 2025 または同等のOSをご利用の場合は、互換性のあるバージョンを入手してください。ドライバーのバージョンやアーキテクチャが適切でない場合、正常に読み込まれないことがあります。
- ドライバーのロード成功を確認する: ロード後、次のコマンドでドライバーがアクティブかどうかを確認します。
pnputil /enum-driversVirtIOまたはNVMeドライバーがリストされているはずです。もう一度実行して
diskpart、list diskディスクが表示されればドライバーのロードは成功です。なぜうまくいくのかは分かりませんが、ある環境では最初は失敗しましたが、再起動またはドライバーの再ロードで魔法のように直りました。 - Windowsイメージにドライバーを挿入する: Windowsインストールファイルをオフラインで修復したり、さらにカスタマイズしたりする場合は、ドライバーを追加できます。以下のコマンドを使用します。
DISM /Image:C:\ /Add-Driver /Driver:D:\vioscsi\2k25\amd64\vioscsi.inf(パスを適宜置き換えてください) または、フォルダー内のすべてのドライバーを追加するには:
DISM /Image:C:\ /Add-Driver /Driver:D:\ /Recurseこの手順は基本的に、次回の起動時にドライバーを認識するように Windows に指示するため、エラーなしで起動するはずです。
- WinPEから再起動します。実行して、VMまたはシステムが正常に起動するかどうかを確認します。うまくいけば、デバイスマネージャーにRed Hat VirtIO SCSIディスクデバイス
wpeutil rebootのようにディスクデバイスが表示されるはずです。
注:一部のマシンでは、この方法でドライバを読み込むのに時間がかかる場合があります。場合によっては、すべてが完了するまでに数回試行したり、再起動したりする必要があります。また、特に新しいWindows Serverバージョンやカスタムドライバの場合は、ドライバの互換性を必ず確認してください。Windowsは当然ながら、ドライバの読み込みを可能な限り複雑にする必要があるためです。
オプション 2: DISM を使用してオフラインでドライバーを挿入する (本物の技術者向け)
- Windowsイメージにオフラインでアクセスできる場合(インストールメディアから抽出した場合など)、毎回WinPEを起動しなくても、イメージに直接ドライバーを追加できます。DISMを使用してイメージをマウントします。
Mount-WindowsImage -ImagePath "C:\mount" -ImageIndex 1 -Path "C:\OfflineImage"(
DISM古い設定の場合はコマンドラインを使用してください)。次に、ドライバーを追加します。DISM /Image:C:\OfflineImage /Add-Driver /Driver:D:\vioscsi\amd64\vioscsi.infその後、アンマウントしてコミットします。
DISM /Unmount-WindowsImage /MountDir:C:\mount /Commit環境を再起動すると、Windows はそれ以上問題なくローカル ディスクを認識するはずです。
これは単なるオタクの話ではありません。ディスクドライバーがすぐに読み込まれないと、Windows が起動を諦めて正常に起動しなくなる可能性があります。起動前または起動中に適切なドライバーを読み込んでおくことで、後々多くの問題を回避することができます。
とにかく、要点はこれです。ドライバーパス、メディアのマウント、ローダーコマンドなどをいろいろ試してみてください。試行錯誤は必要ですが、一度うまく動作するようになれば、これらのVMやリカバリ環境への起動がずっと楽になります。