Parallels 10, Ubuntu 14.04: Tools Will Not Install

terrapin

Bit poster
Parallels Desktop: v.10.3.0 (29227)
Platform: Macbook Pro Retina, Mid 2012
Host: OSX v.10.11.3
Guest: Ubuntu Linux v.14.04 LTS, 64 bit, kernel 4.2.0-27-generic
Problem: Parallels tools will not install

To reproduce the problem:
1. Open application: Parallels Desktop v.10.3.0 (29227)
2. Install VM: Ubuntu Linux v.14.04 LTE, 64 bit, kernel 4.2.0-27-generic. Reboot
3. Open a terminal emulator. Issue commands:
Code:
$ sudo apt-get update && sudo apt-get upgrade
$ sudo apt-get install gcc make
$ sudo apt-get install linux-headers-$(uname -r) build-essential

4. Select:
Parallels application menu > Devices > CD/DVD 1 > Disconnect
Parallels application menu > Devices > CD/DVD 1 > Connect Image...
/Applications/Parallels/Desktop/Contents/Resources/Tools/prl-tools-lin.iso

5. Open a terminal emulator. Issue commands:
Code:
$ sudo umount /media/<username>/Parrallels\ Tools
$ sudo mkdir /media/cdrom
$ sudo mount /dev/cdrom /media/cdrom
$ ls /media/cdrom
$ Parallels Tools
$ cd /media/cdrom/Parallels\ Tools/
$ sudo ./install
Parallels Tools installer GUI starts. Select <Next>
Do you want to proceed to installing? Select <Next>
Download additional components? Select <Next>
An error occurred when installing Parallels Tools. Please go to /var/logs/parallels-tools-install.log for more information. Select <Exit>

6. Supress anger. Control impulse to trash PD and purchase VMWare. Spend hours 'Googling' and reading forum posts. Reinstall VM. Try this. Try that. Control impulse to trash PD and purchase VMWare.

9. Post to PD forum. Kindy ask fellow users for suggestions as to what the problem may be. Thank them in advance for any suggestions they may have.

Code:
Parallels Tools 10.3.0-29227 Installer started.
2016-03-18T10:11:37-0400: execCmd: ./installer/pm.sh check_guest_tools 2>&1 [0]
Started installation of Parallels Guest Tools version '10.3.0.29227'

Fri Mar 18 10:11:37 EDT 2016
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.2.0-27-generic/build M=/usr/lib/parallels-tools/kmods/prl_eth/pvmnet
make[2]: Entering directory `/usr/src/linux-headers-4.2.0-27-generic'
  LD      /usr/lib/parallels-tools/kmods/prl_eth/pvmnet/built-in.o
  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.2.0-27-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.2.0-27-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 modules
make[2]: Entering directory `/usr/src/linux-headers-4.2.0-27-generic'
  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 'call_tg_sync':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:776:2: error: implicit declaration of function 'vmalloc' [-Werror=implicit-function-declaration]
  dst = vmalloc(dsize);
  ^
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:776:6: warning: assignment makes pointer from integer without a cast [enabled by default]
  dst = vmalloc(dsize);
      ^
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:784:2: error: implicit declaration of function 'vfree' [-Werror=implicit-function-declaration]
  vfree(dst);
  ^
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In function 'prl_tg_write':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:852:15: warning: assignment makes pointer from integer without a cast [enabled by default]
   sdesc.idata = vmalloc(src->InlineByteCount);
               ^
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:866:8: warning: assignment makes pointer from integer without a cast [enabled by default]
   sbuf = vmalloc(ssize);
        ^
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:888:6: warning: assignment makes pointer from integer without a cast [enabled by default]
  dst = vmalloc(dsize);
      ^
cc1: some warnings being treated as errors
make[3]: *** [/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.o] Error 1
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.2.0-27-generic'
make[1]: *** [prl_tg] Error 2
make[1]: Leaving directory `/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg'
make: *** [installme] Error 2
make: Leaving directory `/usr/lib/parallels-tools/kmods'
Error: could not build kernel modules
Error: failed to install kernel modules
2016-03-18T10:11:39-0400: execCmd: ./install --install [143]
2016-03-18T10:11:39-0400: Error: An error occurred when installing Parallels Tools. Please go to /var/log/parallels-tools-install.log for more information.
2016-03-18T10:11:42-0400: Exiting with code 1
 
@sylvester, thank you for your reply but did you even read the post? No. Because if you did you would have seen that your solution is EXACTLY what I did. I've been a Parallels customer since PD5. I know how to search the KB and forums.

