Parallels 10(v10.40) ubuntu desktop 14.04.4 无法安装Parallels tools

终于搞定了这个该死的问题,一直用paralles在mac上安装ubuntu,而且买的正版软件,可惜parallels是个提了裤子就不认账的主,本来有个ubuntu14.04虚拟机,升级了一下ubuntu导致我无法登陆,后来就索性删除了这个系统,直接重新安装ubuntu,可惜最后无法安装parallels tools,我用的是parallels 10的最新版v10.4.0,一直提示无法安装parallels tools,后来安装ubuntu 16.04,也无法安装Parallels tools,在官网上也没有提供为什么这样,后来他的官方论坛里找到了问题的解决方案,

地址:https://forum.parallels.com/threads/parallels-10-ubuntu-14-04-tools-will-not-install.336252/
用这个论坛的第8楼的解决方案就可以完美解决问题,我用中文记录如下

  1. 挂载 Parallels Tools镜像
  2. 打开一个terminal,执行如下命令(注意:这些命令一定要用命令行,不要用UI工具代替来执行,否则会有很多莫名其妙的错误,我第一次就遇到了好多错误)

    cd /media/<username>/Parallels\ Tools/
    mkdir ~/Desktop/tools
    cp -pr * ~/Desktop/tools
    cd ~/Desktop/tools
    chmod -R 777 kmods
  3. 用解压缩工具打开~/Desktop/tools/kmods目录下的prl_mod.tar.gz压缩文件

  4. 在压缩工具里用gedit打开./prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c,在其他include的代码后面添加如下代码

    
    #include <linux/vmalloc.h>
    
  5. 在压缩工具里用gedit打开./prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c,找到prlfs_follow_link (大约在650行)并修改为如下代码(包括 compat_follow_link_t):

#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
#define compat_follow_link_t const char*
#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
#define compat_follow_link_t void*
#else
#define compat_follow_link_t int
#endif

#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
static compat_follow_link_t prlfs_follow_link(struct dentry *dentry, void  **cookie)
#else
static compat_follow_link_t prlfs_follow_link(struct dentry *dentry, struct nameidata *nd)
#endif
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
    return do_read_symlink(dentry);
#else

    #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
        nd_set_link(nd, do_read_symlink(dentry));
    #endif

    #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
        return NULL;
    #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
        return 0;
    #else
        return vfs_follow_link(nd, do_read_symlink(dentry));
    #endif
#endif
}
  1. 打开一个terminal (在~/Desktop/tools目录)并执行如下命令:

    sudo ./install

你可能感兴趣的:(ubuntu,Parallels)