您的位置:首页 > 其它

在vmware中安装ubuntu server后,无法显示共享目录的解决方案

2014-11-02 22:01 603 查看
环境:vmware workstation(10.0.2 build-1744117),ubuntu(ubuntu-12.04.5-server-amd64,ubuntu-14.04.1-server-amd64)

在安装完ubuntu server之后,发现在/mnt/hgfs下没有显示共享的目录,打算重新安装下vmtools,在点击vmware菜单中的 重新安装vmware tools 之后,发现和desktop版不一样,由于server版没有图形窗口,所以需要自己去挂载目录,执行sudo mount /dev/cdrom /mnt,将cdrom挂载到mnt目录下,然后就和在图形界面中一样操作即可。但是在执行vmware-install.pl,提示没有安装gcc与make,于是只能执行sudo
apt-get install gcc make去安装,但是问题又来了,由于源是国外的,所以速度特别慢,简直无法忍受,所以只能想办法先更新源再说。server版本连浏览器都没有,只能通过挂载优盘的方式进行更新了,先将源复制下来,在优盘中新建一个文件存放源。在虚拟机获取焦点的时候,插入优盘,我是插入的usb2.0的接口,3.0不知道行不行,然后执行sudo fdisk -l,查看是否有显示与优盘容量差不多大小的盘符,我这里显示的是/dev/sdb1,然后在mnt目录下新建目录usb,然后执行命令sudo mount
-t ntfs /dev/sdb1 /mnt/usb,这样就能在/mnt/usb目录下看到优盘中的文件了。接下来就是把优盘中的源文件替换原来的源就可以了,记得先备份好原来的源文件。

在安装完gcc和make后,就可以执行vmware-install.pl了,但是这次又报了另外的错误:“The vmxnet driver is no longer supported on kernels 3.3 and greater...”,参考网上的解决方案,需要执行一个脚本

set -x
cd $home
cd vmware-tools-distrib/lib/modules/source
sudo tar xf vmhgfs.tar
sudo wget https://raw.github.com/rasa/vmware-tools-patches/master/patches/vmhgfs/vmhgfs-d_count-kernel-3.11-tools-9.6.0.patch sudo patch -p0 <vmhgfs-d_count-kernel-3.11-tools-9.6.0.patch
sudo mv vmhgfs.tar vmhgfs.orig.tar
sudo tar cf vmhgfs.tar vmhgfs-only
cd $home
cd vmware-tools-distrib
sudo ./vmware-install.pl --clobber-kernel-modules=vmhgfs
set +x

将这个脚本保存到用户目录下即可(和之前更新源的方式一样,通过优盘挂载,将该脚本复制到用户目录下),保存为脚本文件,然后属性设置为可执行。执行该脚本,可能还会报出同样的错误,不用管,重启一下系统,然后就能看到/mnt/hgfs下的共享目录了。

贴一下https://raw.github.com/rasa/vmware-tools-patches/master/patches/vmhgfs/vmhgfs-d_count-kernel-3.11-tools-9.6.0.patch这个文件中的内容:

--- vmhgfs-only/inode.c	2013-08-15 22:32:22.000000000 -0700
+++ vmhgfs-only.patched/inode.c	2013-09-16 21:31:12.323041668 -0700
@@ -31,6 +31,9 @@
#include <linux/namei.h>
#endif
#include <linux/highmem.h>
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)
+#include <linux/dcache.h>
+#endif

#include "compat_cred.h"
#include "compat_fs.h"
@@ -1890,7 +1893,11 @@
#endif
&inode->i_dentry,
d_alias) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)
+         int dcount = d_count(dentry);
+#else
int dcount = dentry->d_count;
+#endif
if (dcount) {
LOG(4, ("Found %s %d \n", dentry->d_name.name, dcount));
return HgfsAccessInt(dentry, mask & (MAY_READ | MAY_WRITE | MAY_EXEC));
@@ -1943,10 +1950,12 @@
list_for_each(pos, &inode->i_dentry) {
int dcount;
struct dentry *dentry = list_entry(pos, struct dentry, d_alias);
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 38)
-         dcount = atomic_read(&dentry->d_count);
-#else
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0)
+         dcount = d_count(dentry);
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38)
dcount = dentry->d_count;
+#else
+         dcount = atomic_read(&dentry->d_count);
#endif
if (dcount) {
LOG(4, ("Found %s %d \n", (dentry)->d_name.name, dcount));


参考链接:

http://ubuntuforums.org/showthread.php?t=2184195


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