Skip to content

Instantly share code, notes, and snippets.

@rudolfratusinski
Last active November 23, 2022 20:01
Show Gist options
  • Save rudolfratusinski/a4d9e3caff11a4d9d81d2e84abc9afbf to your computer and use it in GitHub Desktop.
Save rudolfratusinski/a4d9e3caff11a4d9d81d2e84abc9afbf to your computer and use it in GitHub Desktop.
Parallels Tools fix for Ubuntu 18.04 and other Linux distributions with Kernel version >= 4.15

Preparation

  • 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_*

We have to modify some files:

  • 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)

Changing file 1/3

  • 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

Changing file 2/3

  • 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

Changing file 3/3

  • 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

Zip it back

  • 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

Install!

  • Go one level up (cd ../ or cd ~/Desktop/parallels_fixed) and install it by running sudo ./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

@thebuunkenator
Copy link

Thanks!

@zhongshj
Copy link

thanks, it worked on 16.04LTS

@Daksh
Copy link

Daksh commented Mar 31, 2019

Umm, on Ubuntu 18.04LTS; my boot starts failing. No longer am I able to use the system :\

@sm-go-ch
Copy link

Have the same issue with Parallels 12 and Ubuntu 18.04LTS as "Daksh". System only boots when I use 4.4.* Kernel to start... Is there another incompatible change in the latest 4.15.* Kernel?

@LucaTomei
Copy link

For ubuntu 19 prl tools doesn't work, any updates?!??

@marcofariasmx
Copy link

Same problem here with Ubuntu 19 with kernel 5.0. This fix no longer works. Any ideas? Thanks!

@xiebruce
Copy link

Same problem, I follow your step but Ubuntu 19.04 doesn't work, below is the parallels-tools-install.log

2019-04-18T23:30:21-0700: 

Parallels Tools 14.1.2-45479 Installer started.
2019-04-18T23:30:21-0700: Failed to setup console printk level.
2019-04-18T23:30:27-0700: execCmd: ./installer/pm.sh --check gtools [0]
Started installation of Parallels Guest Tools version '14.1.2.45479'
Error during report about start installation of parallels tools.

Thu Apr 18 23:30:31 PDT 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
make: Entering directory '/usr/lib/parallels-tools/kmods'
Will use compiler CC="cc".
Compiler version "cc (Ubuntu 8.3.0-6ubuntu1) 8.3.0"
cd prl_eth/pvmnet && make CC=cc
make[1]: Entering directory '/usr/lib/parallels-tools/kmods/prl_eth/pvmnet'
make -C /lib/modules/5.0.0-13-generic/build M=/usr/lib/parallels-tools/kmods/prl_eth/pvmnet CC=cc
make[2]: Entering directory '/usr/src/linux-headers-5.0.0-13-generic'
  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-5.0.0-13-generic'
make[1]: Leaving directory '/usr/lib/parallels-tools/kmods/prl_eth/pvmnet'
cd prl_tg/Toolgate/Guest/Linux/prl_tg && make CC=cc
make[1]: Entering directory '/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg'
make -C /lib/modules/5.0.0-13-generic/build SUBDIRS=/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg SRCROOT=/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg CC=cc modules
make[2]: Entering directory '/usr/src/linux-headers-5.0.0-13-generic'
Makefile:203: ================= WARNING ================
Makefile:204: 'SUBDIRS' will be removed after Linux 5.3
Makefile:205: Please use 'M=' or 'KBUILD_EXTMOD' instead
Makefile:206: ==========================================
  CC [M]  /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.o
  CC [M]  /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_call.o
  LD [M]  /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prl_tg.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prl_tg.mod.o
  LD [M]  /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prl_tg.ko
