当默认的vb机器文件夹位于f:时,向上浮动vboxmanage verr_path_not_found



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上,我还必须更改文件权限,以便将"修改"权限授予计算机用户。

因此,步骤如下:

  1. 打开安装Vagrant Ruby文件的路径。例如,C:Program FilesVagrantembeddedgems2.1.2gemsvagrant-2.1.2pluginsprovidersvirtualbox

  2. 打开子文件夹action,并在文件import.rbset_name.rb上的"将修改权限授予用户"组中(权限可以通过上下文菜单中的"属性"选项卡"安全性"按钮"编辑…"照常编辑,选择"用户"并选中"允许修改"选项下的复选框)

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

    id = env[:machine].provider.driver.import(ovf_file) do |progress|
    

    带有

    id = env[:machine].provider.driver.import(ovf_file,env) do |progress|
    

    应该只有一行可以替换。

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

    return @app.call(env)
    
  5. 打开子文件夹driver,并在文件version_5_0.rb上向"用户"组授予"修改权限">

  6. 打开文件version_5_0.rb并替换行

    def import(ovf)
    

    带有

    def import(ovf,env)
    
  7. 在同一文件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)}"
    
  8. 查找并删除损坏的虚拟机及其在另一个磁盘上的所有文件,也可以从启动vagrant up命令的.vagrantmachines文件夹中删除。然后再次运行vagrant up

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

最新更新