web-dev-qa-db-ja.com

VirtualBoxの64ビットWindowsゲストはVT-xのサポートなしでは不可能ですか?

VM VirtualBoxを使用してWindows Vista 32ビットを正常にインストールしました。WindowsVista 64ビットでも同じようにしようとしていますが、機能していません。作成しました。 VMですが、64ビットVista ISOイメージから起動しないようです。このブートマネージャエラーが吐き出されます。

a

ホストOSは、64ビットIntel Core 2 Duoプロセッサー上のWindows 7 64ビットです。これで、同じことを実行して、同じVirtualBoxバージョンを別のコンピューターにインストールし、Windows 7 64ビットを実行し、VMを作成して、VMセットアッププロセス中にゲストOSを選択するときに選択できる追加のオプションがあることに気付きました。スクリーンショットは次のとおりです。

b

これらのオプションは、64ビットと表示されている部分の間に表示されます。他のコンピューターにはこれらのオプションはありません。現在、これは、ハイエンドモデルであるIntel Core 2 Quadを実行しています。インテルの仮想化テクノロジーをサポートしていますが、他のテクノロジーはサポートしていません。

これは、Core 2 Duoコンピュータで同じダイアログが表示されるものです。こちらがスクリーンショットです。

c

これが理由かもしれませんか?プロセッサーがサポートしていない限り、VirtualBoxで64ビットWindowsゲストOS をエミュレートすることはできませんを意味しますか?インテル仮想化テクノロジー?このテクノロジーにより処理速度が大幅に向上することは理解していますが、そのOSをまったくエミュレートできないようにしています...それは少し極端ですよね?

もしそうなら、代わりに何を使うことを勧めますか?

8
Samir

VirtualBoxのマニュアルのセクション3.1.2には、64ビットのゲストオペレーティングシステムを使用するためにハードウェア仮想化サポートが必要であることが明示されています(強調は追加されています)。

VirtualBoxは、次の条件を満たす場合、32ビットのホストオペレーティングシステムでも64ビットのゲストオペレーティングシステムをサポートします。

  1. ハードウェア仮想化をサポートする64ビットプロセッサが必要です(セクション10.3「ハードウェアとソフトウェアの仮想化」を参照してください)。

  2. 64ビットサポートが必要な特定のVMに対してハードウェア仮想化を有効にする必要があります。ソフトウェア仮想化は64ビットVMではサポートされていません。

  3. 32ビットのホストオペレーティングシステムで64ビットのゲストサポートを使用する場合は、特定のVMに64ビットのオペレーティングシステムを選択する必要もあります。 32ビットのホストで64ビットをサポートすると追加のオーバーヘッドが発生するため、VirtualBoxは明示的な要求があった場合にのみこのサポートを有効にします。

ソース: https://www.virtualbox.org/manual/ch03.html#intro-64bitguests

セクション10.3でもこれについて説明しています(強調を追加)。

VirtualBoxの64ビットゲストサポート(バージョン2.0で追加)およびマルチプロセッシング(SMP、バージョン3.0で追加)両方ハードウェア仮想化を有効にする必要があります。 (とにかく、今日の64ビットおよびマルチコアCPUの大部分はハードウェア仮想化を搭載しているため、これはそれほど制限ではありません。このルールの例外は、たとえば古いIntel CeleronおよびAMD Opteron CPUです。)

ソース: https://www.virtualbox.org/manual/ch10.html#hwvirt

したがって、VirtualBoxで64ビットのゲストを使用するには、VT-xまたはAMD-Vをサポートするプロセッサーが必要です。 ただし、、QEMU、Bochs、およびVMWare Playerはすべて、ハードウェア仮想化サポートなしで64ビットゲストをサポートします(少なくとも このページによると )。

18
nc4pk

仮想マシンを分離できないと仮想マシンを分離できないため、仮想マシンハイパーバイザーはx86 CPUで64ビット仮想マシンをサポートしません。

その理由は Wikipedia (私の強調)で述べられています:

X86-64(AMD64)の初期バージョンでは、ロングモードでのセグメンテーションサポートの欠如が原因で、ソフトウェアのみの完全仮想化ができませんでした。ハイパーバイザーのメモリの保護を不可能にしました。特に、ゲストカーネルアドレス空間で実行されるトラップハンドラーの保護。

リビジョンD以降の64ビットAMDプロセッサー(大まかに言うと、90 nm以下で製造されたもの)は、ロングモードでのセグメンテーションの基本サポートを追加し、バイナリ変換を介して64ビットホストで64ビットゲストを実行できるようにしました。 Intelはx86-64実装(Intel 64)にセグメンテーションサポートを追加しなかったため、Intel CPUでは64ビットソフトウェアのみの仮想化が不可能になりましたが、Intel VT-xサポートにより、Intelプラットフォームで64ビットハードウェア支援仮想化が可能になります

VMWare は、仮想化の欠如がVMの保護に挑戦しているとも述べています

X86-64の仮想化の課題

  • 初期のAMD64アーキテクチャには、64ビットモードのセグメンテーションが含まれていませんでした
    • EM64Tにもセグメンテーションがありません

VMMをどのように保護しますか?

  • 64ビットのゲストサポートには、追加のハードウェア支援が必要です
    • 新しいAMDプロセッサの64ビットモードで利用可能なセグメント制限チェック
    • VT-xを使用して、EM64T上のVMMを保護できます
      • BTの代わりにトラップアンドエミュレートアプローチが必要

続きを読む:

Intel CPUは、64ビット仮想マシンを実行するために、チップとBIOSでEM64TとVTのサポートを必要とします。この記事は、プロセッサーがVT対応であることを確認するのに役立ち、この機能を有効にする方法についても説明しています。
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003944


この場合の唯一の方法は [〜#〜] qemu [〜#〜] または-のようなemulatorを使用することです Bochs 、またはXenのような 準仮想化ソフトウェア .

続きを読む: x86-32プロセッサでx86-64 ASMを実行

0
phuclv