赞
踩
首先点击右上角的黄色叹号,桌面会出现安装光盘,选择在此处打开Terminal
但是这里文件系统是只读的,我们无法执行install
,可以复制出去运行,我这里是复制到root目录
mkdir -p /root/pt
cp -r /media/cdrom0/ /root/pt/
cd /root/pt/kmods
tar -zxvf prl_mod.tar.gz
现在处于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:
具体报错的代码就是这一句
bd->user = (user == 0) ? 0 : segment_eq(get_fs(), USER_DS) ? 1 : 0;
原因就是找不到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
这样上面的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
然后切到installer
目录,命令行安装一波
cd ../installer
chmod 777 *.sh
sudo ./install-cli.sh -i --verbose
安装完成
重启如果白屏,则是因为开了3D加速,需要关掉
可以参考这篇文章试试
也就是同时做下面2个编辑
prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c
文件中,第一行加入#include <linux/blkdev.h>
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
然后重新打包安装一下,实测成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。