make[2]: Leaving directory '/usr/src/linux-headers-5.0.0-13-generic'
make[1]: Leaving directory '/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg'
cp -f prl_tg/Toolgate/Guest/Linux/prl_tg/*.symvers prl_fs/SharedFolders/Guest/Linux/prl_fs ||:
cd prl_fs/SharedFolders/Guest/Linux/prl_fs && make CC=cc
make[1]: Entering directory '/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs'
make -C /lib/modules/5.0.0-13-generic/build M=/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs CC=cc
make[2]: Entering directory '/usr/src/linux-headers-5.0.0-13-generic'
  CC [M]  /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.o
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c: In function 'prlfs_remount':
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:119:21: error: 'MS_RDONLY' undeclared (first use in this function); did you mean 'IS_RDONLY'?
  if ( (!((*flags) & MS_RDONLY) && PRLFS_SB(sb)->readonly) ||
                     ^~~~~~~~~
                     IS_RDONLY
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:119:21: note: each undeclared identifier is reported only once for each function it appears in
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:120:21: error: 'MS_MANDLOCK' undeclared (first use in this function); did you mean 'IS_MANDLOCK'?
         ((*flags) & MS_MANDLOCK) )
                     ^~~~~~~~~~~
                     IS_MANDLOCK
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:123:12: error: 'MS_SYNCHRONOUS' undeclared (first use in this function); did you mean 'SB_SYNCHRONOUS'?
  *flags |= MS_SYNCHRONOUS; /* silently don't drop sync flag */
            ^~~~~~~~~~~~~~
            SB_SYNCHRONOUS
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c: In function 'prlfs_fill_super':
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:277:17: error: 'MS_NOATIME' undeclared (first use in this function); did you mean 'S_NOATIME'?
  sb->s_flags |= MS_NOATIME | MS_SYNCHRONOUS;
                 ^~~~~~~~~~
                 S_NOATIME
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:277:30: error: 'MS_SYNCHRONOUS' undeclared (first use in this function); did you mean 'SB_SYNCHRONOUS'?
  sb->s_flags |= MS_NOATIME | MS_SYNCHRONOUS;
                              ^~~~~~~~~~~~~~
                              SB_SYNCHRONOUS
