-
In open Ubuntu 18.04 machine click Parallels Actions -> "Install Parallels Tools"
-
A "Parallels Tools" CD will popup on your Ubuntu desktop.
-
Open it by double mouse click, copy all the content to a new, empty directory on a desktop, name it for e.g. "parallels_fixed"
-
Open terminal, change directory to parallels_fixed (
cd ~/Desktop/parallels_fixed
) -
Make command line installer executable (
chmod +x install
) -
Change directory to "installer" (
cd installer
) -
Make few other scripts executable:
chmod +x installer.* *.sh prl_*
- Go to kmods directory (
cd ~/Desktop/parallels_fixed/kmods
) and extract the files (tar -xzf prl_mod.tar.gz
) - Remove prl_mod.tar.gz file from that directory (
rm prl_mod.tar.gz
)
- Go to "prl_eth/pvmnet/" (
cd ~/Desktop/parallels_fixed/kmods/prl_eth/pvmnet
) directory - Open "pvmnet.c" file in a text editor
- Edit line 438:
MODULE_LICENSE("Parallels");
to
MODULE_LICENSE("GPL");
- Save
- Go to "prl_tg/Toolgate/Guest/Linux/prl_tg/" (
cd ~/Desktop/parallels_fixed/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg
) directory - Open "prltg.c" file in a text editor
- Edit line 1535:
MODULE_LICENSE("Parallels");
to
MODULE_LICENSE("GPL");
- Save
- Go to "prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/" (
cd ~/Desktop/parallels_fixed/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze
) - Open "prl_fs_freeze.c" file in a text editor
- in line 212 you will find a function "thaw_timer_fn":
void thaw_timer_fn(unsigned long data)
{
struct work_struct *work = (struct work_struct *)data;
schedule_work(work);
}
Change it to:
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);
}
Then change a line 220 from:
DEFINE_TIMER(thaw_timer, thaw_timer_fn, 0, (unsigned long)&(thaw_work));
to
#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
- Go to kmods directory (
cd ~/Desktop/parallels_fixed/kmods
) and zip:tar -zcvf prl_mod.tar.gz . dkms.conf Makefile.kmods
- Now you should see "prl_mod.tar.gz" file in this directory
- Go one level up (
cd ../
orcd ~/Desktop/parallels_fixed
) and install it by runningsudo ./install
In case of problems with Sharing Folder try to sudo chmod +x /usr/bin/prlfsmountd
. (Suggested by @macdoor - Thanks!)
First two changes are hacks, changing licensing type and i cannot post complete, built package. Third file change was needed as backward incompatible changes were released in version 4.15 of the Linux kernel, on November 2017 by Linus. https://github.com/torvalds/linux/blob/master/include/linux/time.h
Using P11 Did the instructions
Got this message "An error occurred when installing Parallels Tools. Please go │
│ to /var/log/parallels-tools-install.log for more information."
Here is var/log/parallels-tools-install.log
"""""""""
Parallels Tools 11.2.3-32663 Installer started.
2019-05-26T16:10:26+0200: Failed to setup console printk level.
2019-05-26T16:10:35+0200: execCmd: ./installer/pm.sh --check gtools [0]
Started installation of Parallels Guest Tools version '11.2.3.32663'
sø. 26. mai 16:10:35 +0200 2019
Start installation or upgrade of Guest Tools
new version of parallels tools
Installed Guest Tools were not found
Perform installation into the /usr/lib/parallels-tools directory
cat: /usr/lib/parallels-tools/kmods/../version: No such file or directory
Start installation of prl_eth kernel module
make: Entering directory '/usr/lib/parallels-tools/kmods'
cd prl_eth/pvmnet && make
make[1]: Entering directory '/usr/lib/parallels-tools/kmods/prl_eth/pvmnet'
make -C /lib/modules/4.18.0-20-generic/build M=/usr/lib/parallels-tools/kmods/prl_eth/pvmnet
make[2]: Entering directory '/usr/src/linux-headers-4.18.0-20-generic'
Makefile:970: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel"
CC [M] /usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.o
LD [M] /usr/lib/parallels-tools/kmods/prl_eth/pvmnet/prl_eth.o
Building modules, stage 2.
MODPOST 1 modules
CC /usr/lib/parallels-tools/kmods/prl_eth/pvmnet/prl_eth.mod.o
LD [M] /usr/lib/parallels-tools/kmods/prl_eth/pvmnet/prl_eth.ko
make[2]: Leaving directory '/usr/src/linux-headers-4.18.0-20-generic'
make[1]: Leaving directory '/usr/lib/parallels-tools/kmods/prl_eth/pvmnet'
cd prl_tg/Toolgate/Guest/Linux/prl_tg && make
make[1]: Entering directory '/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg'
make -C /lib/modules/4.18.0-20-generic/build SUBDIRS=/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg SRCROOT=/usr/lib/paralle
ls-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg modules
make[2]: Entering directory '/usr/src/linux-headers-4.18.0-20-generic'
Makefile:970: "Cannot use CONFIG_STACK_VALIDATION=y, please install libelf-dev, libelf-devel or elfutils-libelf-devel"
CC [M] /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.o
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In function ‘map_user_request’:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:484:9: error: passing argument 5 of ‘get_user_pages’ from incompatibl
e pointer type [-Werror=incompatible-pointer-types]
uple->p, NULL);
^~~~
In file included from ./include/linux/scatterlist.h:8:0,
from ./include/linux/dmapool.h:14,
from ./include/linux/pci.h:1334,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:11:
./include/linux/mm.h:1484:6: note: expected ‘struct vm_area_struct **’ but argument is of type ‘struct page **’
long get_user_pages(unsigned long start, unsigned long nr_pages,
^~~~~~~~~~~~~~
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:481:8: error: too many arguments to function ‘get_user_pages’
got = get_user_pages(
^~~~~~~~~~~~~~
In file included from ./include/linux/scatterlist.h:8:0,
from ./include/linux/dmapool.h:14,
from ./include/linux/pci.h:1334,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:11:
./include/linux/mm.h:1484:6: note: declared here
long get_user_pages(unsigned long start, unsigned long nr_pages,
^~~~~~~~~~~~~~
cc1: some warnings being treated as errors
scripts/Makefile.build:323: recipe for target '/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.o' failed
make[3]: *** [/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.o] Error 1
Makefile:1534: recipe for target 'module/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg' failed
make[2]: *** [module/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-4.18.0-20-generic'
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/Makefile.v26:29: recipe for target 'prl_tg' failed
make[1]: *** [prl_tg] Error 2
make[1]: Leaving directory '/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg'
Makefile.kmods:34: recipe for target 'installme' failed
make: *** [installme] Error 2
make: Leaving directory '/usr/lib/parallels-tools/kmods'
Error: could not build kernel modules
Error: failed to install kernel modules
2019-05-26T16:10:40+0200: execCmd: ./install --install [143]
2019-05-26T16:10:40+0200: Error: An error occurred when installing Parallels Tools. Please go to /var/log/parallels-tools-install.log for more
information.
2019-05-26T16:11:56+0200: Exiting with code 1