I'm not trying to do something wacky here. Just a plain vanilla install of a very widely used Linux distribution. Ubuntu 14.04, 64 bit is listed as supported on PD10 (http://kb.parallels.com/122662). It ships with Linux kernel 4.2.0-27-generic by default. Can you confirm that Linux kernel 4.2.0-27-generic is supported under PD10?
 
(Parallels Desktop for Mac 9, Mac OS-X 10.8 host, Ubuntu 15 guest)
Parallels tools won't install the normal way. Neither of the articles mentioned abve articles contains instructions that work either. Log attached.
 

Attachments

<sarcasm> Thanks parallels for your amazing support </sarcasm>

Despite their claims (http://kb.parallels.com/122662) PD10 DOES NOT support Ubuntu 14.04 as shipped with Linux kernel 4.2.0-generic.
To get parallels tools to install on 14.04 you have to downgrade to kernel 3.12.0-83-generic.

To do this, open a terminal emulator and:
1. Install Linux kernel 3.13.0-83-generic
$ sudo apt-get update && sudo apt-get install linux-generic

2. Make GRUB menu visible on startup
$ sudo nano /etc/default/grub
# comment out <GRUB_TIMEOUT> or set it to a value other than 0
$ sudo update-grub

3. Reboot and in the GRUB menu select:
Advanced options for Ubuntu > Ubuntu, with Linux-3.13.0-83-generic

Tools will now install in the usual way.
You can now either remove 4.2.0-27 using Synaptic or leave it installed and set 3.13.0.83 as the default kernel as described here: http://askubuntu.com/questions/216398/set-older-kernel-as-default-grub-entry on the (very slim) chance that parallels will support 4.2 under PD10.
Don't hold your breath.

Oh, look here http://www.parallels.com/products/business to see how much parallels values you as a paying (non-enterprise) customer. Scroll down to 'Compare Editions'. If you cough up another $50/yr you can they will kindly relieve you of all those g*****n annoying "in-product notifications and third-party offerings".

F**k you parallels
 
I'd like to second terrapin's sentiments. That's just a poor way to conduct business.

Plus, seeing the support responses to this and similar issues, one would think at least *someone* at Parallels would take a fresh copy of 14.04.4, install it under Parallels 10 and try for themself?
 
Same issues here:
>Unable to install Parallels Tools with Ubuntu 14.04, Linux kernel 4.2.0-27-generic
>Parallels Support sucks
 
I found solution for Ubuntu 14.04 x64 with kernel 4.2.0-34 and Parallels Desktop 10.
  1. Mount Parallels Tools image
  2. Open terminal (copy files to disk)
    Code:
    cd /media/<username>/Parallels\ Tools/
    mkdir ~/Desktop/tools
    cp -pr * ~/Desktop/tools
    cd ~/Desktop/tools
    chmod -R 777 kmods
  3. Open prl_mod.tar.gz from ~/Desktop/tools/kmods in archive manager
  4. Open file ./prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c (from archive) in gedit and add this to other includes.
    Code:
    #include <linux/vmalloc.h>
  5. Open file ./prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c (from archive) in gedit.
    Find method prlfs_follow_link (near line 650) and change it (including compat_follow_link_t) to this:
    Code:
    #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
    #define compat_follow_link_t const char*
    #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
    #define compat_follow_link_t void*
    #else
    #define compat_follow_link_t int
    #endif
    
    
    #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
    static compat_follow_link_t prlfs_follow_link(struct dentry *dentry,
                                                  void  **cookie)
    #else
    static compat_follow_link_t prlfs_follow_link(struct dentry *dentry,
                                                  struct nameidata *nd)
    #endif
    {
    #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
        return do_read_symlink(dentry);
    #else
    
        #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
            nd_set_link(nd, do_read_symlink(dentry));
        #endif
    
        #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
            return NULL;
        #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
            return 0;
        #else
            return vfs_follow_link(nd, do_read_symlink(dentry));
        #endif
    #endif
    }
  6. Open terminal (at ~/Desktop/tools) and run:
    Code:
    sudo ./install

Now, it should work :)

NOTE: Don't forgot save changes to archive when you modify file.
 
