当前位置:   article > 正文

kali linux 2021.1安装parallels tools踩坑记录_an error occurred when installing parallels tools.

an error occurred when installing parallels tools. please go to │ │ /var/l

首先点击右上角的黄色叹号,桌面会出现安装光盘,选择在此处打开Terminal
在这里插入图片描述
但是这里文件系统是只读的,我们无法执行install,可以复制出去运行,我这里是复制到root目录

mkdir -p /root/pt
cp -r /media/cdrom0/ /root/pt/
cd /root/pt/kmods
tar -zxvf prl_mod.tar.gz 
  • 1
  • 2
  • 3
  • 4

现在处于kmods目录下,要编辑几个文件。
首先会报一个下面这样的错误(我的版本是5.10,下面报错找的别人的贴上的)

Sat Dec 12 23:14:50 EST 2020
Start installation or upgrade of Guest Tools
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c: In function 'init_buffer_descriptor':
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c:58:31: error: implicit declaration of function 'segment_eq' [-Werror=implicit-function-declaration]
   58 |  bd->user = (user == 0) ? 0 : segment_eq(get_fs(), USER_DS) ? 1 : 0;
      |                               ^~~~~~~~~~
cc1: some warnings being treated as errors
make[4]: *** [/usr/src/linux-headers-5.9.0-kali4-common/scripts/Makefile.build:288: /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.o] Error 1
make[3]: *** [/usr/src/linux-headers-5.9.0-kali4-common/Makefile:1796: /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs] Error 2
make[2]: *** [/usr/src/linux-headers-5.9.0-kali4-common/Makefile:185: __sub-make] Error 2
make[1]: *** [Makefile:36: all] Error 2
make: *** [Makefile.kmods:33: compile] Error 2
Error: could not build kernel modules
Error during report about failed installation of parallels tools.
Error: failed to install Parallels Guest Tools!
2020-12-12T23:14:55-0500: execCmd: ./install --install [167]
2020-12-12T23:14:55-0500: Error: An error occurred when installing Parallels Tools. Please go to /var/log/parallels-tools-install.log for more information.
2020-12-12T23:19:58-0500: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

具体报错的代码就是这一句

bd->user = (user == 0) ? 0 : segment_eq(get_fs(), USER_DS) ? 1 : 0;
  • 1

原因就是找不到segment_eq函数,所以我们需要编辑prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c,看网上都是加上一行#define segment_eq(a,b) ((a).seg == (b).seg),但是对于kali 2021.1并不生效,我google了半天,最后终于在社区讨论中找到原因

The instructions from electrifye earlier in the thread say to modify prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c and add the line “#define segment_eq(a, b) ((a).seg == (b).seg)” to the top. This is no longer enough, as the get_fs() and set_fs() macros have been removed in kernel 5.10, and this file uses get_fs to determine whether the thread is running as root or as a user.

意思就是说在kernel版本大于等于5.10时,get_fs函数被移除了,但是不影响,我们可以自己定义一下来防止函数未定义错误,在开头加上

#define segment_eq(a, b) (b)
#define USER_DS 1
  • 1
  • 2

这样上面的segment_eq(get_fs(), USER_DS)就必返回1,虽然也没加上get_fs,但能正常执行并且不会报错了。编辑完之后加了这两行
在这里插入图片描述
然后重新打包一下就完事,依旧是在kmods目录下

rm prl_mod.tar.gz
tar -zcvf prl_mod.tar.gz .  dkms.conf Makefile.kmods
  • 1
  • 2

然后切到installer目录,命令行安装一波

cd ../installer
chmod 777 *.sh
sudo ./install-cli.sh -i --verbose
  • 1
  • 2
  • 3

安装完成
1
重启如果白屏,则是因为开了3D加速,需要关掉
在这里插入图片描述

ps:如果上面结束有问题

可以参考这篇文章试试

也就是同时做下面2个编辑

  1. prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c文件中,第一行加入#include <linux/blkdev.h>
  2. 在文件prl_fs/SharedFolders/Guest/Linux/prl_fs/Makefile和文件 prl_vid/Video/Guest/Linux/kmod/Makefile中,第一行加入KBUILD_EXTRA_SYMBOLS := /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/Module.symvers

然后重新打包安装一下,实测成功。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/534252
推荐阅读
相关标签
  

闽ICP备14008679号