vmware安装linux共享文件夹重启失效的原因是open-vm-tools[-desktop]只有设置变化时自动挂载共享文件夹的功能,没有系统启动时自动挂载共享文件夹的功能
open-vm-tools未来可能修复这个问题:
在官方修复之前,有以下解决方法:
【解决方法一】编写启动脚本
首先确定系统的init系统种类,主流发行版最近几年的版本基本上都是systemd,特征是有systemctl命令,主流发行版比较古老的版本可能是sysvinit或upstart,除此之外,有些发行版可能使用其他类型的init,发行版一般会说明,这里不再展开
对于最常见的sysvinit/upstart/systemd,推荐使用的启动脚本是/etc/rc.local,/etc/rc.local是sysvinit系统管理员启动脚本,它在系统启动时会以参数start被调用,在系统关闭时会以参数stop被调用,下面以sysvinit/upstart/systemd的/etc/rc.local为例
1、使用sudo nano /etc/rc.local,编写启动脚本,Ctrl-X y保存退出,内容如下(exit 0确保永远返回执行成功)
#!/bin/bash
if [ "$1" == "start" ]; then
vmhgfs-fuse -o allow_other /mnt/hgfs
fi
exit 0
2、使用chmod +x /etc/rc.local,给启动脚本加上可执行权限
3、对于早期版本的systemd,可能需要sudo systemctl enable rc-local.service,较新的版本不需要(较新的版本的generator会自动识别存在/etc/rc.local且可执行,自动启用rc-local.service)
4、重启生效
注:有blog提到了/etc/init.d/
#!/bin/sh
### BEGIN INIT INFO
# Provides: vmhgfs-fuse
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# X-Start-Before:
# X-Stop-After:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: VMware vmhgfs fuse mount
# Short-Description: VMware vmhgfs fuse mount
### END INIT INFO
if [ "$1" == "start" ]; then
vmhgfs-fuse -o allow_other /mnt/hgfs
fi
exit 0
【解决方法二】使用systemd的mount启动项
1、编写下面的代码保存为vmhgfs-automount.sh(如果不使用sudo而是使用su,第2行开头加上#,第3行开头去掉#):
(mnt-hgfs.mount参考了'run-vmblock\x2dfuse.mount',注意systemd要求mount启动项必须以挂载点命名,不能随便命名)
#!/bin/bash
[ "$UID" -eq 0 ] || exec sudo "$0" "$@"
#[ "$UID" -eq 0 ] || exec su -c "`printf '%q' "$0"``printf ' %q' "$@"`"
cat >/lib/systemd/system/mnt-hgfs.mount <
2、右键属性添加可执行权限(或使用chmod +x vmhgfs-automount.sh)
3、双击选择在终端中运行(或使用./vmhgfs-automount.sh)
4、输入密码(sudo输入当前用户密码,su输入root密码),回车
5、重启生效
【解决方法三】在/etc/fstab加上自动挂载项(比较危险,不推荐)
使用sudo nano /etc/fstab编辑fstab, 在文件中加入下面的内容,Ctrl-X y保存关闭,重启生效:
.host:/ /mnt/hgfs fuse.vmhgfs-fuse allow_other,optional 0 0
因为fuse并不支持nofail,没有办法通过这个方法做到可选挂载,禁用共享文件夹,或者卸载open-vm-tools[-desktop]重启前记得删除这一行,否则会无法启动,如果是Debian且没设置root密码,有可能必须使用安装光盘或LiveCD启动,或者使用init=/sbin/sulogin --force内核参数启动
【解决方法三】卸载open-vm-tools[-desktop],并安装vmware自带的vmware tools(过时,不推荐)
不推荐:复制粘贴拖放会失效,因为vmware自带版本只适用于非常老的linux版本,vmware官方推荐新版linux使用open-vm-tools[-desktop]
# 彻底卸载open-vm-tools[-desktop],一定要用--purge
sudo apt autoremove --purge open-vm-tools open-vm-tools-desktop
# 这里最好重启一下
# 换成vmtools的光盘linux.iso,安装vmware自带的vmware tools
cp /mnt/cdrom0/VMwareTools-*.tar.gz
tar xvf VMwareTools-*.tar.gz
cd vmware-tools-distrib
sudo ./vmware-install.pl -d -f