解决ubuntu无法看到windows的共享文件夹

This is a note for patching VMware tool for linux kernel 2.6.37/38 guest OS while using VMware Fusion.

Here is my environment for your reference.

·                     Host OS: Mac OS 10.6.6

·                     Guest OS: Ubuntu 10.10 + Kernel Updated (2.6.38)

·                     VMware Fusion: 3.1.2 (332101)

Since the vmware-tool in vmware fusion is not aware of the changes of the latest kernel structure, it needs to be patched in order to get correct kernel module for vmware tool such like file sharing, clipboard sharing, etc.

Here is the walk-through steps:

1.                   Install VMware Tool

2.                   Copy vmware-tools-distrib directory into a local directory (say, ~/tmp/vmware-tools-distrib) by

 mkdir -p ~/tmp/ && tar -C ~/tmp -xvzf /media/VMware/ Tools/VMwareTools-8.4.5-332101.tar.gz

3.                      cd ~/tmp/vmware-tools-distrib/lib/modules/source

4.                     tar -xvf vmci.tar && tar -xvf vmhgfs.tar && tar -xvf vsock.tar

5.                   copy patch files (0001-vmwaretool-vmci-Linux-2.6.37.patch, 0001-vmwaretool-vmhgfs-Linux-2.6.37.patch, 0001-vmwaretool-vsock-Linux-2.6.37.patch) into ~/tmp/vmware-tools-distrib/lib/modules/source

6.                      cd vmci-only && git apply --ignore-whitespace ../0001-vmwaretool-vmci-Linux-2.6.37.patch && cd ..

7.                      cd vmhgfs-only && git apply --ignore-whitespace ../0001-vmwaretool-vmhgfs-Linux-2.6.37.patch && cd ..

8.                      cd vsock-only && git apply --ignore-whitespace ../0001-vmwaretool-vsock-Linux-2.6.37.patch && cd ..

9.                      rm -rf vmci.tar vmhgfs.tar vsock.tar

10.                 tar -cvf vmci.tar vmci-only && tar -cvf vmhgfs.tar vmhgfs-only && tar -cvf vsock.tar vsock-only

11.                 rm -rf vmci-only vmhgfs-only vsock-only

12.                Install the vmware tool by

 cd ~/tmp/vmware-tools-distrib && ./vmware-install.pl

Here is the patches for your references:

1.                   0001-vmwaretool-vmci-Linux-2.6.37.patch:

From ad10b5458d4aa6d5df7b913174185d395943ce32 Mon Sep 17 00:00:00 2001

From: YOUNGWHAN SONG <breadncup@gmail.com>

Date: Fri, 25 Feb 2011 22:16:19 -0800

Subject: [PATCH] Linux 2.6.37 Patch

  

---

 shared/compat_semaphore.h |    4 ++--

 vmci_drv.c                |   12 +++++++-----

 2 files changed, 9 insertions(+), 7 deletions(-)

  

diff --git a/shared/compat_semaphore.h b/shared/compat_semaphore.h

index c2902f0..0add974 100644

--- a/shared/compat_semaphore.h

+++ b/shared/compat_semaphore.h

@@ -28,7 +28,7 @@

 #endif

  

-#if defined CONFIG_PREEMPT_RT && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)

+#if (defined CONFIG_PREEMPT_RT && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)) || LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)

    /*

     * The -rt patch series changes the name of semaphore/mutex initialization

     * routines (across the entire kernel).  Probably to identify locations that

@@ -41,7 +41,7 @@

       #define DECLARE_MUTEX(_m)  DEFINE_SEMAPHORE(_m)

    #endif

    #ifndef init_MUTEX

-     #define init_MUTEX(_m) semaphore_init(_m)

+      #define init_MUTEX(_m) sema_init(_m,1)

    #endif

 #endif

  

diff --git a/vmci_drv.c b/vmci_drv.c

index ac64f02..14ac3b5 100644

--- a/vmci_drv.c

+++ b/vmci_drv.c

@@ -73,7 +73,7 @@ static int vmci_probe_device(struct pci_dev *pdev,

 static void vmci_remove_device(struct pci_dev* pdev);

 static int vmci_open(struct inode *inode, struct file *file);

 static int vmci_close(struct inode *inode, struct file *file);

-static int vmci_ioctl(struct inode *inode, struct file *file,

+static long vmci_ioctl(struct file *file,

                       unsigned int cmd, unsigned long arg);

 static unsigned int vmci_poll(struct file *file, poll_table *wait);

 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 19)

@@ -93,7 +93,7 @@ static struct file_operations vmci_ops = {

    .owner   = THIS_MODULE,

    .open    = vmci_open,

    .release = vmci_close,

-   .ioctl   = vmci_ioctl,

+   .unlocked_ioctl   = vmci_ioctl,

    .poll    = vmci_poll,

 };

  

@@ -496,9 +496,8 @@ vmci_close(struct inode *inode,  // IN

  *-----------------------------------------------------------------------------

  */

  

