vmware安装linux共享文件夹重启失效的解决办法

vmware安装linux共享文件夹重启失效的原因是open-vm-tools[-desktop]只有设置变化时自动挂载共享文件夹的功能,没有系统启动时自动挂载共享文件夹的功能

 open-vm-tools未来可能修复这个问题:

  • vmtoolsd does not run vmhgfs-fuse on boot · Issue #201 · vmware/open-vm-tools (github.com)

在官方修复之前,有以下解决方法:

【解决方法一】编写启动脚本

首先确定系统的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/,这是sysvinit启动项脚本,使用比/etc/rc.local麻烦一些,sysvinit启动项脚本/etc/init.d/可以如下编写,然后debian系使用sudo update-rc.d defaults安装,redhat系使用sudo chkconfig --add 安装,systemd系统也可以使用sudo systemctl enable .service安装

#!/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

你可能感兴趣的:(linux,运维,服务器)