make[3]: *** [scripts/Makefile.build:286: /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.o] Error 1
make[2]: *** [Makefile:1584: _module_/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-5.0.0-13-generic'
make[1]: Leaving directory '/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs'
make[1]: *** [/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/Makefile.v26:13: all] Error 2
make: Leaving directory '/usr/lib/parallels-tools/kmods'
make: *** [Makefile.kmods:52: 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!
2019-04-18T23:30:35-0700: Started installation of Parallels Guest Tools version '14.1.2.45479'
Error during report about start installation of parallels tools.

Thu Apr 18 23:30:31 PDT 2019
Start installation or upgrade of Guest Tools
Makefile:203: ================= WARNING ================
Makefile:204: 'SUBDIRS' will be removed after Linux 5.3
Makefile:205: Please use 'M=' or 'KBUILD_EXTMOD' instead
Makefile:206: ==========================================
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c: In function 'prlfs_remount':
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:119:21: error: 'MS_RDONLY' undeclared (first use in this function); did you mean 'IS_RDONLY'?
  if ( (!((*flags) & MS_RDONLY) && PRLFS_SB(sb)->readonly) ||
                     ^~~~~~~~~
                     IS_RDONLY
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:119:21: note: each undeclared identifier is reported only once for each function it appears in
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:120:21: error: 'MS_MANDLOCK' undeclared (first use in this function); did you mean 'IS_MANDLOCK'?
         ((*flags) & MS_MANDLOCK) )
                     ^~~~~~~~~~~
                     IS_MANDLOCK
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:123:12: error: 'MS_SYNCHRONOUS' undeclared (first use in this function); did you mean 'SB_SYNCHRONOUS'?
  *flags |= MS_SYNCHRONOUS; /* silently don't drop sync flag */
            ^~~~~~~~~~~~~~
            SB_SYNCHRONOUS
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c: In function 'prlfs_fill_super':
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:277:17: error: 'MS_NOATIME' undeclared (first use in this function); did you mean 'S_NOATIME'?
  sb->s_flags |= MS_NOATIME | MS_SYNCHRONOUS;
                 ^~~~~~~~~~
                 S_NOATIME
/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:277:30: error: 'MS_SYNCHRONOUS' undeclared (first use in this function); did you mean 'SB_SYNCHRONOUS'?
  sb->s_flags |= MS_NOATIME | MS_SYNCHRONOUS;
                              ^~~~~~~~~~~~~~
                              SB_SYNCHRONOUS
make[3]: *** [scripts/Makefile.build:286: /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.o] Error 1
make[2]: *** [Makefile:1584: _module_/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs] Error 2
make[1]: *** [/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/Makefile.v26:13: all] Error 2
make: *** [Makefile.kmods:52: 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!
2019-04-18T23:30:35-0700: execCmd: ./install --install [167]
2019-04-18T23:30:35-0700: Error: An error occurred when installing Parallels Tools. Please go to /var/log/parallels-tools-install.log for more information.
2019-04-18T23:30:38-0700: Exiting with code 1

@Kitty2014
Copy link

For ubuntu 19 prl tools doesn't work, any updates?!??

@geiraage
Copy link

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

@benbrummer
Copy link

@geiraage maybe this helps https://forum.parallels.com/threads/display-mouse-parallel-tools-issue-after-latest-ubuntu-16-04-upgrade.346765/#post-852398

for a system at HostEurope i had to adept it to:
cp -R /media/cdrom/ ~/baremetaltools/
chmod -R 777 ~/baremetaltools/
tar xf ~/baremetaltools/kmods/prl_mod.tar.gz -C ~/baremetaltools/kmods/
vi ~/baremetaltools/installer/install-kmods.sh
comment out line 217
#tar -xzf "$INSTALL_DIR_KMODS/prl_mod.tar.gz" -C "$INSTALL_DIR_KMODS"
add this line
cp -Rf "$KMODS_DIR" "$INSTALL_DIR_KMODS"
vi ~/baremetaltools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_compat.h
change line 211
get_user_pages(current, current->mm, _1, _2, _3, 0, _4, _5)
to this
get_user_pages(current, current->mm, _1, _2, _3, _4, _5)
cd ~/baremetaltools
sudo ./install

@kishonadish
Copy link

Thanks ever so! Worked a treat!!

@raintean
Copy link

thx, it works!

@farzadso
Copy link

Thanks, worked for me only on 18.04.1 ... Not on 18.04.2

@dennsporcic
Copy link

I have success installing on Ubuntu 19.04 with only one file change.

  • Follow the preparation step as described at top of this page
  • Edit kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c
  • Simply add an extra include
    #include <uapi/linux/mount.h>
  • and run the install script. :) Happy days !

@fcgreg
Copy link

fcgreg commented Jul 20, 2019

Regarding the update from @dennsporcic -

I have success installing on Ubuntu 19.04 with only one file change.

  • Follow the preparation step as described at top of this page
  • Edit kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c
  • Simply add an extra include
    #include <uapi/linux/mount.h>
  • and run the install script. :) Happy days !

I'm just confirming for everyone that on newer versions of Ubuntu (e.g. 19.04), this single file change is the ONLY change required to get Parallels Tools to install. Ignore the other file modification steps. A few other clarifications:

  • In addition to following the steps in the "Preparation" section, you will also need to follow the steps in the section "We have to modify some files" and later in the section "Zip it back" (e.g. extract the archive prl_mod.tar.gz, modify the "super.c" file, and re-archive the file prl_mod.tar.gz).

Enjoy!

@shred86
Copy link

shred86 commented Aug 11, 2019

Thanks @dennsporcic! That's all I had to update as well to install Ubuntu 19.04 using Parallels 14.

@fefas
Copy link

fefas commented Sep 5, 2019

For Ubuntu 18.04, the fix suggested by @dennsporcic and @fcgreg worked just fine. Thanks!

@DrummerKH
Copy link

For Ubuntu 18.04, the fix suggested by @dennsporcic worked also, thanks

@yfdandy
Copy link

yfdandy commented Oct 6, 2019

@dennsporcic thanks!

@Javihache
Copy link

I have success installing on Ubuntu 19.04 with only one file change.

  • Follow the preparation step as described at top of this page
  • Edit kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c
  • Simply add an extra include
    #include <uapi/linux/mount.h>
  • and run the install script. :) Happy days !

