Vagrant 当f上的默认vb计算机文件夹为时,未找到vboxmanage verr_路径:

Vagrant 当f上的默认vb计算机文件夹为时,未找到vboxmanage verr_路径:,vagrant,virtualbox,Vagrant,Virtualbox,视窗10 Vagrant文件位于驱动器E:\Vagrant\ubuntu trusty vb上 Virtualbox计算机文件夹F: 当vagrant up运行时,.vbox文件中的硬盘条目不会被更改到正确的目录,而是f:\ubuntu-cloudimg-trusty-vagrant-amd64_14657483444502_5020而不是实际创建的f:\ubuntu-trusty-vb_default_14657483361721_37792 <HardDisks>

视窗10

Vagrant文件位于驱动器E:\Vagrant\ubuntu trusty vb上

Virtualbox计算机文件夹F:

当vagrant up运行时,.vbox文件中的硬盘条目不会被更改到正确的目录,而是
f:\ubuntu-cloudimg-trusty-vagrant-amd64_14657483444502_5020
而不是实际创建的
f:\ubuntu-trusty-vb_default_14657483361721_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

E:\Vagrant\ubuntu trusty vb>Vagrant up
正在使用“virtualbox”提供程序启动计算机“默认”。。。
==>默认值:导入基本框“ubuntu/trusty64”。。。
==>默认值:匹配NAT网络的MAC地址。。。
==>默认设置:检查“ubuntu/trusty64”框是否是最新的。。。
==>默认:设置虚拟机的名称:ubuntu-trusty-vb_default_146585058236_73527
==>默认值:清除以前设置的所有转发端口。。。
==>默认设置:清除任何以前设置的网络接口。。。
==>默认值:根据配置准备网络接口。。。
默认值:适配器1:nat
==>默认值:转发端口。。。
默认值:22(来宾)=>2222(主机)(适配器1)
==>默认值:正在启动VM。。。
执行Vagrant使用的CLI“VBoxManage”时出错
用于控制VirtualBox。命令和stderr如下所示。
命令:[“startvm”、“197fba85-e448-449d-a7d3-14565879a8e4”、“类型”、“无头”]
Stderr:VBoxManage.exe:错误:无法打开媒体“f:\\ubuntu-cloudimg-trusty-vagrant-amd64_14658555041577_18173\box-disk1.vmdk”。
VBoxManage.exe:错误:VD:打开图像文件'f:\\ubuntu-cloudimg-trusty-vagrant-amd64_1465855041577_18173\box-disk1.vmdk'时未找到错误路径(未找到路径)
VBoxManage.exe:错误:详细信息:代码E_失败(0x80004005)、组件介质包装、接口IMedium
这是一个bug还是我可以在Vagrant文件或配置中更改某些内容


谢谢

好的,这篇文章已经很老了,但我最近遇到了这个错误,并通过解决方法解决了这个问题。您必须将
--uartmode1
设置为
断开连接
,如下所示:

config.vm.provider "virtualbox" do |v|
        v.memory = 4096
        v.cpus = 4
        v.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ]
end

你好,祝你好运

我偶然发现了同样的问题。奇怪的是这两年都没修好

基本上,修复方法是应用此处提到的修补程序:

问题-修补程序引用了版本_5_1.rb文件中的代码片段,但该代码已移动到版本_5_0.rb。这意味着您无法按原样应用修补程序。将来,它可能会发生更大的变化,因此我的指令可能会过时

我懒得编辑补丁并学习如何正确应用它,所以我最终将更改一个接一个地应用到相关文件中,如补丁中所述。在Windows上,我还必须更改文件权限以向计算机用户授予修改权限

因此,步骤如下:

  • 打开安装Vagrant Ruby文件的路径。例如,
    C:\ProgramFiles\Vagrant\embedded\gems\2.1.2\gems\Vagrant-2.1.2\plugins\providers\virtualbox

  • 打开子文件夹
    action
    并在文件
    import.rb
    set_name.rb
    上的“向用户授予修改权限”组中(权限可以像往常一样通过上下文菜单进行编辑,在“属性”、“选项卡安全性”、“按钮编辑…”中,选择用户并选中“允许修改”选项下的复选框)

  • 打开文件
    import.rb
    并替换行

    id = env[:machine].provider.driver.import(ovf_file) do |progress|
    
    def import(ovf)
    
    specified_name = "#{suggested_name}_#{(Time.now.to_f * 1000.0).to_i}_#{rand(100000)}"
    

    应该只有一条线需要更换

  • 打开文件
    set_name.rb
    并找到
    def call(env)
    并在其下方添加以下行:

          return @app.call(env)
    
  • 打开子文件夹
    driver
    并在文件
    version\u 5\u 0.rb上的“向用户授予修改权限”组中

  • 打开文件
    version\u 5\u 0.rb
    并替换行

    id = env[:machine].provider.driver.import(ovf_file) do |progress|
    
    def import(ovf)
    
    specified_name = "#{suggested_name}_#{(Time.now.to_f * 1000.0).to_i}_#{rand(100000)}"
    

  • 在同一文件中
    version_5_0.rb
    替换行

    id = env[:machine].provider.driver.import(ovf_file) do |progress|
    
    def import(ovf)
    
    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
    命令的
    .vagrant\machines
    文件夹中查找并删除。然后再次运行
    vagrant up


  • 现在,虚拟机应该使用正确的名称创建,并且应该可以正常工作。

    我也有同样的问题!!我的开发文件都在d:上,但我在d:上没有足够的空间用于虚拟机,因此我将VirtualBox中的默认位置设置为f:并且我得到了完全相同的问题。