-static int

-vmci_ioctl(struct inode *inode,  // IN

-           struct file *file,    // IN

+static long

+vmci_ioctl(struct file *file,    // IN

            unsigned int cmd,     // IN

            unsigned long arg)    // IN

 {

@@ -506,10 +505,12 @@ vmci_ioctl(struct inode *inode,  // IN

    return -ENOTTY;

 #else

    int retval;

+   lock_kernel();

    VMCIGuestDeviceHandle *devHndl =

       (VMCIGuestDeviceHandle *) file->private_data;

  

    if (devHndl == NULL) {

+      unlock_kernel();

       return -EINVAL;

    }

  

@@ -669,6 +670,7 @@ vmci_ioctl(struct inode *inode,  // IN

       break;

    }

  

+   unlock_kernel();

    return retval;

 #endif

 }

--

1.7.4.1

2.                   0001-vmwaretool-vmhgfs-Linux-2.6.37.patch:

From 2d1de0f0ea3ef2fce534944431c096baed1e423b Mon Sep 17 00:00:00 2001

From: YOUNGWHAN SONG <breadncup@gmail.com>

Date: Fri, 25 Feb 2011 23:07:15 -0800

Subject: [PATCH] vmware:vmhgfs: Support new linux kernel 2.6.37

  

---

 super.c |    2 +-

 1 files changed, 1 insertions(+), 1 deletions(-)

  

diff --git a/super.c b/super.c

index f6f26ff..c5627f5 100644

--- a/super.c

+++ b/super.c

@@ -70,7 +70,7 @@ struct super_operations HgfsSuperOperations = {

 #ifndef VMW_USE_IGET_LOCKED

    .read_inode    = HgfsReadInode,

 #endif

-   .clear_inode   = HgfsClearInode,

+   .evict_inode   = HgfsClearInode,

    .put_super     = HgfsPutSuper,

    .statfs        = HgfsStatfs,

 };

--

1.7.4.1

3.                   0001-vmwaretool-vsock-Linux-2.6.37.patch:

From dea787ae80d9a6267be21928efc164d0b4f1d4c6 Mon Sep 17 00:00:00 2001

From: YOUNGWHAN SONG <breadncup@gmail.com>

Date: Fri, 25 Feb 2011 23:13:28 -0800

Subject: [PATCH] vmwaretool:vsock:Linux-2.6.37

  

---

 shared/compat_semaphore.h |    4 ++--

 1 files changed, 2 insertions(+), 2 deletions(-)

  

diff --git a/shared/compat_semaphore.h b/shared/compat_semaphore.h

index 802d174..0add974 100644

--- a/shared/compat_semaphore.h

+++ b/shared/compat_semaphore.h

@@ -28,7 +28,7 @@

 #endif

  

-#if defined CONFIG_PREEMPT_RT && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)

+#if (defined CONFIG_PREEMPT_RT && LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 31)) || LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)

    /*

     * The -rt patch seriess changes the name of semaphore/mutex initialization

     * routines (across the entire kernel).  Probably to identify locations that

@@ -41,7 +41,7 @@

       #define DECLARE_MUTEX(_m)  DEFINE_SEMAPHORE(_m)

    #endif

    #ifndef init_MUTEX

-      #define init_MUTEX(_m) semaphore_init(_m)

+      #define init_MUTEX(_m) sema_init(_m,1)

    #endif

 #endif

  

--

1.7.4.1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值