Kali Linux的Parallels Tools填坑记录

0.安装过程遇到的主要问题:

  • 1./media/cdrom0权限问题
  • 2.apt-get源问题
  • 3.无法安装linux-headers
  • 4.makefile编译失败

1./media/cdrom0权限问题

点击安装parallels tools的时候,会有提示框,提示权限问题,如果直接运行install脚本,提示权限不够,官方推荐的做法:

  • 先卸载# umount /media/cdrom0
  • 再挂载# mount -o exec /media/cdrom0

    按以上操作,依旧提示# mount: /media/cdrom0: WARNING: device write-protected, mounted read-only.

解决方案:

很简单,直接把文件复制到出来,然后chmod 777 -R .赋权即可~

2.apt-get源问题

以下可用源填入/etc/apt/sources.list即可

deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contrib

#阿里云
deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

#清华大学
deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free

#浙大
deb http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free
deb-src http://mirrors.zju.edu.cn/kali kali-rolling main contrib non-free

#东软大学
deb http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib
deb-src http://mirrors.neusoft.edu.cn/kali kali-rolling/main non-free contrib

#官方源
deb http://http.kali.org/kali kali-rolling main non-free contrib
deb-src http://http.kali.org/kali kali-rolling main non-free contrib

更新完依次执行

apt-get update
apt-get upgrade -y
apt-get dist-upgrade -y
apt-get clean #可选

3.无法安装linux-headers

接下来的错误都是要查看日志文件了

# cat /var/log/parallels-tools-install.log

如果是无法安装linux-headers的话,就要手动安装。

先查看内核版本

# uname -a

然后来这里http://http.kali.org/kali/pool/main/l/linux/下载三个对应内核版本的安装包手动安装

  • linux-kbuild: linux-kbuild-xxxx_amd64.deb
  • linux-header-common: linux-headers-xxxx-common_xxxx_amd64.deb
  • linux-compiler-gcc: linux-compiler-gcc-xxx-amd64.deb
  • linux-headers: linux-headers-xxxx_amd64.deb

    下载完成后,用dpkg命令安装deb包。
# dpkg -i xxxxx.deb

4.makefile编译失败

依旧查看日志文件,发现错误在make命令。

Parallels Desktop版本过低

这种情况下,make错误会在诸如get_user_pages()等linux接口,之前一直用的是Parallels Desktop11,这次重新下了最新的kali,内核号是4.15,于是升级了Parallels Desktop,重新安装。

Linux版本过高

尽管升级了PD,还是会有make错误,看日志发现死在了prl_xxx下的某些函数,原因是因为Parallels Tools不支持4.15的Linux内核,只能改源码了。具体修改如下:

  • 解压kmods/prl_mod.tar
# tar -xzf kmods/prl_mod.tar.gz
# rm prl_mod.tar.gz
  • 修改prl_eth/pvmnet/pvmnet.c
# vi kmods/prl_eth/pvmnet/pvmnet.c
# 编辑第438行,将其中的“Parallels”替换为“GPL”
#MODULE_LICENSE("Parallels")
MODULE_LICENSE("GPL")
  • 修改prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c
# vi prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c
# 编辑第1535行,同样是将“Parallels”替换为“GPL”
  • 修改prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c
//第一步:增加函数
//第212行
void thaw_timer_fn(unsigned long data)
{
   struct work_struct *work = (struct work_struct *)data;
   schedule_work(work);
}
//后面增加以下函数
void thaw_timer_fn_new_kernel(struct timer_list *data)
{
   struct work_struct *work = data->expires;
   schedule_work(work);
}

//第二步:修改宏
//刚刚的位置往下两行的
DEFINE_TIMER(thaw_timer, thaw_timer_fn, 0, (unsigned long)&(thaw_work));
//改为
#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)
DEFINE_TIMER(thaw_timer, thaw_timer_fn_new_kernel);
#else
DEFINE_TIMER(thaw_timer, thaw_timer_fn, 0, (unsigned long)&(thaw_work));
#endif
  • 重新打包prl_mod.tar.gz
# tar -zcvf prl_mod.tar.gz . dkms.conf Makefile.kmods