Last edited:
I've automated that a little. Here's my enhanced instructions:
  1. Copy the Parallels Tools installer into your home directory:
    Code:
    cp -pr /media/parallels/Parallels\ Tools $HOME/
  2. Apply the attached patch
    Code:
    cd Parallels\ Tools
    sudo patch -p1 < /media/psf/Home/Downloads/parallels-tools-ubuntu-15.10.txt
  • Install:
    Code:
    sudo ./install --install-unattended
 

Attachments

Last edited:
FWIW, installing Parallels Tools 10.4 also fails in Fedora 22. I didn't have the time to start investigating, just restored v10.3 + VMs from a backup.
 
I have used the same method but it dose not seems to work with Linux mint kernel 4.4.0-21-generic. It would be really great if any one could help. This is cosing my OS to work in rendering mode with low display resolution. getting quite annoyed with this


Code:
System:    Host: edrisi-Parallels-Virtual-Platform Kernel: 4.4.0-21-generic x86_64 (64 bit gcc: 5.3.1)
           Desktop: Cinnamon 3.0.6 (Gtk 3.18.9-1ubuntu3)
           Distro: Linux Mint 18 Sarah
Machine:   System: Parallels (portable) product: Parallels Virtual Platform
           Mobo: Parallels model: Parallels Virtual Platform
           Bios: Parallels v: 10.4.0 (29337) rev 0 date: 04/06/2016
CPU:       Quad core Intel Core i7-4850HQ (-MCP-) cache: 6144 KB
           flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3) bmips: 18352
           clock speeds: max: 2294 MHz 1: 2294 MHz 2: 2294 MHz 3: 2294 MHz
           4: 2294 MHz
Graphics:  Card: Parallels Accelerated Virtual Video Adapter bus-ID: 01:00.0
           Display Server: X.Org 1.18.3 drivers: fbdev (unloaded: vesa)
           Resolution: 800x600@75.00hz
           GLX Renderer: Gallium 0.4 on llvmpipe (LLVM 3.8, 256 bits)
           GLX Version: 3.0 Mesa 11.2.0 Direct Rendering: Yes
Audio:     Card Intel 82801BA/BAM AC'97 Audio Controller
           driver: snd_intel8x0 ports: ee00 f000 bus-ID: 00:1f.4
           Sound: Advanced Linux Sound Architecture v: k4.4.0-21-generic
Network:   Card: Red Hat Virtio network device
           driver: virtio-pci port: 8200 bus-ID: 00:05.0
           IF: enp0s5 state: up speed: N/A duplex: N/A mac: <filter>
Drives:    HDD Total Size: 19.3GB (38.6% used)
           ID-1: /dev/sda model: Mint_Linux_1 size: 19.3GB
Partition: ID-1: / size: 17G used: 6.0G (39%) fs: ext4 dev: /dev/dm-0
           ID-2: /boot size: 472M used: 59M (14%) fs: ext2 dev: /dev/sda1
           ID-3: swap-1 size: 1.07GB used: 0.00GB (0%) fs: swap dev: /dev/dm-1
RAID:      No RAID devices: /proc/mdstat, md_mod kernel module present
Sensors:   System Temperatures: cpu: 100.0C mobo: N/A
           Fan Speeds (in rpm): cpu: N/A
Info:      Processes: 183 Uptime: 7 min Memory: 629.4/4364.0MB
           Init: systemd runlevel: 5 Gcc sys: 5.3.1
           Client: Shell (bash 4.3.421) inxi: 2.2.35
 
I was registering just to download the patch. I've also a fresh 14.04.5 installation.
The download fails, unfortunately. Can you repost it? Or, for any user who doesn't want to register just to get this patch, paste the code directly?
 
I had trouble downloading Dirk's patch file, too. Here it is, for posterity. Credit, again, goes to Dirk and Pavel. I'm just posting the patch file.


Code:
diff -Nur "/media/parallels/Parallels Tools/installer/install-kmods.sh" ./installer/install-kmods.sh
--- "/media/parallels/Parallels Tools/installer/install-kmods.sh"    2015-09-21 12:27:40.000000000 +0400
+++ ./installer/install-kmods.sh    2016-04-12 18:04:02.213928961 +0400
@@ -218,6 +218,9 @@
             if [ $make_flag -eq 0 ]; then
                 # Unpack kernel module sources
                 tar -xzf "$KMOD_DIR/$PRL_MOD.$TGZEXT" -C "$KMOD_DIR"
+                pushd "$KMOD_DIR"
+                patch -p1 < $KMOD_DIR/parallels-1.patch
+                popd
                 # Build kernel module
                 make -C "$KMOD_DIR" -f Makefile.kmods
