关于virtualbox上ubuntu运行qemu卡住问题

1,710 阅读2分钟

1、问题现象

virtualbox运行qemu卡住不动,网上有资料说只是运行慢,不是卡住,但是我遇到的运行了一天也启动不了。

idle@linux:~/study/script$ qemu-system-x86_64 -m 4096 -kernel ~/study/linux-4.19.157/arch/x86/boot/bzImage -initrd ~/study/initrd-busybox.img -append "console=ttys0 nokaslr" -nographic
warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5]

之前在文章 如何使用qemu玩转KASAN 中有提到:

出现这个问题的原因是:qemu 分配的默认 RAM 是 128M,此时是要大量的RAM来运行,我尝试设置1700才开始正常运行。但是这次遇到默认 RAM 4096M也不能运行了,只有kill掉这个qemu的进程。

2、解决问题过程

2.1、查找资料

在网上找了很多资料,其中 QEMU debugging:: Warning:TCG doesn't support requested feature: CPUID.01H:ECX,有说修改RAM大小,的确是有起作用过一段时间,但是后续不顶用。也有说添加支持kvm硬件虚拟化技术,使用kvm-ok检查是否支持,结果在我使用的virtualbox上安装的ubuntu16.04上,表现如下:

//验证Linux系统是否支持硬件虚拟化,如果上面的命令返回数字0,就表示CPU不支持硬件虚拟化
idle@linux:~$ egrep -c '(vmx|svm)' /proc/cpuinfo
0
//使用以下命令安装 kvm-ok 实用程序,它用于确定您的服务器是否能够运行硬件加速的 KVM 虚拟机
idle@linux:~$ sudo apt install cpu-checker
//运行 kvm-ok 命令并验证输出
idle@linux:~/study/script$ kvm-ok 
INFO: Your CPU does not support KVM extensions
INFO: For more detailed results, you should run this as root
HINT:   sudo /usr/sbin/kvm-ok 

即我安装的virtualbox不支持硬件虚拟化,接下来需要找到在virtualbox打开kvm的方法。

2.2、在virtualbox打开kvm

参考如下文章,在VirtualBox 6.1里面打开嵌套 VT-x/AMD-V 功能

2.2.1 在virtualbox进行设置

image.png

2.2.2 此时发现没法启用嵌套VT-x/AMD-V选项,checkbox是灰色的

image.png

2.2.3 需要用CMD中的VBoxManage 命令行的方式来打开这个选项

C:\Users\keke\Desktop> cd D:\d\VirtualBox\
D:\d\VirtualBox> .\VBoxManage.exe list vms
"ubuntu16.04A" {b0063d3c-a8d3-4be2-82b2-90bfd59dbb34}
"ubuntu18" {ba96a7d0-35c5-4c45-8c7e-b15e5c111120}
D:\d\VirtualBox> .\VBoxManage.exe modifyvm "ubuntu16.04A" --nested-hw-virt on

2.2.4 启用嵌套VT-x/AMD-V选项,开启虚拟机

image.png

但是,在egrep -c '(vmx|svm)' /proc/cpuinfo时,仍然返回为0。不排除有人会因为这个动作解决这个问题,因为参考博客中就是因为这样ok了。可是我这边不行。

2.3、使用VMware安装ubuntu

此时只能尝试找其他原因,笔记本BIOS的Virtualization Technology也是开启的。然后陷入尴尬境地,没有啥好办法。找其他人的VM ware尝试了一下,使用egrep -c '(vmx|svm)' /proc/cpuinfo返回不为0,然后就尝试使用VM ware安装同一个版本的ubuntu16.04进行尝试,最后发现的确是ok的。

idle@ubuntu:~$ egrep -c '(vmx|svm)' /proc/cpuinfo 
2

然后重新部署qemu环境就ok了。

在后续启动qemu的命令行中,添加-machine ubuntu,accel=kvm就不会出现warning: TCG doesn't support requested feature: CPUID.01H:ECX.vmx [bit 5]的警告了。

qemu-system-x86_64 -machine ubuntu,accel=kvm -m 4096 -kernel ~/study/linux-4.19.157/arch/x86/boot/bzImage -initrd ~/study/initrd-busybox.img -append "console=ttyS0 nokaslr" -nographic