Windows 10
Vagrant文件位于驱动器E:\Vagrant\ubuntu trusty vb 上
Virtualbox机器文件夹F:
当流浪者向上运行时,.vbox文件中的硬盘条目不会更改为正确的目录,而是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:Vagrantubuntu-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_18173box-disk1.vmdk'.
VBoxManage.exe: error: VD: error VERR_PATH_NOT_FOUND opening image file 'f:\ubuntu-cloudimg-trusty-vagrant-amd64_1465855041577_18173box-disk1.vmdk' (VERR_PATH_NOT_FOUND)
VBoxManage.exe: error: Details: code E_FAIL (0x80004005), component MediumWrap, interface IMedium
这是一个错误,还是我可以在流浪文件或配置中更改一些内容?
感谢
好的,这篇文章很旧,但我最近遇到了这个错误,并使用了一个变通方法解决了它。您必须在Vagrant配置文件中将--uartmode1
设置为disconnected
,如下所示:
config.vm.provider "virtualbox" do |v|
v.memory = 4096
v.cpus = 4
v.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ]
end
问候,祝你好运!
我偶然发现了同样的问题。奇怪的是,这两年都没有修好。
从本质上讲,修复方法是应用此处提到的补丁:https://github.com/hashicorp/vagrant/issues/8275#issuecomment-291031171
问题-补丁指的是版本_5_1.rb文件中的一个代码片段,但该代码已被移动到版本_5_0.rb。这意味着,您不能按原样应用补丁。将来,它可能会更改更多,因此我的说明可能会过时。。。
我懒得编辑补丁并学习如何正确应用它,所以我最终将更改逐一应用到相关文件中,如补丁中所述。在Windows上,我还必须更改文件权限,以便将"修改"权限授予计算机用户。
因此,步骤如下:
-
打开安装Vagrant Ruby文件的路径。例如,
C:Program FilesVagrantembeddedgems2.1.2gemsvagrant-2.1.2pluginsprovidersvirtualbox
-
打开子文件夹
action
,并在文件import.rb
和set_name.rb
上的"将修改权限授予用户"组中(权限可以通过上下文菜单中的"属性"选项卡"安全性"按钮"编辑…"照常编辑,选择"用户"并选中"允许修改"选项下的复选框) -
打开文件
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 up
命令的.vagrantmachines
文件夹中删除。然后再次运行vagrant up
。
现在应该使用正确的名称创建虚拟机,并且应该正常工作。