diff -Nur "/media/parallels/Parallels Tools/kmods/parallels-1.patch" ./kmods/parallels-1.patch
--- "/media/parallels/Parallels Tools/kmods/parallels-1.patch"    1970-01-01 04:00:00.000000000 +0400
+++ ./kmods/parallels-1.patch    2016-04-12 17:29:05.116040332 +0400
@@ -0,0 +1,61 @@
+diff --git a/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c b/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c
+index 7e6bb69..cdedd49 100644
+--- a/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c
++++ b/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c
+@@ -13,8 +13,8 @@
+ #include <linux/fs.h>
+ #include "prlfs.h"
+ #include <linux/ctype.h>
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
+ #include <linux/namei.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
+ #else
+ #include <asm/namei.h>
+ #endif
+@@ -650,15 +650,25 @@ out:
+     return tgt_path;
+ }
+
+-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
++#define compat_follow_link_t const char*
++#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
+ #define compat_follow_link_t void*
+ #else
+ #define compat_follow_link_t int
+ #endif
+
+ static compat_follow_link_t prlfs_follow_link(struct dentry *dentry,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
++                                              void  **cookie)
++#else
+                                               struct nameidata *nd)
++#endif
+ {
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
++    return do_read_symlink(dentry);
++#else
++
+ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
+     nd_set_link(nd, do_read_symlink(dentry));
+ #endif
+@@ -670,6 +680,7 @@ static compat_follow_link_t prlfs_follow_link(struct dentry *dentry,
+ #else
+     return vfs_follow_link(nd, do_read_symlink(dentry));
+ #endif
++#endif
+ }
+
+ #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
+diff --git a/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c b/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c
+index 9a80a8b..00b4f92 100644
+--- a/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c
++++ b/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c
+@@ -21,6 +21,7 @@
+ #include <linux/pagemap.h>
+ #include <linux/proc_fs.h>
+ #include <linux/hash.h>
++#include <linux/vmalloc.h>
+ #include <asm/uaccess.h>
+ #include <asm/atomic.h>
+ #include <asm/io.h>
 
I found solution for Ubuntu 14.04 x64 with kernel 4.2.0-34 and Parallels Desktop 10.
  1. Mount Parallels Tools image
  2. Open terminal (copy files to disk)
    Code:
    cd /media/<username>/Parallels\ Tools/
    mkdir ~/Desktop/tools
    cp -pr * ~/Desktop/tools
    cd ~/Desktop/tools
    chmod -R 777 kmods
  3. Open prl_mod.tar.gz from ~/Desktop/tools/kmods in archive manager
  4. Open file ./prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c (from archive) in gedit and add this to other includes.
    Code:
    #include <linux/vmalloc.h>
  5. Open file ./prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c (from archive) in gedit.
    Find method prlfs_follow_link (near line 650) and change it (including compat_follow_link_t) to this:
    Code:
    #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
    #define compat_follow_link_t const char*
    #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
    #define compat_follow_link_t void*
    #else
    #define compat_follow_link_t int
    #endif
    
    
    #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
    static compat_follow_link_t prlfs_follow_link(struct dentry *dentry,
                                                  void  **cookie)
    #else
    static compat_follow_link_t prlfs_follow_link(struct dentry *dentry,
                                                  struct nameidata *nd)
    #endif
    {
    #if LINUX_VERSION_CODE >= KERNEL_VERSION(4,2,0)
        return do_read_symlink(dentry);
    #else
    
        #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
            nd_set_link(nd, do_read_symlink(dentry));
        #endif
    
        #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
            return NULL;
        #elif LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
            return 0;
        #else
            return vfs_follow_link(nd, do_read_symlink(dentry));
        #endif
    #endif
    }
  6. Open terminal (at ~/Desktop/tools) and run:
    Code:
    sudo ./install

Now, it should work :)

NOTE: Don't forgot save changes to archive when you modify file.
Worked perfectly on Ubuntu kernel 4.2.0.42.
Thank you PavelK2
 
I guess I'm too much of a nooby. So my ubuntu doesn't recognize mdir and when I run the patch ( I did download the file and reference it's location in the command) it jumps down a line in terminal with no cursor and just sits there forever until I CTRL C. Is this normal. I let it sit there for about thirty minutes and just decided to close it.

I currently have 16.4.1 Desktop version installed and running Parallels 10.

For the time being, I downloaded 8.10 off their old-release portal and I'm going back to that so it will work in Parallels :(
 
Back
Top