虚拟机VirtualBox启用嵌套VT-x/AMD-V选项灰显问题

167

我在我的Ubuntu 18.04上安装了VirtualBox 6.0,以便进行嵌套虚拟化。虚拟化在我的bios中启用

然而,当我打开我的(已关闭电源的)虚拟机的设置并转到系统 -> 处理器时,选项“启用嵌套VT-x/AMD-V”被禁用,并且我无法启用它。

输入图像描述

16个回答

225

执行这个:

$ VBoxManage modifyvm <VirtualMachineName> --nested-hw-virt on

15
虽然这似乎不太合乎直觉,但是对于我的英特尔酷睿i7处理器来说,它确实有效。为什么这个选项不能在界面中启用呢? - Abe Hoffman
2
直到6.0版本,这在视觉上是有效的,但对虚拟机没有影响(假设主机基于英特尔)。 - Marc Wittke
5
个人意见,使用 vm-name 而不是 virtualbox-name 会更好。 - Corey
2
它确实使按钮可用,但机器不会启动, 未找到本地API dll(C:\ WINDOWS \ system32 \ WinHvPlatform.dll)(VERR_NEM_NOT_AVAILABLE)。 - Michael Biniashvili
16
这种行为实际上是您的CPU类型已知问题。这些型号缺少一种称为VMCS shadowing的功能,该功能可以极大地提高嵌套硬件虚拟化性能,否则将会非常糟糕。这就是为什么它在GUI中不可用的原因。然而,VBoxManage被设计为一种工具,甚至可以进行可能破坏虚拟机配置的更改,用户应该知道自己在做什么。因此,可以从VBoxManage启用它,但预计性能将非常糟糕。 - Mickaël Gauvin
显示剩余7条评论

141

针对Windows操作系统

在Windows操作系统中,进入VirtualBox安装文件夹 -> 在地址栏输入cmd (会弹出该文件夹下的cmd) -> 输入 VBoxManage modifyvm <YourVirtualMachineName> --nested-hw-virt on -> 按回车。

现在应该已经启用了该选项。


4
工作完美无缺,太棒了。 - infiniteLearner
4
这与被接受的答案完全相同(该答案早在一周前发布)。 - Fabian Röling
3
在安装Android模拟器到其中一台Vbox虚拟机时遇到问题的人们应该运行这个命令。 - ambassallo
5
注意,在PowerShell中,如果你信任该可执行文件,你需要写 .\ - StickySli
1
Fabian Roling,没错。我只是在强调如何在Windows上做到这一点。 - Fareed radzi
显示剩余2条评论

27

VirtualBox 6.1.2 上工作正常 (intel i7 2630QM)

(VBoxManage modifyvm lubuntu18 --nested-hw-virt on)

Linux 上的结果

在GUI中启用


3
已在VirtualBox v6.1.2和i7-6880K上成功复制。 - Manuel J. Diaz
我有一个名为“ubuntu 18.04.3”的虚拟机。当我执行“VBoxManage modifyvm ubuntu 18.04.3 --nested-hw-virt on”命令时,它会抛出一个错误:“VBoxManage.exe:error:Could not find a registered machine named 'ubuntu'.. 请问有人可以告诉我如何在Windows 10中避免空格吗? - kart1657
@kart1657,这是由于您机器名称中的空格引起的,空格被视为参数分隔符,因此请始终将其放在引号之间。 - Abdelouahab
1
Win10虚拟机6.1上成功。谢谢。 - NetPlayer

24
据我所知,此选项仅适用于使用AMD CPU的计算机,无法在Intel CPU上启用。这有点具有误导性,因为该选项明确说明支持Intel和AMD虚拟化技术。

这里有VirtualBox文档中的官方确认: https://www.virtualbox.org/manual/ch03.html 章节3.5.2. 处理器标签页

启用嵌套 VT-x/AMD-V:启用嵌套虚拟化,并将硬件虚拟化功能传递到嵌套的虚拟机中。

该功能仅适用于使用AMD CPU的主机系统。对于Intel CPU,该选项被禁用。


6
请查看此公告:https://forums.virtualbox.org/viewtopic.php?f=15&t=94724 6.1版本将在Intel CPU上支持“嵌套硬件虚拟化(从第五代Core i开始,代号Broadwell)”。 - Marc Wittke
4
截至6.1.0_BETA2版本,我在Intel Core i5 Coffee Lake(8259U)(MacbookPro 2018)上仍然无法启用“启用嵌套VT-x / AMD-V”选项。 - averasko
仍在v6.1.36版本上与第11代Core i5处理器灰显。 - Ali Tou
我使用Virtualbox v6.1.38和AMD Ryzen 7 CPU,但它仍然是灰色的。 - Andrew Lamarra

15

Windows 10开始,此问题可能是由Memory Integrity引起的。它默认情况下不活动,因此您可能在过去激活了它。