Great thanks a lot!!!

@indapublic
Copy link

Regarding the update from @dennsporcic -

I have success installing on Ubuntu 19.04 with only one file change.

  • Follow the preparation step as described at top of this page
  • Edit kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c
  • Simply add an extra include
    #include <uapi/linux/mount.h>
  • and run the install script. :) Happy days !

I'm just confirming for everyone that on newer versions of Ubuntu (e.g. 19.04), this single file change is the ONLY change required to get Parallels Tools to install. Ignore the other file modification steps. A few other clarifications:

  • In addition to following the steps in the "Preparation" section, you will also need to follow the steps in the section "We have to modify some files" and later in the section "Zip it back" (e.g. extract the archive prl_mod.tar.gz, modify the "super.c" file, and re-archive the file prl_mod.tar.gz).

Enjoy!

Just modify file without re-archive. Parallels 14, Ubuntu 18.04

@abrahamortiz
Copy link

I'm having the next log with macOS Catalina 10.15, Parallels 14.0.1 and Ubuntu 18.04.03

019-10-26T23:43:36-0500:

Parallels Tools 14.0.1-45154 Installer started.
2019-10-26T23:43:36-0500: Failed to setup console printk level.
2019-10-26T23:43:42-0500: execCmd: ./installer/pm.sh --check gtools [0]
Started installation of Parallels Guest Tools version '14.0.1.45154'

Error during report about start installation of parallels tools.
Sat Oct 26 23:43:47 CDT 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
tar (child): /usr/lib/parallels-tools/kmods/prl_mod.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
make: Entering directory '/usr/lib/parallels-tools/kmods'
Will use compiler CC="cc".
Compiler version "cc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0"
cd prl_eth/pvmnet && make CC=cc
make[1]: Entering directory '/usr/lib/parallels-tools/kmods/prl_eth/pvmnet'
make -C /lib/modules/5.0.0-32-generic/build M=/usr/lib/parallels-tools/kmods/prl_eth/pvmnet CC=cc
make[2]: Entering directory '/usr/src/linux-headers-5.0.0-32-generic'
CC [M] /usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.o
/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:194:3: error: 'struct ethtool_ops' has no member named 'get_settings'; did you mean 'get_strings'?
.get_settings = pvmnet_get_settings,
^~~~~~~~~~~~
get_strings
/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:194:28: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
.get_settings = pvmnet_get_settings,
^~~~~~~~~~~~~~~~~~~
/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:194:28: note: (near initialization for 'pvmnet_ethtool_ops.get_drvinfo')
cc1: some warnings being treated as errors
scripts/Makefile.build:284: recipe for target '/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.o' failed
make[3]: *** [/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.o] Error 1
Makefile:1614: recipe for target 'module/usr/lib/parallels-tools/kmods/prl_eth/pvmnet' failed
make[2]: *** [module/usr/lib/parallels-tools/kmods/prl_eth/pvmnet] Error 2
make[2]: Leaving directory '/usr/src/linux-headers-5.0.0-32-generic'
/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/Makefile.v26:11: recipe for target 'all' failed
make[1]: Leaving directory '/usr/lib/parallels-tools/kmods/prl_eth/pvmnet'
make[1]: *** [all] Error 2
Makefile.kmods:49: recipe for target 'compile' failed
make: *** [compile] Error 2
make: Leaving directory '/usr/lib/parallels-tools/kmods'
Error: could not build kernel modules
Error during report about failed installation of parallels tools.
Error: failed to install Parallels Guest Tools!
2019-10-26T23:43:48-0500: Started installation of Parallels Guest Tools version '14.0.1.45154'
Error during report about start installation of parallels tools.

