Windows 10 は、開発者が厄介なバグを追跡しながら DTrace の楽しさを享受できるように調整されました。
Microsoft の Hari Pulapaka 氏は Twitter でこのニュースを共有したが、すぐにブログ記事を投稿して、「Windows 10」と言ったのは実際には「18342 以降の Insider Builds」を意味していたと説明した。
WindowsカーネルにDTraceの実行サポートを追加したことをお知らせいたします。DTraceがWindows 10で正式にサポートされました!InsiderビルドでのDTraceの使い方に関する詳細と、ソースコードへのGitHubリンクをご覧ください。cc @JenMsft @gvnn3https://t.co/aUn9QMIEzB
— ハリ・プラパカ (@TheRealHariP) 2019年3月11日
この動きは、マイクロソフトがかつての反オープンソースの猛獣からは程遠いことを示す最新のものだ。
Windows 10 の次のリリースには、Linux カーネルベースの仮想マシン (KVM) 上で Windows 10 を起動して実行できるようにするための変更も含まれています。
マイクロソフト、Arm64版Windows 10をKVM対応に改良
続きを読む
Windowsチームは、DTraceに必要な機能を公開するために、新しいカーネル拡張ドライバを追加しましたTraceext.sys
。Pulapaka氏は次のように説明しています。「Windowsカーネルは、スタックウォークやメモリアクセス中にコールアウトを提供し、それがトレース拡張によって実装されます。」
この時点で、セキュリティファンは考え深げに顎を撫でているだろう。DTraceをカーネル内で暴走させることは、Windowsに組み込まれたセキュリティの一部を踏みにじることになる。DTraceは分析対象の関数に実質的に変更を加えることができるため、MicrosoftのPatchGuardを無効にする必要がある。Pulapaka氏もTwitterでこれを確認した。
以前は Kernel Patch Protection (KPP) と呼ばれていた PatchGuard は、悪意のあるユーザーが Windows カーネルを改ざんするのを阻止するように設計されており、DTrace の動作も阻止します。
Pulapaka 氏は、チームはこの 2 つを共存させるために何をする必要があるかわかっていたが、それは「大変な作業」であり、開発者が新しいおもちゃを手に入れることを切望していたと述べた。
現状では、カーネルデバッガーを接続した状態で起動するとPatchGuardが無効になる点にご注意ください。必要なオプションを実際に設定するには、SecureBootも無効にする必要があります。
DTraceはSun MicrosystemsのSolarisオペレーティングシステムにルーツを持ち、開発者がリアルタイムで問題をトラブルシューティングし、ユーザーモードまたはカーネルモードのどちらでも、システム内部のプロセスの動作を監視できるようにします。また、トレースポイントを動的に追加したり、デッドロックを検出したりすることも可能です。
SolarisからWindowsへの移行は紆余曲折を経た。OracleによるSunの買収後、ツールは苦戦を強いられ、最終的にBig Redがオープンソース化するまで、その道のりは長く続いた。昨年のIgniteイベントで、MicrosoftはDTraceをWindowsに移植したことを発表した。
「DTrace on Windows」は GitHub の OpenDTrace に潜んでおり、Microsoft は今後数か月かけてその変更をマージする予定です。®