由于 ubuntu 上的标准 DHCP "vboxnet0",Vagrant with Virtualbox 无法启动
Vagrant with Virtualbox does not start because of standard DHCP "vboxnet0" on ubuntu
在 vagrant up
上,vagrant 显示以以下内容开头的错误:
A host only network interface you're attempting to configure via DHCP already has a conflicting host only adapter with DHCP enabled. [...]
这是自 2014 年以来的全新安装和一个已知问题。解决方法是每次在 vagrant up 之前手动执行 VBoxManage dhcpserver remove --netname HostInterfaceNetworking-vboxnet0
。
但这怎么能自动完成呢?
将以下代码放在 Vagrantfile 的开头将自动解决问题,并且仅在基于 os 的 linux 上执行:
Vagrant.configure("2") do |config|
host = RbConfig::CONFIG['host_os']
if host =~ /(linux)/
config.trigger.before :up do |trigger|
trigger.warn = "removing standard dhcp host interface if existent"
trigger.run = {inline: "bash -c 'if [ $( VBoxManage list dhcpservers | grep -c vboxnet0 ) != \"0\" ]; then VBoxManage dhcpserver remove --netname HostInterfaceNetworking-vboxnet0; fi'"}
end
end
# [...] your other code here ---
end
该代码首先检查是否有名称包含字符串 vboxnet0
的 dhcp 服务器,否则 VBoxManage
将以错误结束,如果标准 dhcp 不存在则阻止您启动虚拟机存在(有时会发生)。
在 vagrant up
上,vagrant 显示以以下内容开头的错误:
A host only network interface you're attempting to configure via DHCP already has a conflicting host only adapter with DHCP enabled. [...]
这是自 2014 年以来的全新安装和一个已知问题。解决方法是每次在 vagrant up 之前手动执行 VBoxManage dhcpserver remove --netname HostInterfaceNetworking-vboxnet0
。
但这怎么能自动完成呢?
将以下代码放在 Vagrantfile 的开头将自动解决问题,并且仅在基于 os 的 linux 上执行:
Vagrant.configure("2") do |config|
host = RbConfig::CONFIG['host_os']
if host =~ /(linux)/
config.trigger.before :up do |trigger|
trigger.warn = "removing standard dhcp host interface if existent"
trigger.run = {inline: "bash -c 'if [ $( VBoxManage list dhcpservers | grep -c vboxnet0 ) != \"0\" ]; then VBoxManage dhcpserver remove --netname HostInterfaceNetworking-vboxnet0; fi'"}
end
end
# [...] your other code here ---
end
该代码首先检查是否有名称包含字符串 vboxnet0
的 dhcp 服务器,否则 VBoxManage
将以错误结束,如果标准 dhcp 不存在则阻止您启动虚拟机存在(有时会发生)。