运行官方FreeBSD vagrant box时出现了“Invalid configured shell”错误。

11

我尝试使用以下命令来运行官方的FreeBSD vagrant box:

vagrant init freebsd/FreeBSD-10.2-STABLE

然后,根据https://forums.freebsd.org/threads/52717/上的说明,相应地修改了我的Vagrantfile,添加了以下行:

Vagrant.configure("2") do |config|
  config.vm.guest = :freebsd
  config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
  config.vm.box = "freebsd/FreeBSD-10.2-STABLE"
  config.ssh.shell = "sh"
  config.vm.base_mac = "080027D14C66"

  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--memory", "1024"]
    vb.customize ["modifyvm", :id, "--cpus", "1"]
    vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
    vb.customize ["modifyvm", :id, "--audio", "none"]
    vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
    vb.customize ["modifyvm", :id, "--nictype2", "virtio"]
  end
end

当我执行vagrant up命令时:

vagrant up --provider virtualbox
以下错误已被显示:

配置的 shell(config.ssh.shell)无效,无法正确执行命令。 最常见的原因是使用了系统中不可用的 shell。 请验证您正在使用 shell 的完整路径,并且该 shell 可以由 SSH 用户执行。

不管错误如何,我仍然可以通过 vagrant ssh 进入该虚拟机。 但是,我无法使用 vagrant halt 正确关机。 它会显示与上述相同的错误并且根本不关闭。
1个回答

5
修复方法很简单,这是我犯的一个完全新手错误。在Vagrantfile中,您应该删除运行vagrant init命令时生成的所有部分,除了顶部的两行之外。然后将建议的内容粘贴到这两行下面。完整的Vagrantfile应该像下面这样:
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
    config.vm.guest = :freebsd
    config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", disabled: true
    config.vm.box = "freebsd/FreeBSD-10.2-STABLE"
    config.ssh.shell = "sh"
    config.vm.base_mac = "080027D14C66"

    config.vm.provider :virtualbox do |vb|
      vb.customize ["modifyvm", :id, "--memory", "1024"]
      vb.customize ["modifyvm", :id, "--cpus", "1"]
      vb.customize ["modifyvm", :id, "--hwvirtex", "on"]
      vb.customize ["modifyvm", :id, "--audio", "none"]
      vb.customize ["modifyvm", :id, "--nictype1", "virtio"]
      vb.customize ["modifyvm", :id, "--nictype2", "virtio"]
    end

    config.vm.network "private_network", ip: "192.168.33.10"
end

我做错了的是将Vagrant.configure("2") do |config|块嵌套在自动生成的块内部。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接