Как исправить не удалось смонтировать папку в Linux Guest, «vboxsf» недоступен в бродяге с использованием Windows?

Я установил laravel homestead, следуя документам здесь и следуя руководству здесь.

Теперь, когда я командую vagrant up внутри корневого каталога (<myName>@<myPCName> MING32 ~/Homestead (master)), отображается ошибка.

Я пытаюсь следовать решениям здесь в ответе № 1 я успешно следую инструкциям решения, но оно остается прежним, даже когда я делаю vagrant reload --provision и vagrant reload, а затем vagrant up.

Я поставил свой laravel на C:/xampp/htdocs/laraTry и ~/Code. И я использую Windows 10.

Вот мой Vagrantfile' inside~/Homestead`:

# -*- mode: ruby -*-
# vi: set ft=ruby :

require 'json'
require 'yaml'

VAGRANTFILE_API_VERSION = "2"
confDir = $confDir ||= File.expand_path("~/.homestead")

homesteadYamlPath = confDir + "/Homestead.yaml"
homesteadJsonPath = confDir + "/Homestead.json"
afterScriptPath = confDir + "/after.sh"
aliasesPath = confDir + "/aliases"

require File.expand_path(File.dirname(__FILE__) + '/scripts/homestead.rb')

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
if File.exists? aliasesPath then
    config.vm.provision "file", source: aliasesPath, destination: "~/.bash_aliases"
end

if File.exists? homesteadYamlPath then
    settings = YAML::load(File.read(homesteadYamlPath))
elsif File.exists? homesteadJsonPath then
    settings = JSON.parse(File.read(homesteadJsonPath))
end

Homestead.configure(config, settings)

if File.exists? afterScriptPath then
    config.vm.provision "shell", path: afterScriptPath, privileged: false
end

if defined? VagrantPlugins::HostsUpdater
    config.hostsupdater.aliases = settings['sites'].map { |site| site['map'] }
end
end

