I was playing around with VirtualBox on my Dell laptop and while I usually don’t bother enabling multiple CPU’s I decided to do it this time for some performance testing. What I thought to be a simple move of a slider in the VM settings turned out to be a quest to outwit Dell BIOS writers.
As it turns out, when I tried to start the VM with the new settings, I got a cryptic error code VERR_VMX_NO_VMX which on second thought isn’t very cryptic at all. Basically it is VirtualBox telling you that the Virtual Machine eXtensions are not available. Since my CPU supports Intel’s VT-x I was kind of surprised, especially since I always enable it in my VMs and they always work.
After some research I found out in the logfiles of the Virtual Machine that the VT-x was actually never used. The CPU reports the extensions as being available, but they are not enabled. Check for this line in the logfile:
00:00:02.058 HWACCM: No VT-x or AMD-V CPU extension found. Reason VERR_VMX_MSR_LOCKED_OR_DISABLED
Googling for ideas I found out that you should check your BIOS settings to see if it is actually enabled but upon opening the BIOS I could not find anything even remotely close to virtualization settings (on Dell laptops, you should find it under the Performance tab). After another quick search round it appears that it is not uncommon for Laptop and System manufacturers to actually hide this functionality and disable it by default.
During my quest for answers I came across a person asking for a way to deploy BIOS settings changes on hundreds of PC’s at the same time and apparently Dell has a handy CLI-utility just for this purpose called CCTK. Figuring it couldn’t hurt trying I downloaded and installed it and lo and behold, I could switch the virtualization setting on and off! After shutting down my PC and turning it back on after 10 seconds (recommended way in the many, many related topics) I could finally enjoy full hardware virtualization.
The short and the long of it
- Download CCTK from here. At the time of writing, there was actually a newer version available through the Older versions link
- Install it
cd "Program FilesDellCCTKX86"(or X86_64 if it applies to you)
C:Program FilesDellCCTKX86>cctk --virtualization
C:Program FilesDellCCTKX86>cctk --virtualization=enable
Disclaimer: I do not take responsibility if this changes your system to a glorified brick sitting on a desk, do this at your own risk. Just because it worked for me doesn’t mean it will work for you. I also don’t think Dell will provide much support if they find out what you were doing 😉
PS: If you want a previously single core Windows XP installation to recognize the multiple processors, you can use HALu