仮想マシンのネットワーク デバッグの設定 - KDNET
このトピックでは、Hyper-V 仮想マシン (VM) へのカーネル デバッグ接続を構成する方法について説明します。
Hyper-V 仮想マシンのセットアップ
Gen 2 Hyper-V 仮想マシン (VM) をデバッグするには、次の手順を実行します。
1. Windows がインストールされている VM を作成する
VM の作成方法については、「Hyper-V で仮想マシンを作成する」を参照してください。
2. 外部仮想スイッチを定義する
VM と通信するには、仮想外部ネットワーク スイッチを使用できます。 仮想ネットワーク スイッチの作成方法については、「仮想ネットワークを作成する」を参照してください。
外部ネットワーク スイッチを構成する際は、次のオプションを設定する必要があります。
オプション | Value |
---|---|
接続タイプ | 外部ネットワーク |
管理オペレーティング システムにこのネットワーク アダプターの共有を許可する | Enabled |
VLAN ID | 無効 |
3. セキュア ブートを無効にする
kdnet ユーティリティが BCDEdit ブート設定を更新できるようにするには、次の手順に沿って仮想マシンのセキュア ブートを一時的に無効にします。
Hyper-V マネージャーを読み込み、VM のプロパティを選択します。
[セキュリティ] 設定を選択します
[セキュア ブートを有効にする] チェック ボックスのチェックを外します。
[OK] を選択して設定を保存します。
デバッグが完了し、ターゲット VM でカーネル デバッグを無効にしたら、セキュア ブートを再度有効にできます。
4. Windows 用デバッグ ツールをインストールする
デバッグ ツールはデバッガーと kdnet ユーティリティで使用されるため、インストールする必要があります。 デバッグ ツールのダウンロードとインストールの方法については、「Windows 用デバッグ ツール」を参照してください。
仮想マシンのネットワーク デバッグの設定 - KDNET
ホストの IP アドレスを記録する
ターゲット仮想マシンと同じ PC でホスト デバッガーを実行するには、次の手順に従います。
ホスト コンピューターの OS で、[コマンド プロンプト] ウィンドウを開き、「IPConfig」と入力して IP 構成を表示します。
コマンド出力で、外部仮想スイッチとして構成したイーサネット アダプターを見つけます。
... Ethernet adapter vEthernet (External Virtual Switch): ... IPv4 Address. . . . . . . . . . . : <YourHostIPAddress> ...
ヒント
似たような名前のアダプター エントリが複数存在している場合があります。 作成した仮想スイッチを確認して見つけます。
デバッグのホスト アドレスとして使用される外部仮想スイッチの IPv4 アドレスを記録します。
ターゲットとホスト コンピューターの間の接続を確認するには、ターゲット コンピューターで管理者特権の [コマンド プロンプト] ウィンドウを開き、次のコマンドを入力します。ここで、YourHostIPAddress はホスト コンピューターの IP アドレスです。
ping -4 <YourHostIPAddress>
VM ターゲット コンピューターのセットアップ
次の手順に沿って、kdnet.exe ユーティリティを使用し、ターゲット PC でデバッガー設定を自動的に構成します。
- WDK の kdnet.exe ファイルと VerifiedNICList.xml ファイルを見つけます。 既定では、これらのファイルは次の場所にあります。
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
Note
これらの手順では、両方の PC がターゲットとホストの両方で 64 ビット バージョンの Windows を実行していることを前提としています。 該当しない場合、ターゲットが実行しているのと同じ "ビット数" のツールをホスト上で実行することをお勧めします。 たとえば、ターゲットが 32 ビット Windows を実行している場合は、ホストで 32 バージョンのデバッガーを実行します。 詳細については、「32 ビットまたは 64 ビットのデバッグ ツールの選択」を参照してください。
使用される長いキーを切り取り/貼り付けできるようにするには、拡張セッションのサポートを有効にします。 VM ウィンドウの [表示] プルダウン メニューで、[拡張セッション] を有効にします。
ターゲット VM コンピューターで C:\KDNET ディレクトリを作成し、kdnet.exe ファイルと VerifiedNICList.xml ファイルをそのディレクトリにコピーします。
ターゲット コンピューターで、管理者として [コマンド プロンプト] ウィンドウを開きます。 このコマンドを入力して、サポートされているネットワーク アダプターがターゲット コンピューターにあることを確認します。
C:\KDNET>kdnet Network debugging is supported on the following NICs: busparams=0.25.0, Intel(R) 82579LM Gigabit Network Connection, KDNET is running on this NIC.kdnet.exe
このコマンドを入力して、ホスト システムの IP アドレスを設定し、一意の接続キーを生成します。 先ほど記録したホスト システムの IP アドレスを使用します。 50000 から 50039 の範囲内で、使用するターゲット/ホスト ペアごとに一意のポート アドレスを選択します。 この例では、50005 を選択します。
C:\>kdnet <YourIPAddress> <YourDebugPort> Enabling network debugging on Microsoft Hypervisor Virtual Machine. Key=3u8smyv477z20.2owh9gl90gbxx.3sfsihzgq7di4.nh8ugnmzb4l7 To debug this vm, run the following command on your debugger host machine. windbg -k net:port=50005,key=3u8smyv477z20.2owh9gl90gbxx.3sfsihzgq7di4.nh8ugnmzb4l7 Then restart this VM by running shutdown -r -t 0 from this command prompt.
CRTL+C キーで、指定された Windbg 出力をコマンド バッファーにコピーします。 これを行って、返される長いキー値を書き留めなくてもすむようにします。
デバッガー設定の構成が完了したら、BitLocker とセキュア ブートを再度有効にします。
拡張セッションのサポートのある VM はブレークポイントに残るとタイムアウトする可能性があるため、VM の [表示] プルダウン メニューを使用して拡張セッションのサポートを無効にします。
デバッガーが読み込まれて実行されると、VM が再起動されます。 このプロセスについては、次に説明します。
デバッグ セッションの開始
ターゲット PC に接続するには、Ctrl + V キーを押して、先ほどコピーした kdnet で返された Windbg 文字列をメイン OS コマンド ウィンドウに貼り付けます。
C:\Debuggers\windbg -k net:port=<YourDebugPort>,key=<YourKey>
最初にネットワーク デバッグ接続を確立しようとすると、ファイアウォール経由でデバッグ アプリケーション (WinDbg または KD) へのアクセスを許可するよう求めるダイアログが表示される場合があります。 プロンプトに応答するには、3 種類のすべてのネットワーク (ドメイン、プライベート、パブリック) のボックスをすべてチェックします。
ターゲット PC の再起動
デバッガーが接続されたら、ターゲット コンピューターを再起動します。 VM を強制的に完全に再起動するには、管理者のコマンド プロンプトからこのコマンドを使用します。
shutdown -r -t 0
ターゲット仮想マシンが再起動されると、ホスト OS のデバッガーが接続されます。
VM に接続した後、デバッガーで中断が発生し、デバッグを開始できます。
デバッグ接続をサポートするために、カーネル デバッグ ネットワーク アダプターが追加され、VM の再起動後にネットワーク プロパティに表示されます。
KDNET 仮想マシン ネットワークのデバッグのトラブルシューティング
デバッガーが接続しない場合は、ターゲット VM から ping コマンドを使用して接続を確認します。
C:\>Ping <HostComputerIPAddress>
何かが正しく機能しなかったのですが、それが何なのか分かりません...
- WinDbg がファイアウォールを経由していることを確認します。
- BCDEdit または kdnet によって生成された一意のキーを使用していることを確認します。
使用している VM がネットワークに接続できない
- Hyper-V マネージャーから仮想スイッチ マネージャーを開き、既存の仮想スイッチを選択して、外部ネットワーク NIC を Microsoft カーネル デバッグ ネットワーク アダプターに変更します。その際、ドロップダウン ボックスから該当するアダプターを選択し、[仮想スイッチ マネージャー] ダイアログ ボックスで [OK] を選択します。 仮想スイッチ NIC を更新したら、必ず VM をシャットダウンして再起動してください。
Windows PC に Hyper-V ロールを追加するシーケンス
ターゲット コンピューターが仮想マシン ホストの場合は、ネットワーク デバッグを設定しても、仮想マシンのネットワーク アクセスは可能です。
次の状況でネットワーク デバッグを設定するとします。
- ターゲット コンピューターには、1 つのネットワーク インターフェイス カードがあります。
- ターゲット コンピューターに Hyper-V の役割をインストールする予定です。
- ターゲット コンピューターに 1 つ以上の仮想マシンを作成する予定です。
Hyper-V の役割をインストールする前に、ターゲット コンピューターでネットワーク デバッグを設定することをお勧めします。 その後、仮想マシンはネットワークにアクセスできます。
ターゲット コンピューターに Hyper-V の役割がインストールされた後でネットワーク デバッグを設定する場合は、仮想マシンのネットワーク設定を変更して、Microsoft カーネル ネットワーク デバッグ アダプターにブリッジする必要があります。 そうしなければ、仮想マシンはネットワークにアクセスできません。