Моя усадьба.yaml (C:Users//.homestead):

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Code
      to: /home/vagrant/Code

sites:
    - map: homestead.app
      to: /home/vagrant/Code/Laravel/public

databases:
    - homestead

И homestead.rb (C:/Users//Homestead/scripts):

class Homestead
def Homestead.configure(config, settings)
# Set The VM Provider
ENV['VAGRANT_DEFAULT_PROVIDER'] = settings["provider"] ||= "virtualbox"

# Configure Local Variable To Access Scripts From Remote Location
scriptDir = File.dirname(__FILE__)

# Prevent TTY Errors
config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"

# Allow SSH Agent Forward from The Box
config.ssh.forward_agent = true

# Configure The Box
config.vm.box = settings["box"] ||= "laravel/homestead"
config.vm.box_version = settings["version"] ||= ">= 0.4.0"
config.vm.hostname = settings["hostname"] ||= "homestead"

# Configure A Private Network IP
config.vm.network :private_network, ip: settings["ip"] ||= "192.168.10.10"

# Configure Additional Networks
if settings.has_key?("networks")
  settings["networks"].each do |network|
    config.vm.network network["type"], ip: network["ip"], bridge: network["bridge"] ||= nil
  end
end

# Configure A Few VirtualBox Settings
config.vm.provider "virtualbox" do |vb|
  vb.name = settings["name"] ||= "homestead-7"
  vb.customize ["modifyvm", :id, "--memory", settings["memory"] ||= "2048"]
  vb.customize ["modifyvm", :id, "--cpus", settings["cpus"] ||= "1"]
  vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  vb.customize ["modifyvm", :id, "--ostype", "Ubuntu_64"]
end

# Configure A Few VMware Settings
["vmware_fusion", "vmware_workstation"].each do |vmware|
  config.vm.provider vmware do |v|
    v.vmx["displayName"] = settings["name"] ||= "homestead-7"
    v.vmx["memsize"] = settings["memory"] ||= 2048
    v.vmx["numvcpus"] = settings["cpus"] ||= 1
    v.vmx["guestOS"] = "ubuntu-64"
  end
end

# Configure A Few Parallels Settings
config.vm.provider "parallels" do |v|
  v.update_guest_tools = true
  v.memory = settings["memory"] ||= 2048
  v.cpus = settings["cpus"] ||= 1
end

# Standardize Ports Naming Schema
if (settings.has_key?("ports"))
  settings["ports"].each do |port|
    port["guest"] ||= port["to"]
    port["host"] ||= port["send"]
    port["protocol"] ||= "tcp"
  end
else
  settings["ports"] = []
end

# Default Port Forwarding
default_ports = {
  80   => 8000,
  443  => 44300,
  3306 => 33060,
  5432 => 54320
}

# Use Default Port Forwarding Unless Overridden
unless settings.has_key?("default_ports") && settings["default_ports"] == false
  default_ports.each do |guest, host|
    unless settings["ports"].any? { |mapping| mapping["guest"] == guest }
      config.vm.network "forwarded_port", guest: guest, host: host, auto_correct: true
    end
  end
end

# Add Custom Ports From Configuration
if settings.has_key?("ports")
  settings["ports"].each do |port|
    config.vm.network "forwarded_port", guest: port["guest"], host: port["host"], protocol: port["protocol"], auto_correct: true
  end
end

# Configure The Public Key For SSH Access
if settings.include? 'authorize'
  if File.exists? File.expand_path(settings["authorize"])
    config.vm.provision "shell" do |s|
      s.inline = "echo $1 | grep -xq \"$1\" /home/vagrant/.ssh/authorized_keys || echo $1 | tee -a /home/vagrant/.ssh/authorized_keys"
      s.args = [File.read(File.expand_path(settings["authorize"]))]
    end
  end
end

# Copy The SSH Private Keys To The Box
if settings.include? 'keys'
  settings["keys"].each do |key|
    config.vm.provision "shell" do |s|
      s.privileged = false
      s.inline = "echo \"$1\" > /home/vagrant/.ssh/$2 && chmod 600 /home/vagrant/.ssh/$2"
      s.args = [File.read(File.expand_path(key)), key.split('/').last]
    end
  end
end

# Copy User Files Over to VM
if settings.include? 'copy'
  settings["copy"].each do |file|
    config.vm.provision "file" do |f|
      f.source = File.expand_path(file["from"])
      f.destination = file["to"].chomp('/') + "/" + file["from"].split('/').last
    end
  end
end

# Register All Of The Configured Shared Folders
if settings.include? 'folders'
  settings["folders"].each do |folder|
    mount_opts = []

    if (folder["type"] == "nfs")
        mount_opts = folder["mount_options"] ? folder["mount_options"] : ['actimeo=1']
    elsif (folder["type"] == "smb")
        mount_opts = folder["mount_options"] ? folder["mount_options"] : ['vers=3.02', 'mfsymlinks']
    end

    # For b/w compatibility keep separate 'mount_opts', but merge with options
    options = (folder["options"] || {}).merge({ mount_options: mount_opts })

    # Double-splat (**) operator only works with symbol keys, so convert
    options.keys.each{|k| options[k.to_sym] = options.delete(k) }

    config.vm.synced_folder folder["map"], folder["to"], type: folder["type"] ||= nil, **options

    # Bindfs support to fix shared folder (NFS) permission issue on Mac
    if Vagrant.has_plugin?("vagrant-bindfs")
      config.bindfs.bind_folder folder["to"], folder["to"]
    end
  end
end

# Install All The Configured Nginx Sites
config.vm.provision "shell" do |s|
    s.path = scriptDir + "/clear-nginx.sh"
end


if settings.include? 'sites'
  settings["sites"].each do |site|
    type = site["type"] ||= "laravel"

    if (site.has_key?("hhvm") && site["hhvm"])
      type = "hhvm"
    end

    if (type == "symfony")
      type = "symfony2"
    end

    config.vm.provision "shell" do |s|
      s.name = "Creating Site: " + site["map"]
      s.path = scriptDir + "/serve-#{type}.sh"
      s.args = [site["map"], site["to"], site["port"] ||= "80", site["ssl"] ||= "443"]
    end

    # Configure The Cron Schedule
    if (site.has_key?("schedule"))
      config.vm.provision "shell" do |s|
        s.name = "Creating Schedule"

        if (site["schedule"])
          s.path = scriptDir + "/cron-schedule.sh"
          s.args = [site["map"].tr('^A-Za-z0-9', ''), site["to"]]
        else
          s.inline = "rm -f /etc/cron.d/$1"
          s.args = [site["map"].tr('^A-Za-z0-9', '')]
        end
      end
    end

  end
end

config.vm.provision "shell" do |s|
  s.name = "Restarting Nginx"
  s.inline = "sudo service nginx restart; sudo service php7.0-fpm restart"
end

# Install MariaDB If Necessary
if settings.has_key?("mariadb") && settings["mariadb"]
  config.vm.provision "shell" do |s|
    s.path = scriptDir + "/install-maria.sh"
  end
end


# Configure All Of The Configured Databases
if settings.has_key?("databases")
    settings["databases"].each do |db|
      config.vm.provision "shell" do |s|
        s.name = "Creating MySQL Database"
        s.path = scriptDir + "/create-mysql.sh"
        s.args = [db]
      end

      config.vm.provision "shell" do |s|
        s.name = "Creating Postgres Database"
        s.path = scriptDir + "/create-postgres.sh"
        s.args = [db]
      end
    end
end

# Configure All Of The Server Environment Variables
config.vm.provision "shell" do |s|
    s.name = "Clear Variables"
    s.path = scriptDir + "/clear-variables.sh"
end

if settings.has_key?("variables")
  settings["variables"].each do |var|
    config.vm.provision "shell" do |s|
      s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/7.0/fpm/php-fpm.conf"
      s.args = [var["key"], var["value"]]
    end

    config.vm.provision "shell" do |s|
        s.inline = "echo \"\n# Set Homestead Environment Variable\nexport $1=$2\" >> /home/vagrant/.profile"
        s.args = [var["key"], var["value"]]
    end
  end

  config.vm.provision "shell" do |s|
    s.inline = "service php7.0-fpm restart"
  end
end

# Update Composer On Every Provision
config.vm.provision "shell" do |s|
  s.inline = "/usr/local/bin/composer self-update"
end

# Configure Blackfire.io
if settings.has_key?("blackfire")
  config.vm.provision "shell" do |s|
    s.path = scriptDir + "/blackfire.sh"
    s.args = [
      settings["blackfire"][0]["id"],
      settings["blackfire"][0]["token"],
      settings["blackfire"][0]["client-id"],
      settings["blackfire"][0]["client-token"]
    ]
  end
end
end
end

person noel10    schedule 12.06.2016    source источник
comment
Не могли бы вы опубликовать точное сообщение об ошибке, которое вы получили?   -  person Giorgian Borca-Tasciuc    schedule 14.06.2016
comment
@GiorgianBorca-Tasciuc Failed to mount folders in Linux guest. This is usually because the "vboxsf" file system is not available. Please verify that the guest additions are properly installed in the guest and can work properly. The command attempted was:   -  person noel10    schedule 14.06.2016
comment
'mount -t vboxsf -o uid=id -u vagrant,gid=getent group vagrant | cut -d: -f3,actimeo=1 home_vagrant_Code /home/vagrant/Code mount -t vboxsf -o uid=id -u vagrant,gid=id -g vagrant,actimeo=1 home_vagrant_Code /home/vagrant/Code'   -  person noel10    schedule 14.06.2016
comment
Установите дополнения VirtualBoxGuest в гостевой системе Linux. superuser.com/questions/496513/   -  person Giorgian Borca-Tasciuc    schedule 14.06.2016
comment
У меня уже был VirtualBoxGuest версии 5.0.20.   -  person noel10    schedule 14.06.2016
comment
но я попробую ваше предложение прямо сейчас.   -  person noel10    schedule 14.06.2016
comment
Да, гостевые дополнения обычно не устанавливаются автоматически.   -  person Giorgian Borca-Tasciuc    schedule 14.06.2016
comment
да, это то, что я запутался, у вас есть идея, как установить его с помощью терминала @GiorgianBorca-Tasciuc? Папка VirtualBoxGuestAdditions-5.0.20 существует, но не работает. Кстати, я делаю это для усадьбы Laravel. Я замечаю, что мой файл из Windows, куда я положил Laravel, не передается на хост (который является Ubuntu), когда я выполняю команду vagrant up.   -  person noel10    schedule 14.06.2016
comment
Извините, что меня не было, нужно было сдавать экзамены. Вы сказали, что гостем был Ubuntu? Попробуйте запустить sudo apt-get install virtualbox-guest-additions-iso virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11.   -  person Giorgian Borca-Tasciuc    schedule 14.06.2016
comment
@GiorgianBorca-Tasciuc, все в порядке, я попробую. Я просто свяжусь с вами, когда будет хороший или плохой результат.   -  person noel10    schedule 15.06.2016