Sat Oct 26 23:43:47 CDT 2019
Start installation or upgrade of Guest Tools
tar (child): /usr/lib/parallels-tools/kmods/prl_mod.tar.gz: Cannot open: No such file or directory
tar (child): Error is not recoverable: exiting now
tar: Child returned status 2
tar: Error is not recoverable: exiting now
/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:194:3: error: 'struct ethtool_ops' has no member named 'get_settings'; did you mean 'get_strings'?
.get_settings = pvmnet_get_settings,
^~~~~~~~~~~~
get_strings
/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:194:28: error: initialization from incompatible pointer type [-Werror=incompatible-pointer-types]
.get_settings = pvmnet_get_settings,
^~~~~~~~~~~~~~~~~~~
/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:194:28: note: (near initialization for 'pvmnet_ethtool_ops.get_drvinfo')
cc1: some warnings being treated as errors
make[3]: *** [/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.o] Error 1
make[2]: *** [module/usr/lib/parallels-tools/kmods/prl_eth/pvmnet] Error 2
make[1]: *** [all] Error 2
make: *** [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!
2019-10-26T23:43:48-0500: execCmd: ./install --install [167]
2019-10-26T23:43:48-0500: Error: An error occurred when installing Parallels Tools. Please go to /var/log/parallels-tools-install.log for more information.
2019-10-26T23:44:04-0500: Exiting with code 1

@kkayal
Copy link

kkayal commented Oct 30, 2019

@abrahamortiz: Those errors are related to the gcc compiler version. I installed clang version 9 (default in Ubuntu 19.10) and changed the symbilc link cc from gcc to clang. After that, the guest additions copiled and shared folders worked.

@boy1583
Copy link

boy1583 commented Nov 17, 2019

If someone also get errors below:

error: ‘struct ethtool_ops’ has no member named ‘get_settings’; did you mean ‘get_strings’

and further error:

/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c:119:21: error: 'MS_RDONLY' undeclared (first use in this function); did you mean 'IS_RDONLY'?

or something like that:
you can ref these two links to solve:

https://gist.github.com/mag911/1a5583a766467d6023584d738cee0d98

acooks/tn40xx-driver#9

@abderra7mane
Copy link

I have success installing on Ubuntu 19.04 with only one file change.

  • Follow the preparation step as described at top of this page
  • Edit kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.c
  • Simply add an extra include
    #include <uapi/linux/mount.h>
  • and run the install script. :) Happy days !

Thanks !!!

@AshinTheAnvil
Copy link

@dennsporcic I am using a parallels 14.1 with ubuntu 18.04.I followed your steps for installing parallel tools but even though i modify the prl folder,super.c file...the error persists and i am unable to install pls help.

@ronijati
Copy link

ronijati commented Aug 2, 2020

after many times trying various ways including this method and it did not work, finally tried a simple and successful way namely installing Ubuntu from the Parallels desktop program. Don't download the ISO file and install it on Parallels.

@ashleyharvey
Copy link

@Jedliu
Copy link

Jedliu commented Dec 9, 2020

after many times trying various ways including this method and it did not work, finally tried a simple and successful way namely installing Ubuntu from the Parallels desktop program. Don't download the ISO file and install it on Parallels.

Thank you very much! This does help me a lot!

@shinnlu
Copy link

shinnlu commented Dec 18, 2020

i am installing ElementaryOS 5.4 with parallels desktop 13.3.0 with many error, after fix , i still stuck on one problem.
the installation stop for a long time, when i check the log, it asking the questions:

scripts/kconfig/conf --syncconfig Kconfig
* Restart config
*Timers sybsystem
Timer tick handling
1. Periodic timer ticks(constant rate, no dynticks)(HZ_PERIODIC)
2. Idle synticks system (tickless idle) (NO_HZ_IDLE)
3. FULL dynticks system (tickless) (NO_HZ_FULL) (NEW)
choice[1-3?]:

but there is no responding when i input 1 ~ 3 to install screen.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment