我尝试使用 virtualbox 虚拟化 64 位系统,但得到的错误是:
La aceleración VT-x/AMD-V ha sido habilitada, pero no es funcional. Su sistema invitado de 64-bit fallára al detectar una CPU de 64-bit y no podrá arrancar.
Compruebe que VT-x/AMD-V están habilitadas en la BIOS de su computadora anfitrión.
对于不懂西班牙语的人,谷歌翻译给出:
VT-x/AMD-V acceleration has been enabled but is not functional.
Its system of 64-bit guest will fail to detect a 64-bit CPU and will not boot.
Check VT-x/AMD-V are enabled in the BIOS of your host computer.
我已经使用以下命令检查了 AMD V CPU 虚拟化扩展:
grep --color svm /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 mmxext fxsr_opt pdpe1gb
rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid perfmperf
pni monitor ssse3 cx16 popcnt lahf_lm cmp_legacy svm extapic
cr8_legacy abm sse4a misalignsse 3dnowprefetch ibs skinit wdt arat cpb
hw_pstate npt lbrv svm_lock nrip_save pausefilter
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 mmxext fxsr_opt pdpe1gb
rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid
aperfmperf pni monitor ssse3 cx16 popcnt lahf_lm cmp_legacy svm
extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch ibs skinit wdt
arat cpb hw_pstate npt lbrv svm_lock nrip_save pausefilter
运行命令lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: AuthenticAMD
CPU family: 20
Model: 2
Stepping: 0
CPU MHz: 800.000
BogoMIPS: 1996.36
Virtualization: AMD-V
L1d cache: 32K
L1i cache: 32K
L2 cache: 512K
NUMA node0 CPU(s): 0,1
更新
运行命令:
grep -o "^flags\s*:.*\ssvm\(\s\|$\)" /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 mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor ssse3 cx16 popcnt lahf_lm cmp_legacy svm
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 mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc extd_apicid aperfmperf pni monitor ssse3 cx16 popcnt lahf_lm cmp_legacy svm
所以,它可能是从BIOS或其他地方修复的。
如何纠正错误?有可能吗?
答案1
的输出lscpu
表明 CPU 能够执行的操作,不一定是在 BIOS 中启用的,或者您进入 BIOS 并可以配置它。
这BIOS手册机器上没有任何迹象表明您可以设置此项,但通常浏览 BIOS 中有限数量的 CPU 选项会告诉您是否可以。
如果您找不到它,您可能必须去 Acer 提供的支持 UEFI 的 BIOS 升级,以启用(在 UEFI 模式下)AMD-V。这很可能需要重新安装主机系统。
另一种方法是尝试从 ACER 网站下载 BIOS 版本 1.05 并安装 ZHGBIOS.FD,据说在“电源”->“高级 CPU 控制”下有一个设置 ZSM 的选项。
如果您之前没有进行过 BIOS 升级和/或如果这是您唯一必须上网的机器,以防出现问题,我不能推荐这两个选项中的任何一个。
答案2
包括适用于 Intel 和 AMD 的程序,就好像有人使用过其中任何一个一样。grep
为了完整起见,还包括一些您知道的信息svm
。
检查支持
检查可视化是否可用
Intel 检查是否
vmx
找到 (VT-x
)grep -o "^flags\s*:.*\svmx\(\s\|$\)" /proc/cpuinfo
AMD 检查是否
svm
找到 (AMD-V
)grep -o "^flags\s*:.*\ssvm\(\s\|$\)" /proc/cpuinfo
如果没有找到,人们很可能会倒霉。
还可以通过以下方式检查 BIOS 中的标志:dmidecode
dmidecode --type 4 | grep -i virt
VME (Virtual mode extension) # On a specific i386
检查状态 - 需要 root 权限
读取机器/型号特定寄存器 (MSR) (MSR man msr
) ,msr-tools
如果未启用(读取失败),则使用以下方式加载 msr:
modprobe msr
然后使用rdmsr
, (快速入门) 读取处理器 MSR。
英特尔
对于 Intel 处理器,可以通过从处理器读取IA32_FEATURE_CONTROL
(1)来检查当前状态。
IA32_FEATURE_CONTROL MSR(位于地址
03AH
)提供配置 VMX 和 SMX 操作的功能控制位。
执行命令:
rdmsr -f 0:0 0x3a # Read bit-field 0 (Lock-bit)
rdmsr -f 2:2 0x3a # Read bit-field 2 (Enable VMX outside SMX operation)
这些命令应该给出:
0:0 2:2
0 ENABLED (Not 100% sure about this one, `kvm-ok` reports VMX
as enabled when 0 – perhaps meant as modifiable.)
1 1 ENABLED
1 0 DISABLED
位 2 启用 SMX 操作之外的 VMX。如果该位清零,则在 SMX 操作之外执行 VMXON 的尝试将导致一般保护异常。尝试在不支持 VMX 操作的逻辑处理器上设置该位会导致一般保护异常。
(1) 英特尔® 64 和 IA-32 架构软件开发人员手册卷。 2C 5-1 第 1072 页。
AMD
阅读 PDF 格式的扩展功能启用寄存器 (EFER) (2) 第 55、103 页 其中位 12 是“启用安全虚拟机”(SVME),指示是否启用硬件虚拟化。
执行命令:
rdmsr -f 12:12 0xc0000080 # If set (1), SVME is enabled.
安全虚拟机启用 (SVME) 位。位 12,读/写。启用 SVM 扩展。当该位为零时,SVM 指令会导致#UD 异常。 EFER.SVME 默认重置值为零。在来宾运行时关闭 EFER.SVME 的效果未定义;因此,VMM 应始终阻止来宾写入 EFER。可以通过设置 VM_CR.SVME_DISABLE 来禁用 SVM 扩展。
检查是否禁用会话检查VM_CR.SVME_DISABLE
(2) 第 57、504 页(PDF 中为 105、552)
执行命令:
rdmsr -f 4:4 0xc0010114 # If set (1), it is disabled.
如:您必须在 BIOS 中启用。
SVMDIS — 位 4。当设置该位时,写入 EFER 会将 SVME 位视为 MBZ。当该位清零时,EFER.SVME 可以正常写入。该位不会阻止 CPUID 报告 SVM 可用。当 EFER.SVME 为 1 时设置 SVMDIS 会生成 #GP 故障,无论 VM_CR.LOCK 的当前状态如何。该位不受 SKINIT 影响。当LOCK清0时由INIT清零;否则不受影响。
键盘虚拟机
如果加载了 KVM 模块,您需要通过以下方式删除它们:
sudo modprobe -r kvm_intel
sudo modprobe -r kvm_amd
分别针对英特尔和 AMD,因为它们与 Virtual Box 发生冲突。参考号
启用
我想对于你的具体型号@安东已经说了很多了。
正如他提到的,通过使用UEFI
你很可能必须重新安装您的主机系统。升级 BIOS 还存在很多其他风险,其中包括:
- 新的 BIOS 可能会触发硬件中的潜在错误。
- BIOS 闪存可能会因软件损坏等原因崩溃。
- 人们可能下载了错误的 BIOS(针对不同型号)。
- 计算机可能会崩溃,在闪存中断电。 (又名怪异事故)。
- N^x 个未知因素可能发挥作用。
- ETC。
如果闪存崩溃,可能会导致您的电脑完全无法启动,并且修复起来可能会很困难。 (您无法启动并修复 BIOS。)
您应该有当前 BIOS 的备份和 USB 救援棒。
网上搜索一下,例如看这个。检查您的型号是否有“内置 BIOS 恢复例程”正如该页面上一篇文章中提到的。 (正如您所看到的,即使这样也会带来麻烦)。
是的,正如安东所提到的。如果您没有任何其他 PC 可以方便地进行网络搜索以防万一出现故障,则不推荐使用它。
如果您愿意进行黑客攻击,冒着未知后果等风险,您可以尝试使用“非官方 BIOS 版本”。该线程位于BOIS-Mods有软件和一般性讨论。会彻底阅读整个线程并询问是否有任何问题。
根据您的兴趣、时间和知识水平,您也可以尝试自己破解它;)