在Windows 7 64位上尝试启动VM(Ubuntu 32位)。尽管在我的Vagrantfile中添加了modify vm
命令,但我无法让我的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应该显示2,所以我的VM现在只有一个CPU。如何在运行lscpu
时显示2个CPU?
答案 0 :(得分:78)
将vb.customize ["modifyvm", :id, "--ioapic", "on"]
添加到您的Vagrant文件中的config.vm.provider
块。
查看虚拟框documentation,它提到:
“注意64位客户机操作需要启用I / O APIC 系统,尤其是Windows Vista;如果你愿意,也需要它 在虚拟机中使用多个虚拟CPU。“
答案 1 :(得分:22)
如果您使用Oracle Virtualbox运行流浪者,那么最常见的问题是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 GB的内存
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
答案 2 :(得分:6)
您好像没有提到您正在使用哪个提供商。从Vagrant 1.7开始,许多VM提供程序(例如VirtualBox,HyperV)在Vagrantfile中支持以下配置:
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 2
end
在vagrant documentation中查看您使用的特定提供商。