Parallels Tools 11.0.0.3193 在Linux Kernel 4.2以上内核的修复


主要是参考这篇文章: http://journal.dedasys.com/2015/10/26/parallels-with-ubuntu-15-10/

首先你需要把kmods文件夹的压缩包用tar xvf prl_mod.tar.gz解包.
下面说一下需要修改的两个文件:
第一个文件是kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c
增加一个头文件的引用

#include "linux/vmalloc.h"

第二个文件是kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c在

-#if 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)
+#define compat_follow_link_t const char*
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)

并删除

-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)

然后还需要将prlfs_follow_link这个函数做修改:
在函数前新增

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

并在函数的结束点新增

+#endif

完成后使用tar czf打包回去就可以完成安装了.


利用crontabs的延时重试脚本


主要是有可能早上的时候电已经来了, 但是网络中心那边却还没有开放网络认证的许可, 导致路由器开机的时候认证失败.
同时由于路由新开机, 时间还未与网络同步所以单纯的设置crontabs并不能起到作用.
而且由于我希望自己可以在教学区域愉快地顶掉宿舍里路由器的认证, 所以也并不能启用mentohust本身超时重认证机制.
所以采取了开机后如果发现网络无法认证, 则读取当前系统时间再加一延时添加进crontabs的方法实现等待再认证.

#!/bin/sh

DELAY=30
STAR=$(echo \\*)
#MINUTES=$(date | awk \'{print $4}\' | sed \'s/\\([0-9]\\+\\):\\([0-9]\\+\\):\\([0-9]\\+\\)/\\2/\')
#HOURS=$(date | awk \'{print $4}\' | sed \'s/\\([0-9]\\+\\):\\([0-9]\\+\\):\\([0-9]\\+\\)/\\1/\')
MINUTES=$(date +\'%M\')
HOURS=$(date +\'%H\')
MINUTES=$(expr $MINUTES + $DELAY)
HOURS=$(expr $HOURS + 0)

if [ "$MINUTES" -gt 60 ]; then
    MINUTES=$(expr $MINUTES - 60)
    HOURS=$(expr $HOURS + 1)
fi

CMD="$MINUTES $HOURS $STAR $STAR $STAR /etc/init.d/mentohust_d >> /tmp/mentohust_d.log"
sed \'$d\' /etc/crontabs/root > /etc/crontabs/root.tmp
cp /etc/crontabs/root.tmp /etc/crontabs/root
rm /etc/crontabs/root.tmp
echo "$CMD" >> /etc/crontabs/root