73

在 Windows 7 64 位上尝试启动 VM(Ubuntu 32 位)。modify vm尽管在我的 Vagrantfile 中添加了命令,但我无法让我的 VM 显示两个内核。我的 Vagrant 版本是 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。如何在运行时显示 2 个 CPU lscpu

4

3 回答 3

81

添加vb.customize ["modifyvm", :id, "--ioapic", "on"]config.vm.providerVagrantfile 中的块。

查看它提到的 VirtualBox文档:

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

于 2013-06-15T17:55:40.500 回答
36

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

运行或搜索“Windows 功能”并选择“打开或关闭 Windows 功能”。

在复选框中确保 Hyper-V 已关闭 - 您无法在 Microsoft Hyper-V 占用它的情况下为 Virtualbox 启用 VT-x。

然后,您可以通过以下方式使您的 Vagrantfile 启动非常用户友好:

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

假设您想要运行两个内核并且内存略多于 2 Gig

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
于 2015-03-10T23:37:19.093 回答
7

您似乎没有提到您正在使用哪个提供商。从 Vagrant 1.7 开始,许多 VM 提供程序(例如 VirtualBox、HyperV)在您的 Vagrantfile 中支持以下配置:

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

在vagrant 文档中查看您正在使用的特定提供程序。

于 2015-05-28T16:15:12.313 回答