64-bit Windows guest in VirtualBox impossible without VT-x support?

49,797

Solution 1

Section 3.1.2 of the VirtualBox manual explicitly states that you need hardware virtualization support to use 64-bit guest operating systems (emphasis added):

VirtualBox supports 64-bit guest operating systems, even on 32-bit host operating systems, provided that the following conditions are met:

  1. You need a 64-bit processor with hardware virtualization support (see Section 10.3, “Hardware vs. software virtualization”).

  2. You must enable hardware virtualization for the particular VM for which you want 64-bit support; software virtualization is not supported for 64-bit VMs.

  3. If you want to use 64-bit guest support on a 32-bit host operating system, you must also select a 64-bit operating system for the particular VM. Since supporting 64 bits on 32-bit hosts incurs additional overhead, VirtualBox only enables this support upon explicit request.

Source: https://www.virtualbox.org/manual/ch03.html#intro-64bitguests

Section 10.3 also states this (emphasis added):

VirtualBox's 64-bit guest support (added with version 2.0) and multiprocessing (SMP, added with version 3.0) both require hardware virtualization to be enabled. (This is not much of a limitation since the vast majority of today's 64-bit and multicore CPUs ship with hardware virtualization anyway; the exceptions to this rule are e.g. older Intel Celeron and AMD Opteron CPUs.)

Source: https://www.virtualbox.org/manual/ch10.html#hwvirt

Thus, you need a processor that supports VT-x or AMD-V to use 64-bit guests with VirtualBox. However, QEMU, Bochs and VMWare Player all support 64-bit guests without hardware virtualization support (at least according to this page).

Solution 2

No virtual machine hypervisors support 64-bit virtual machines in an x86 CPU without virtualization, because isolation of the virtual machine would be impossible without it.

The reason was mentioned in Wikipedia (emphasis mine):

The initial version of x86-64 (AMD64) did not allow for a software-only full virtualization due to the lack of segmentation support in long mode, which made the protection of the hypervisor's memory impossible, in particular, the protection of the trap handler that runs in the guest kernel address space.

Revision D and later 64-bit AMD processors (as a rule of thumb, those manufactured in 90 nm or less) added basic support for segmentation in long mode, making it possible to run 64-bit guests in 64-bit hosts via binary translation. Intel did not add segmentation support to its x86-64 implementation (Intel 64), making 64-bit software-only virtualization impossible on Intel CPUs, but Intel VT-x support makes 64-bit hardware assisted virtualization possible on the Intel platform

VMWare also said that the lack of virtualization makes it challenges the protection the VM

Challenges of Virtualizing x86-64

  • Initial AMD64 architecture did not include segmentation in 64-bit mode
    • Segmentation also missing from EM64T

How do we protect the VMM?

  • 64-bit guest support requires additional hardware assistance
    • Segment limit checks available in 64-bit mode on newer AMD processors
    • VT-x can be used to protect the VMM on EM64T
      • Requires trap-and-emulate approach instead of BT

Read more:

Intel CPUs require EM64T and VT support in the chip and in the BIOS to run 64-bit virtual machines. This article helps you ensure your processor is VT-capable, and it also instructs you on how to enable this feature
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003944


The only way in this case is using an emulator like QEMU or Bochs, or a paravirtualization software like Xen.

Read more: Running x86-64 ASM on a x86-32 processor

Share:
49,797

Related videos on Youtube

Samir
Author by

Samir

Tell me and I forget. Teach me and I remember. Engage me and I learn.

Updated on September 18, 2022

Comments

  • Samir
    Samir over 1 year

    I have successfully installed Windows Vista 32-bit in a VM with VirtualBox. Now I'm trying to do the same with Windows Vista 64-bit and it just isn't working. I have created the VM but it seems that it won't boot off of the 64-bit Vista ISO image. It spits out this boot manager error.

    a

    The host OS is Windows 7 64-bit on a 64-bit Intel Core 2 Duo processor. Now, I have done the same thing and installed the same VirtualBox version on another computer, also running Windows 7 64-bit, created the VM, and then... during the VM setup process I noticed that it had additional options to choose from when I pick the guest Os. Here's a screenshot.

    b

    You can see those options in-between where it says 64-bit, I don't have those options on that other computer. Now, this one runs an Intel Core 2 Quad, a higher end model. It supports Intel virtualization technology, while the other one does not.

    This is what the same dialog looks like on the Core 2 Duo computer. Here's a screenshot.

    c

    Could this be the reason why? Does that mean that you can't emulate a 64-bit Windows guest OS at all with VirtualBox, unless your processor supports Intel virtualization technology? I understand that this technology makes things much faster, but not letting you emulate that OS at all... that's a bit extreme, no?

    If so, what do you suggest I use instead?

    • Samir
      Samir about 10 years
      @Ramhound Did you just ask if I'm sure I'm running a 64-bit operating system and then changed your mind? I got the comment in my inbox. Well, for whatever it's worth, yes, I'm sure both computers are running 64-bit version of Windows 7.
    • Samir
      Samir about 10 years
      @Ramhound Limitation of the hardware? So you concur, this has to do with VT-x support, or rather the lack thereof?
    • Samir
      Samir about 10 years
      Emm... don't you mean "you can't do something in software if the hardware does not support it"?
  • Samir
    Samir about 10 years
    Yeah... and that's unfortunate. I thought that referred only to 64-bit guests on 32-bit hosts. But from chapter 10 they specifically say that hardware virtualization is a requirement. I wonder though, how come that this is not a requirement for 32-bit guests? Why only 64-bit?
  • Samir
    Samir about 10 years
    I have given you an up-vote even though I have already posted this exact text in my own answer. Thanks for the effort! I will merge my answer with yours if that's OK.
  • Samir
    Samir about 10 years
    Do you know any other virtualization software (preferably free and open source) that can emulate a 64-bit Windows without the hardware virtualization support?
  • nc4pk
    nc4pk about 10 years
    @sammyg it looks like QEMU, Bochs and VMWare Player all support it, see my latest revision.
  • phuclv
    phuclv almost 10 years
    Not true. VMware player also requires virtualization to run 64-bit guess and so are other hypervisors. You can only run 64-bit guess without virtualizations on an emulator such as Bochs or qemu or a paravirtualization software such as Xen en.wikipedia.org/wiki/Vt-x#Software-based_virtualization
  • phuclv
    phuclv almost 10 years
    The reason is here: "Intel EM64T CPUs do not have segmentation support in long mode. If the Intel EM64T CPU is VT-capable, it comes with hardware virtualization support (Intel's Virtualization Technology). This hardware virtualization support allows VMware to work around the lack of segmentation, making it possible to run 64-bit guest operating systems on Intel EM64T VT-capable CPUs." It has also been stated in the wikipedia article
  • Arne
    Arne over 4 years
    Note: As of VirtualBox 6.0 Hyper-V can be used as a driver for the VM (with performance loss) and Windows 10 should be able to run VMs even with Hyper-V enabled, and no VT-x.