如何用virtualbox和两个cpus创build一个虚拟机?

在Windows 7 64位尝试启动虚拟机(Ubuntu 32位)。 我无法让我的VM显示两个内核,尽pipe在我的Vagrantfile中添加了modify vm命令。 我的stream浪版本是1.2.2。

 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "precise32" config.vm.box_url = "http://files.vagrantup.com/precise32.box" config.vm.provider :virtualbox do |vb| vb.customize ["modifyvm", :id, "--memory", "2048"] vb.customize ["modifyvm", :id, "--cpus", "2"] end end 

有了这个Vagrantfile,我发出vagrant up命令。 然后我发出vagrant ssh接着是lscpu ,得到:

 Architecture: i686 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 1 On-line CPU(s) list: 0 Thread(s) per core: 1 Core(s) per socket: 1 Socket(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 58 Stepping: 9 CPU MHz: 2565.513 BogoMIPS: 5131.02 L1d cache: 32K L1d cache: 32K L2d cache: 6144K 

我认为CPU(s)应该显示2,所以我的虚拟机现在只有一个CPU。 当我运行lscpu时,怎样才能得到2个CPU?

vb.customize ["modifyvm", :id, "--ioapic", "on"]到Vagrantfile中的config.vm.provider块。

看着它提到的VirtualBox 文档 :

“注意对于64位客户机操作系统,尤其是Windows Vista,需要启用I / O APIC;如果要在虚拟机中使用多个虚拟CPU,则也需要该function。

如果您使用Oracle Virtualbox运行vagrant,那么最常见的问题是Windows 7,8或10中的Hyper-V。这会将您限制为32位和一个cpu。

运行或search“Windowsfunction”,然后select“打开或closuresWindowsfunction”。

在checkbox中确保Hyper-V已closures – 您无法为Virtualbox启用VT-x,而Microsoft Hyper-V会将其占用。

然后,你可以让你的Vagrantfile启动非常用户友好的:

  config.vm.provider "virtualbox" do |vb| vb.memory = "2404" vb.cpus = "2" end 

假设你想要运行两个内核,并且超过2G内存

ps – 不要忘记添加你的端口转发。 对于PHPStorm(xdebug,mysql和web),我使用:

  config.vm.network "forwarded_port", guest: 80, host: 8080 config.vm.network "forwarded_port", guest: 3306, host: 3306 config.vm.network "forwarded_port", guest: 9000, host: 9000 

看来你还没有提到你正在使用哪个提供者。 从Vagrant 1.7开始,许多虚拟机提供程序(如VirtualBox,HyperV)在Vagrantfile中支持以下configuration:

 config.vm.provider "virtualbox" do |v| v.memory = 1024 v.cpus = 2 end 

查看你在stream浪文件中使用的具体提供商。