Windows 10
Vagrant文件位于云端硬盘E:\ Vagrant \ ubuntu-trusty-vb
Virtualbox机器文件夹F:
当vagrant up运行时,.vbox文件中的HardDisk条目不会更改为正确的目录,而是f:\ubuntu-cloudimg-trusty-vagrant-amd64_1465748344502_5020
而不是实际创建的F:\ubuntu-trusty-vb_default_1465748361721_37792
<HardDisks>
<HardDisk uuid="{e1fce00d-2c78-4d36-9bff-5fcb08ff1b32}" location="f://ubuntu-cloudimg-trusty-vagrant-amd64_1465855041577_18173/box-disk1.vmdk" format="VMDK" type="Normal"/>
</HardDisks>
E:\Vagrant\ubuntu-trusty-vb>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/trusty64' is up to date...
==> default: Setting the name of the VM: ubuntu-trusty-vb_default_1465855058236_73527
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.
Command: ["startvm", "197fba85-e448-449d-a7d3-14565879a8e4", "--type", "headless"]
Stderr: VBoxManage.exe: error: Could not open the medium 'f:\\ubuntu-cloudimg-trusty-vagrant-amd64_1465855041577_18173\box-disk1.vmdk'.
VBoxManage.exe: error: VD: error VERR_PATH_NOT_FOUND opening image file 'f:\\ubuntu-cloudimg-trusty-vagrant-amd64_1465855041577_18173\box-disk1.vmdk' (VERR_PATH_NOT_FOUND)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MediumWrap, interface IMedium
这是一个错误还是我可以在vagrantfile或配置中更改某些内容?
由于
答案 0 :(得分:0)
好的,这篇文章很老了,但我最近遇到了这个错误,并且使用了一种解决方法解决了这个问题。您必须最终将--uartmode1
设置为disconnected
,如下面的Vagrant配置文件中所示:
config.vm.provider "virtualbox" do |v|
v.memory = 4096
v.cpus = 4
v.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ]
end
问候,祝你好运!
答案 1 :(得分:0)
我偶然发现了同样的问题。奇怪的是,这两年还没有修复。
本质上,解决方法是应用此处提到的补丁: https://github.com/hashicorp/vagrant/issues/8275#issuecomment-291031171
问题-修补程序引用了version_5_1.rb文件中的代码片段,但该代码已移至version_5_0.rb。这意味着您不能按原样应用补丁。将来,它可能会发生更多变化,因此我的说明可能会过时...
我懒得编辑补丁并学习如何正确应用补丁,所以最终我按照补丁中所述将更改逐一应用到相关文件。在Windows上,我还必须更改文件权限,才能为计算机用户提供“修改”权限。
因此,步骤如下:
打开Vagrant Ruby文件的安装路径。例如,C:\Program Files\Vagrant\embedded\gems\2.1.2\gems\vagrant-2.1.2\plugins\providers\virtualbox
打开子文件夹action
,然后向文件import.rb
和set_name.rb
的Users组授予“修改权限”(权限可以照常通过上下文菜单编辑,在“属性”中,“安全性”选项卡,然后点击编辑..,选择用户,然后选中允许修改选项下的复选框)
打开文件import.rb
并替换行
id = env[:machine].provider.driver.import(ovf_file) do |progress|
使用
id = env[:machine].provider.driver.import(ovf_file,env) do |progress|
应该只替换一行。
打开文件set_name.rb
,找到def call(env)
并在其下添加以下几行:
return @app.call(env)
打开子文件夹driver
,然后向文件version_5_0.rb
的“用户”组授予“修改权限”
打开文件version_5_0.rb
并替换行
def import(ovf)
使用
def import(ovf,env)
在同一文件version_5_0.rb
中替换行
specified_name = "#{suggested_name}_#{(Time.now.to_f * 1000.0).to_i}_#{rand(100000)}"
带有以下片段
name = env[:machine].provider_config.name
# If no name was manually set, then use a default
if !name
prefix = "#{env[:root_path].basename.to_s}_#{env[:machine].name}"
prefix.gsub!(/[^-a-z0-9_]/i, "")
# milliseconds + random number suffix to allow for simultaneous
# `vagrant up` of the same box in different dirs
name = prefix + "_#{(Time.now.to_f * 1000.0).to_i}_#{rand(100000)}"
end
specified_name = "#{name}_#{(Time.now.to_f * 1000.0).to_i}_#{rand(100000)}"
查找并删除损坏的虚拟机及其在其他磁盘上的所有文件,也从启动.vagrant\machines
命令的vagrant up
文件夹中查找并删除。然后再次运行vagrant up
。
现在应该使用适当的名称创建虚拟机,并且虚拟机应该可以正常工作。