見出し画像

🛠wslとVirtualBoxのコンフリクトを解消せよ 環境まぜるな危険、黒魔術 VT-x is not available (VERR_VMX_NO_VMX).

WSL2をWindowsにいれたら、気づいたらVirtualBox動かなくなっていた。もう少し細かく言うと WSL2でGutils -> Node? -> npx -> でWSL動かしてたら、nodeだかなんだか動かなかったりしたので何もかもいやになってもうVirtualBoxにUbuntuいれてまたやり直そうとしたら、それも動かなくなっていた。原因は見覚えがあって、BIOSの設定書き換えて使えるようにした記憶がある。WSL2はUTF8下のpythonも文字処理で大活用しておりかつ適切にCドライブにマウントしていて非常に使い勝手が良いため、npxとのトレードオフ考えるとVirtualBoxに時間を費やしたり、なおせたりなおせなくして、WSL2が動かなくなるのが今はイヤなので、理屈だけを押さえてイメトレしておきたい。

で、とりあえずエラーのおさらい。

画像1

仮想マシン"~"のセッションを開けませんでした。

VT-x is not available (VERR_VMX_NO_VMX).
終了コード : E_FAIL (0x80004005)
コンポーネント: ConsoleWrap
インターフェース: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}

これ前も見たことがあって、BIOSの書き換えをして直した。WSL2を入れるときに、powerscriptだったかでいくつか設定を変えた(ほとんどもう忘れている)記憶があり、それでまた設定が戻ったんだと思う。とりあえず実際の設定は変えるつもりがないので、背景情報だけそろえておいて、自分のPCはこのままとして、いつか他人のPC借りれたら共存できるかをもう一度考えてみる。

VT-x とは何か?

VT-x は、Intelによるx86仮想化の実装例である。単に Intel VT と呼称する場合もある

仮想化支援技術では特権リングの扱いを改めてこれらの細粒度の操作を制御したり、あるいはスーパーバイザの操作を代行する事により、より粒度の粗い処理の単位として取り扱う事によって無駄を排除する。割り込み制御一つをとっても、この操作の無駄を排除する事により仮想化環境の性能は概ね20%以上の性能向上が見られる。VT-xとVT-iは命令レベルでの改善、VT-dはI/Oレベルの改善をはかったものである。

特権リングとかレベルとか、めちゃくちゃおもしろそう。OSのコールの権限についてはこの本とかで読んだことがあったが、リング状になってたかは記憶があまりない。


だいたい根っこはx86の仮想化の事情が出てくるみたいだった

VMware や類似する仮想化ソフトウェアがハードウェア仮想化支援機能を持たないx86向けの仮想化する場合、特定の命令の実行を捉えて動的に置き換える動的命令変換技法を必ず使用している。 この技法は、本質的に仮想化可能なアーキテクチャ(例えば IBM System/370 や MC68020)での仮想機械に比較すると性能に対する何らかのオーバーヘッドを抱えている。

さらに製品群もよくまとまっている

さすがwikipediaの人

オープンソースでもx86仮想化の試みは行われた。x86プロセッサの命令実行をエミュレートする方式を採ったものとして、Bochs、QEMU、当初プロプエタリソフトとして公開され最終的にGPLライセンスになったVirtualBoxがある。KVMではQEMUがCPUをはじめとする周辺機器のエミュレーションを担っている。

マイクロソフトは Windows ベースのx86仮想化製品を3種類提供している。Connectix から得た技術に基づいた Virtual PC と Virtual Server、そして Hyper-V である。

そしてHyper-V である

WSLの最新バージョンでは、その仮想化を可能にするためにHyper-Vアーキテクチャを採用している。このアーキテクチャは、「Virtual Machine Platform」オプションコンポーネントで利用できるようになる。このオプションコンポーネントは、すべてのSKUで利用できるようになる。WSL 2のリリースが近づくにつれ、この体験に関する詳細が間もなく公開されることになるだろう。

2の話じゃないなこれ、さらにSKUってなんすか

サードパーティ製のアプリケーションの中には、VMwareやVirtualBoxのように、Hyper-Vが使用されていると動作しないものがあり、WSL 2が有効になっていると動作しないということになります。しかし、最近ではVirtualBoxもVMwareもHyper-VとWSL2をサポートするバージョンをリリースしています。


いいなと思ったら応援しよう!

あたり帳簿
お願い致します