我遇到了以下错误:
Vagrant无法挂载VirtualBox共享文件夹。这通常是因为文件系统“vboxsf”不可用。此文件系统通过VirtualBox Guest Additions和内核模块提供。请验证这些Guest Additions是否已正确安装在Guest中。这不是Vagrant的错误,通常是由于有问题的Vagrant box引起的。对于上下文,尝试的命令是:
id -u vagrant
命令的错误输出为:
id:“vagrant”:没有这个用户
因此,我试图寻找解决方案。我看到很多人说需要一个特殊的vbguest vagrant插件,然后运行vagrant,在ssh附加的vbguest应该被修改。
所以我按照以下步骤操作: $ vagrant plugin install vagrant-vbguest 然后添加了插件:
安装'vagrant-vbguest'插件。这可能需要几分钟...已安装插件'vagrant-vbguest(0.13.0)'! $ vagrant up $ vagrant ssh $ sudo ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions /usr/lib/VBoxGuestAdditions 这不会打印任何消息,所以我认为它是正确的。 然后重新加载vagrant。
当然,我尝试了这种情况:删除vagrant,再运行vagrant up并从sketch重新加载,但是仍然出现相同的问题。 是的,我也尝试使用vagrant-hostmanager插件(在yii文档中有提到),但是仍然出现了相同的问题。
这是我的vagrant文件,也许对你有用。
Vagrant无法挂载VirtualBox共享文件夹。这通常是因为文件系统“vboxsf”不可用。此文件系统通过VirtualBox Guest Additions和内核模块提供。请验证这些Guest Additions是否已正确安装在Guest中。这不是Vagrant的错误,通常是由于有问题的Vagrant box引起的。对于上下文,尝试的命令是:
id -u vagrant
命令的错误输出为:
id:“vagrant”:没有这个用户
因此,我试图寻找解决方案。我看到很多人说需要一个特殊的vbguest vagrant插件,然后运行vagrant,在ssh附加的vbguest应该被修改。
所以我按照以下步骤操作: $ vagrant plugin install vagrant-vbguest 然后添加了插件:
安装'vagrant-vbguest'插件。这可能需要几分钟...已安装插件'vagrant-vbguest(0.13.0)'! $ vagrant up $ vagrant ssh $ sudo ln -s /opt/VBoxGuestAdditions-4.3.10/lib/VBoxGuestAdditions /usr/lib/VBoxGuestAdditions 这不会打印任何消息,所以我认为它是正确的。 然后重新加载vagrant。
$ vagrant reload
很不幸,我再次遇到了错误。
$ vagrant reload
==> Project-Yii: Attempting graceful shutdown of VM...
==> Project-Yii: Clearing any previously set forwarded ports...
==> Project-Yii: Clearing any previously set network interfaces...
==> Project-Yii: Preparing network interfaces based on configuration...
Project-Yii: Adapter 1: nat
Project-Yii: Adapter 2: hostonly
==> Project-Yii: Forwarding ports...
Project-Yii: 22 (guest) => 2222 (host) (adapter 1)
==> Project-Yii: Running 'pre-boot' VM customizations...
==> Project-Yii: Booting VM...
==> Project-Yii: Waiting for machine to boot. This may take a few minutes...
Project-Yii: SSH address: 127.0.0.1:2222
Project-Yii: SSH username: ubuntu
Project-Yii: SSH auth method: password
Project-Yii: Warning: Remote connection disconnect. Retrying...
==> Project-Yii: Machine booted and ready!
[Project-Yii] GuestAdditions 5.1.14 running --- OK.
==> Project-Yii: Checking for guest additions in VM...
==> Project-Yii: Setting hostname...
==> Project-Yii: Configuring and enabling network interfaces...
==> Project-Yii: Mounting shared folders...
Project-Yii: /app => /home/xxx/Projects/project-shop
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:
id -u vagrant
The error output from the command was:
id: 'vagrant': no such user
当然,我尝试了这种情况:删除vagrant,再运行vagrant up并从sketch重新加载,但是仍然出现相同的问题。 是的,我也尝试使用vagrant-hostmanager插件(在yii文档中有提到),但是仍然出现了相同的问题。
这是我的vagrant文件,也许对你有用。
require 'yaml'
require 'fileutils'
domains = {
frontend: 'frontend-yii.com',
backend: 'backend-yii.com'
}
config = {
local: './vagrant/config/vagrant-local.yml',
example: './vagrant/config/vagrant-local.example.yml'
}
# copy config from example if local config not exists
FileUtils.cp config[:example], config[:local] unless File.exist?(config[:local])
# read config
options = YAML.load_file config[:local]
# check github token
if options['github_token'].nil? || options['github_token'].to_s.length != 40
puts "You must place REAL GitHub token into configuration:\n/project-yii/vagrant/config/vagrant-local.yml"
exit
end
# vagrant configurate
Vagrant.configure(2) do |config|
# select the box
config.vm.box = 'ubuntu/xenial64'
# should we ask about box updates?
config.vm.box_check_update = options['box_check_update']
config.vm.provider 'virtualbox' do |vb|
# machine cpus count
vb.cpus = options['cpus']
# machine memory size
vb.memory = options['memory']
# machine name (for VirtualBox UI)
vb.name = options['machine_name']
end
# machine name (for vagrant console)
config.vm.define options['machine_name']
# machine name (for guest machine console)
config.vm.hostname = options['machine_name']
# network settings
config.vm.network 'private_network', ip: options['ip']
# sync: folder 'yii2-app-advanced' (host machine) -> folder '/app' (guest machine)
config.vm.synced_folder './', '/app', owner: 'vagrant', group: 'vagrant'
# disable folder '/vagrant' (guest machine)
config.vm.synced_folder '.', '/vagrant', disabled: true
# hosts settings (host machine)
config.vm.provision :hostmanager
config.hostmanager.enabled = true
config.hostmanager.manage_host = true
config.hostmanager.ignore_private_ip = false
config.hostmanager.include_offline = true
config.hostmanager.aliases = domains.values
# provisioners
config.vm.provision 'shell', path: './vagrant/provision/once-as-root.sh', args: [options['timezone']]
config.vm.provision 'shell', path: './vagrant/provision/once-as-vagrant.sh', args: [options['github_token']], privileged: false
config.vm.provision 'shell', path: './vagrant/provision/always-as-root.sh', run: 'always'
# post-install message (vagrant console)
config.vm.post_up_message = "Frontend URL: http://#{domains[:frontend]}\nBackend URL: http://#{domains[:backend]}"
end
我的vagrant版本为1.9.1,虚拟机版本为5.1.14 r112924(最新版本)
是否有其他人遇到同样的问题?我应该采取哪些步骤来解决这个问题?