{"componentChunkName":"component---src-templates-post-template-js","path":"/windows-windbg-proxmox-remotekd","result":{"data":{"markdownRemark":{"id":"9b29af17-debe-5f12-8c3e-275c818113a2","html":"<p>今回は、Proxmox 上の Windows 11 VM 間で WinDbg を使ったリモートカーネルデバッグが動作しなかった問題の解消方法をまとめます。</p>\n<p>最終的に、今回は以下の設定を行うことで Proxmox 上の仮想マシン間でリモートカーネルデバッグが成功するようになりました。</p>\n<ol>\n<li>KDNET が本来使うべき NIC の <code class=\"language-text\">busparams=b.d.f</code> を、kdnet.exe を使用せずに bcdedit で明示的に指定する</li>\n</ol>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">bcdedit /debug on\nbcdedit /dbgsettings net hostip:192.168.10.20 port:50000 key:<span class=\"token operator\">&lt;</span>Key<span class=\"token operator\">></span> nodhcp\nbcdedit /set <span class=\"token string\">\"{dbgsettings}\"</span> busparams <span class=\"token operator\">&lt;</span>確認した busparams<span class=\"token operator\">></span>\n\n<span class=\"token comment\"># 設定の確認</span>\nbcdedit /dbgsettings</code></pre></div>\n<ol start=\"2\">\n<li>ターゲットマシンの起動に <code class=\"language-text\">qm start &lt;VMID> --force-cpu host</code> コマンドを使用することで、デフォルトで構成されている Hyper-V Enlightenments の設定を使用せずにマシンを起動する</li>\n</ol>\n<!-- omit in toc -->\n<h2 id=\"もくじ\" style=\"position:relative;\"><a href=\"#%E3%82%82%E3%81%8F%E3%81%98\" aria-label=\"もくじ permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>もくじ</h2>\n<ul>\n<li><a href=\"#%E7%92%B0%E5%A2%83\">環境</a></li>\n<li><a href=\"#%E7%99%BA%E7%94%9F%E3%81%97%E3%81%9F%E5%95%8F%E9%A1%8C%E3%81%A8%E5%8E%9F%E5%9B%A0%E3%81%A3%E3%81%BD%E3%81%84%E7%82%B9\">発生した問題と原因っぽい点</a></li>\n<li><a href=\"#%E3%83%A1%E3%83%A2proxmox-%E3%81%A7%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%9F%E3%81%93%E3%81%A8\">メモ：Proxmox で確認したこと</a></li>\n<li><a href=\"#%E3%81%BE%E3%81%A8%E3%82%81\">まとめ</a></li>\n</ul>\n<h2 id=\"環境\" style=\"position:relative;\"><a href=\"#%E7%92%B0%E5%A2%83\" aria-label=\"環境 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>環境</h2>\n<p>今回の環境は以下の通りです。</p>\n<ul>\n<li>Proxmox VE 上で構築した Windows 11 25H2 VM(ホスト + ターゲット)</li>\n<li>ホストとターゲットは同じブリッジに接続しているデバイス</li>\n<li>ホストとターゲットのネットワークインターフェースは、virtio ではなく E1000 を選択しておく</li>\n</ul>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/0b8d2a5c4ba78976663625ab93754dcd/bb2fd/image-20260502130040115.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 42.083333333333336%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAABQUlEQVQY021Ri3KCMBDkO6wI1oJMAQGhgEQDaMAnD42CVpGx//8RPR8zndbuZG4um91MbsO4CFumKcsyz/PtdrvT6TiuY9u2oih90zQM3TAMSZLup3/AhGMyHHpitwsbUAiCgH0fj7CqKvL7A8Kb8L8ZeSgMx92bGSCKIsZY13VgOI7jr6aH7fUJzAiAseu6oH5pNIDyBl4QBFBbXKvZbLIse7+FfQITkSjP13S7jePYsiyEUJ7naZqu10ACTbMsWywWcApBOL/BJElS3EApJYSMJ5OiKMtyD2u+XE5ncxLF2A+uQVzrT+MHIUM3tD7Xu90O1GmakGh6Ol+q+nI814dTtT9VxeFY7j+r+ivNN8skW6X5fJVAjeIZY+h9SEjTtPtggiAOXO/DdtBw5CEEcUCF+eHJak/rgU4zFBVaDf7lG9ZMZiimdDacAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/0b8d2a5c4ba78976663625ab93754dcd/8ac56/image-20260502130040115.webp 240w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/d3be9/image-20260502130040115.webp 480w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/e46b2/image-20260502130040115.webp 960w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/acaf1/image-20260502130040115.webp 1058w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/0b8d2a5c4ba78976663625ab93754dcd/8ff5a/image-20260502130040115.png 240w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/e85cb/image-20260502130040115.png 480w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/d9199/image-20260502130040115.png 960w,\n/static/0b8d2a5c4ba78976663625ab93754dcd/bb2fd/image-20260502130040115.png 1058w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/0b8d2a5c4ba78976663625ab93754dcd/d9199/image-20260502130040115.png\"\n            alt=\"image-20260502130040115\"\n            title=\"image-20260502130040115\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<h2 id=\"発生した問題と原因っぽい点\" style=\"position:relative;\"><a href=\"#%E7%99%BA%E7%94%9F%E3%81%97%E3%81%9F%E5%95%8F%E9%A1%8C%E3%81%A8%E5%8E%9F%E5%9B%A0%E3%81%A3%E3%81%BD%E3%81%84%E7%82%B9\" aria-label=\"発生した問題と原因っぽい点 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>発生した問題と原因っぽい点</h2>\n<p><a href=\"/magical-windbg-vol2-01#%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E7%B5%8C%E7%94%B1%E3%81%A7%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%82%92%E8%A1%8C%E3%81%86\">ネットワーク経由でカーネルデバッグを行う</a> と同じ手順で kdnet.exe でネットワークデバッグを構成した後にホスト側で WinDbg を待ち受けにしても、ターゲット再起動後に接続しない状態でした。</p>\n<div class=\"gatsby-highlight\" data-language=\"cmd\"><pre class=\"language-cmd\"><code class=\"language-cmd\">windbg.exe -k net:port=50000,key=&lt;Key&gt;</code></pre></div>\n<p>ターゲット側では kdnet.exe を実行した際に <code class=\"language-text\">Network debugging is supported</code> とは表示されていたものの、以下のようなエラーコード 0xC0000182 を伴うエラーも表示されました。</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre class=\"language-text\"><code class=\"language-text\">KDNET transport initialization failed during a previous boot. Status = 0xC0000182.\nNIC hardware initialization failed.\nKDNET did not successfully receive any packets during init.\nKDNET did not successfully send any packets during init.</code></pre></div>\n<p>これはどうもターゲットからのデバッグ用の通信自体が発生していないのが原因のようで、諸々調べていったところ以下の記事を見つけました。</p>\n<p>参考：<a href=\"https://blog.iret.xyz/posts/libvirt-hyperv-with-kdnet/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">libvirt的Hyper-V虚拟化或导致Windows KDNET初始化失败 - Silver</a></p>\n<p>この記事によると、Proxmox が使用している qemu では Windows のゲスト用に Hyper-V Enlightenments というマシンに Hyper-V 上で稼働するマシンであると認識させる機能があり、これにより実際には Hyper-V を使用していない仮想マシンでは KDNET の動作に影響がでるらしいとのことです。</p>\n<p>参考：<a href=\"https://www.qemu.org/docs/master/system/i386/hyperv.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Hyper-V Enlightenments — QEMU documentation</a></p>\n<p>(詳しく調べられていないのですが、どうも Hyper-V 上のマシンでは KDNET の動きが変わるらしく、実際には Hyper-V を使用していない仮想マシンでこのような動作になるとネットワークデバッグが上手く動かなくなる場合があるようです。)</p>\n<h2 id=\"メモproxmox-で確認したこと\" style=\"position:relative;\"><a href=\"#%E3%83%A1%E3%83%A2proxmox-%E3%81%A7%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%9F%E3%81%93%E3%81%A8\" aria-label=\"メモproxmox で確認したこと permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>メモ：Proxmox で確認したこと</h2>\n<p>まず以下のコマンドで、Proxmox で VM を起動する際のオプションを確認しました。</p>\n<div class=\"gatsby-highlight\" data-language=\"bash\"><pre class=\"language-bash\"><code class=\"language-bash\">qm showcmd <span class=\"token operator\">&lt;</span>VMID<span class=\"token operator\">></span> --pretty</code></pre></div>\n<p>その結果、以下のようにいくつかの <code class=\"language-text\">hv_</code> から始まるオプションが CPU フラグに含まれていることがわかりました。</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 960px; \"\n    >\n      <a\n    class=\"gatsby-resp-image-link\"\n    href=\"/static/e236ce8621a65fc8be8f27098c46ad5b/720e3/image-20260502132143123.png\"\n    style=\"display: block\"\n    target=\"_blank\"\n    rel=\"noopener\"\n  >\n    <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 47.5%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA8klEQVQoz5WS226DMBBEzUVgwjWx8RWTgPiHtMn//1cmXrVqE1WoBx72ZXZ3Zs200YdIdaiyLGP/YgpBa62UGo5HXj2/bzjnSZLsiP3kQwjW2mEYmqap65rEZVnuTLbOylHiV1oLIU6Rvu/RAn3atqW6KIo0TV/F3nsVMcacxJOu69ofQJnnOeJI3mDX68f9dvv8Yts27O+csxEqdMS8wZZlnefz+XIx1tKGsJr+JvsDZuKEECZ0Gke4l13fI62dnIkwY/C8rssUA4dh3BzzeQRbkD3MfzUMlNJwRh6c93gzyB9WpZA4G/R0cGoEqMjjc3oAGXcbjLfWZtEAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <picture>\n          <source\n              srcset=\"/static/e236ce8621a65fc8be8f27098c46ad5b/8ac56/image-20260502132143123.webp 240w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/d3be9/image-20260502132143123.webp 480w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/e46b2/image-20260502132143123.webp 960w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/f992d/image-20260502132143123.webp 1440w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/882b9/image-20260502132143123.webp 1920w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/a2081/image-20260502132143123.webp 1962w\"\n              sizes=\"(max-width: 960px) 100vw, 960px\"\n              type=\"image/webp\"\n            />\n          <source\n            srcset=\"/static/e236ce8621a65fc8be8f27098c46ad5b/8ff5a/image-20260502132143123.png 240w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/e85cb/image-20260502132143123.png 480w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/d9199/image-20260502132143123.png 960w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/07a9c/image-20260502132143123.png 1440w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/29114/image-20260502132143123.png 1920w,\n/static/e236ce8621a65fc8be8f27098c46ad5b/720e3/image-20260502132143123.png 1962w\"\n            sizes=\"(max-width: 960px) 100vw, 960px\"\n            type=\"image/png\"\n          />\n          <img\n            class=\"gatsby-resp-image-image\"\n            src=\"/static/e236ce8621a65fc8be8f27098c46ad5b/d9199/image-20260502132143123.png\"\n            alt=\"image-20260502132143123\"\n            title=\"image-20260502132143123\"\n            loading=\"lazy\"\n            style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n          />\n        </picture>\n  </a>\n    </span></p>\n<p>この CPU フラグですが、どうやら Proxmox でマシンの種類を Windows に設定している場合、デフォルトのフラグとして自動的に追加されるようです。</p>\n<p>参考：<a href=\"https://forum.proxmox.com/threads/tricki-problem-with-windows-and-nested-virtualization.143914/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Tricki problem with Windows and nested Virtualization. | Proxmox Support Forum</a></p>\n<p>参考：<a href=\"https://github.com/proxmox/qemu-server/blob/f0923f49e94c9561302a23652cd156363fb4e430/PVE/QemuServer/CPUConfig.pm#L669\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">qemu-server/PVE/QemuServer/CPUConfig.pm at f0923f49e94c9561302a23652cd156363fb4e430 · proxmox/qemu-server</a></p>\n<p>この起動時のフラグについては設定ファイルなどを変更しても変えることができず、またマシンの種類を Windows 以外に変更すると仮想マシンが起動しなくなってしまったので最後まで解決策がわかりませんでした。</p>\n<p>しかし、とりあえず <code class=\"language-text\">qm start &lt;VMID> --force-cpu host</code>  のように <code class=\"language-text\">--force-cpu</code> を使用すると、起動時の CPU args を強制できることがわかったため、ターゲットマシンの起動時にはこのコマンドを使用するようにすることで、無事にカーネルデバッグを行うことができるようになりました。</p>\n<p>参考：<a href=\"https://pve.proxmox.com/pve-docs/qm.1.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">qm(1)</a></p>\n<h2 id=\"まとめ\" style=\"position:relative;\"><a href=\"#%E3%81%BE%E3%81%A8%E3%82%81\" aria-label=\"まとめ permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>まとめ</h2>\n<p>ハイパーバイザーや Windows の KDNET の内部動作に関する知見がなくスッキリした解決には至りませんでしたが、ひとまず Proxmox 環境でネットワークカーネルデバッグができるようにはなったので、メモ書きとして残しておきます。</p>","fields":{"slug":"/windows-windbg-proxmox-remotekd","tagSlugs":["/tag/win-dbg/","/tag/proxmox/","/tag/kdnet/"]},"frontmatter":{"date":"2026-05-02","description":"Proxmox 上の Windows 11 VM 間で KDNET によるリモートカーネルデバッグが失敗した際の原因の予想、qm config による確認方法、busparams を明示した dbgsettings、qm start --force-cpu host で成功させるまでの手順をまとめます。","tags":["WinDbg","Proxmox","KDNET"],"title":"Proxmox 上で構築した Windows 11 マシンでリモートカーネルデバッグを行う際にハマった問題の解決策","socialImage":{"publicURL":"/static/04c555b5a1702ce1a73162281fc28e5d/windows-windbg-proxmox-remotekd.png"}}}},"pageContext":{"slug":"/windows-windbg-proxmox-remotekd"}},"staticQueryHashes":["251939775","401334301","825871152"]}