Windows安全性 -> 设备安全性 -> 核心隔离详细信息 在此输入图片描述

禁用内存完整性,然后重新启动Windows。
VB选项"启用嵌套VT-x/AMD-V"仍应为灰色。
现在,在您的VB安装文件夹中打开一个新的PowerShell并键入:
./VBoxManage modifyvm "Virtual Machine Name" --nested-hw-virt on
您可以在这里找到详细信息(我不知道为什么Microsoft没有在任何地方提及这个可能的问题)。


9

4
现在(版本6.1+),它也能与支持VT-x的英特尔处理器一起使用。 - Jamil Said

4
原来这个选项被禁用是有原因的!我使用Windows 10主机并使用了一段时间的Docker,但卸载后它仍然保持了Hyper-V技术的启用状态(这与虚拟化不兼容)。
请勿在服务器上执行此操作|这将禁用Hyper-V技术-自行承担风险
以管理员身份打开命令提示符并运行以下命令,然后重新启动计算机
DISM /Online /Disable-Feature:Microsoft-Hyper-V
PowerShell Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor -All
bcdedit /set hypervisorlaunchtype off

2
必须运行命令PowerShell Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-Hypervisor -All,但不要使用-All参数。 - Florian Falk

4
在VirtualBox 6.1.2 r135662 (Qt5.6.2)和Intel Core i3-8100上运行正常!
可用的NestedVT截图如下: Screenshot of available NestedVT CMD输出的文本如下:
C:\WINDOWS\system32>ssh myuser@192.168.56.111
myuser@192.168.56.111's password:
Last login: Mon Feb 17 10:11:06 2020 from 192.168.56.1

myuser@nestedvt ~ $ su
Пароль:

root@nestedvt /home/myuser # egrep "svm|vmx" /proc/cpuinfo
root@nestedvt /home/myuser #

root@nestedvt /home/myuser # poweroff
Connection to 192.168.56.111 closed by remote host.
Connection to 192.168.56.111 closed.

C:\WINDOWS\system32>cd "C:\Program Files\Oracle\VirtualBox"
C:\Program Files\Oracle\VirtualBox>VBoxManage modifyvm CentOS7_nestedVT --nested-hw-virt on

C:\Program Files\Oracle\VirtualBox>VBoxManage startvm CentOS7_nestedVT
Waiting for VM "CentOS7_nestedVT" to power on...
VM "CentOS7_nestedVT" has been successfully started.

C:\Program Files\Oracle\VirtualBox>ssh myuser@192.168.56.111
myuser@192.168.56.111's password:
Last login: Mon Feb 17 10:12:08 2020 from 192.168.56.1

myuser@nestedvt ~ $ su
Пароль:

root@nestedvt /home/myuser # egrep "svm|vmx" /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single tpr_shadow flexpriority fsgsbase avx2 invpcid rdseed clflushopt md_clear flush_l1d
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single tpr_shadow flexpriority fsgsbase avx2 invpcid rdseed clflushopt md_clear flush_l1d

root@nestedvt /home/myuser # exit
exit
myuser@nestedvt ~ $ exit
logout
Connection to 192.168.56.111 closed.

C:\Program Files\Oracle\VirtualBox>wmic cpu get name
Name
Intel(R) Core(TM) i3-8100 CPU @ 3.60GHz

C:\Program Files\Oracle\VirtualBox>wmic os get caption
Caption
Microsoft Windows 10 Pro

1
能否请您将图像的输出添加为文本?这样会更易读和搜索。 - art-solopov
谢谢你! - Max Pinto
1
@art-solopov 没问题!完成了! - alkomotiv
我有一个名为“ubuntu 18.04.3”的虚拟机。当我执行“VBoxManage modifyvm ubuntu 18.04.3 --nested-hw-virt on”命令时,它会抛出一个错误:“VBoxManage.exe:error:Could not find a registered machine named 'ubuntu'.. 请问有人可以告诉我如何在Windows 10中避免空格吗? - kart1657
该标志已被重命名为--hwvirtex。 - kalligator

3

最近在Windows 11中,我突然遇到了这个问题。之前我已经禁用了Hyper-V,并且一切正常。最后我不得不使用以下命令:

bcdedit /set hypervisorlaunchtype off

这解决了它的问题,但破坏了最近在Windows 11中引入的Android子系统,所以就是这样...


我猜测Windows子系统需要一定的Hyper-v支持。如果你完全关闭Hyper-v,Android子系统可能无法正常工作。 - liginity

2

在执行VirtualBox的目录中,我运行了一个类似的命令,它可以正常工作(请注意引号的位置!)

VBoxManage modifyvm "path\to\ubuntu 18.04.3.vbox" --nested-hw-virt on

希望这能帮到你。 BD


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接