
通常、Windowsでブルースクリーン(BSOD)が発生すると、PCは自動的に再起動しますが、プログラマーのNSG650氏(NTDEV経由)は、PCをLinuxエミュレーターで起動させるドライバを作成しました。このドライバは目新しいというよりは実用性に欠けますが、ソフトウェアの機能を意図しない方法で悪用する巧妙な手法を示す好例です。
このドライバーの動作は実は非常にシンプルで、Windowsに組み込まれているバグチェック・コールバック機能を使用するだけです。バグチェックとは、クラッシュやBSODの専門用語で、バグチェックが発生すると、Windowsは原因を突き止めようとします。MicrosoftのWindowsコーディングハンドブックによれば、このバグチェック・コールバックルーチンの一部として、ドライバーは「デバイスを既知の状態にリセット」することができます。つまり、クラッシュ後もコードを実行できるということです。
ほとんどのドライバーは、この機会を利用してクラッシュダンプファイルに診断データを追加しますが、NSG650のドライバーはRISC-V Linuxエミュレータを挿入します。これは、Microsoftの見解ではバグチェックコールバック関数の若干の誤用と見なすことができるかもしれません。念のため、これはWindowsとLinuxの両方がインストールされているデュアルブートPCとは混同しないでください。
このエミュレータは基本的にDOSかコマンドラインOSで、UbuntuやArch Linuxのような充実した機能を備えていないため、できることは限られています。タイプミスをしてもバックスペースキーすら使えず、大文字にするにはShiftキーではなくCapsLockキーを使わなければなりません。このエミュレータの機能は限られています。
しかし、このRISC-V Linuxエミュレータは非常に小さく、コード行数はわずか400行です。対照的に、完全なLinuxカーネルだけでも数百万行に及びます。完全なLinuxディストリビューションを実行できなかったか、動作させるのがあまりにも面倒だったかのどちらかと思われます。これは、誰も真剣に使用しそうにないことを考えると、妥当な理由と言えるでしょう。
このドライバはWindowsとLinuxに関する単なるジョークと言えるかもしれませんが、同じバグチェックコールバック機能を使ってより多くのことができる可能性を示唆しています。何ができて何ができないのかは明確ではありませんが、クラッシュ後にエミュレータを実行できるのであれば、他のことも可能になるはずです。ただし、これはMicrosoftがWindowsのこの機能を再検討し、悪用されやすいという結論を出さないことを前提としています。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
マシュー・コナッツァーは、Tom's Hardware USのフリーランスライターです。CPU、GPU、SSD、そしてコンピューター全般に関する記事を執筆しています。