![无法让 KVM 在运行于 AMD 机器上的 Fedora Linux 上运行](https://linux22.com/image/1569940/%E6%97%A0%E6%B3%95%E8%AE%A9%20KVM%20%E5%9C%A8%E8%BF%90%E8%A1%8C%E4%BA%8E%20AMD%20%E6%9C%BA%E5%99%A8%E4%B8%8A%E7%9A%84%20Fedora%20Linux%20%E4%B8%8A%E8%BF%90%E8%A1%8C.png)
我一直尝试让 KVM 在安装在具有 AMD 处理器的台式计算机上的 Fedora Linux 上运行,但没有成功。
[kp@localhost ~]$ lscpu | grep 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 cpuid extd_apicid aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor smca
从上面的标志可以看出,SVM 可用。我还在 BIOS 设置中验证了“安全虚拟机”已启用。
[kp@localhost ~]$ lsmod | grep kvm
kvm 724992 0
irqbypass 16384 1 kvm
当我尝试加载 kvm_amd 模块时,命令永远卡住了:
[kp@localhost ~]$ sudo modprobe kvm_amd
[sudo] password for kp:
当我尝试使用虚拟机管理器创建新的虚拟机时,它会给出以下警告:
Warning: KVM is not available. This may mean KVM package is not installed, or the KVM kernel modules are not loaded. Your virtual machines may perform poorly.
你知道这里可能存在什么问题吗?我没有发现 journalctl 输出中打印任何明显的错误。
答案1
在网上搜索了一番后,我发现问题在于这个 Fedora Linux 内核上的 kvm_amd 没有激活。显然,需要使用名为 CONFIG_CRYPTO_DEV_SP_PSP=n 的自定义参数来编译内核,以修复此问题。
从这里找到了这些信息:
https://forum.level1techs.com/t/antergos-kvm-amd-not-active-threadripper/130245/9
查看用户 IceWind 的帖子:
“使用 CONFIG_CRYPTO_DEV_SP_PSP=n 编译内核似乎可以修复 threadripper 上的最新 bios 更新带来的 kvm 问题。”