Parallels Tools do not install on RHEL9

DariusS1

Bit poster
Hello All,

Parallels tools is unable to install on brand new RHEL9 VM. I have only enabled EPEL repos, nothing else.
Kernel: 5.14.0-70.13.1.el9_0.x86_64
Parallels tools version: 17.1.3.51565
Platform: Intel

I am getting this in logs:

Previous version was not found. Nothing to backup.
installer:%0.000000
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-70.13.1.el9_0.x86_64

Fri May 27 13:39:53 EEST 2022
Start installation or upgrade of Guest Tools
installer:%10.000000
installer:%20.000000
Installed Guest Tools were not found
Register service to install new Guest Tools
installer:%30.000000
Perform installation into the /usr/lib/parallels-tools directory
installer:%40.000000
make: Entering directory '/usr/lib/parallels-tools/kmods'
awk: cmd. line:1: warning: regexp escape sequence `\#' is not a known regexp operator
Will use compiler CC="cc".
Compiler version "cc (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)"
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'
1: /lib/modules/5.14.0-70.13.1.el9_0.x86_64/build
2: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg
3: 20220527
4: 1.10.0
Start compile prl_tg...
make -C /lib/modules/5.14.0-70.13.1.el9_0.x86_64/build M=/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/kernels/5.14.0-70.13.1.el9_0.x86_64'
1: /lib/modules/5.14.0-70.13.1.el9_0.x86_64/build
2: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg
3: 20220527
4: 1.10.0
CC [M] /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.o
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:23:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_in32':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:154:32: warning: passing argument 1 of 'inl' makes integer from pointer without a cast [-Wint-conversion]
154 | x = inl(dev->base_addr + port);
| ~~~~~~~~~~~~~~~^~~~~~
| |
| void *
In file included from ./include/linux/io.h:13,
from ./include/linux/pci.h:39,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:7:
./arch/x86/include/asm/io.h:281:41: note: expected 'int' but argument is of type 'void *'
281 | static inline unsigned type in##bwl(int port) \
| ~~~~^~~~
./arch/x86/include/asm/io.h:336:1: note: in expansion of macro 'BUILDIO'
336 | BUILDIO(l, , int)
| ^~~~~~~
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:23:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_out32':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:169:34: warning: passing argument 2 of 'outl' makes integer from pointer without a cast [-Wint-conversion]
169 | outl(val, dev->base_addr + port);
| ~~~~~~~~~~~~~~~^~~~~~
| |
| void *
In file included from ./include/linux/io.h:13,
from ./include/linux/pci.h:39,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:7:
./arch/x86/include/asm/io.h:275:54: note: expected 'int' but argument is of type 'void *'
275 | static inline void out##bwl(unsigned type value, int port) \
| ~~~~^~~~
./arch/x86/include/asm/io.h:336:1: note: in expansion of macro 'BUILDIO'
336 | BUILDIO(l, , int)
| ^~~~~~~
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:23:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_out':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:179:14: warning: assignment to 'long unsigned int' from 'void *' makes integer from pointer without a cast [-Wint-conversion]
179 | port += dev->base_addr;
| ^~
In file included from ./include/linux/printk.h:7,
from ./include/linux/kernel.h:19,
from ./include/linux/list.h:9,
from ./include/linux/module.h:12,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:5:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In function 'prl_tg_probe_common':
./include/linux/kern_levels.h:5:25: warning: format '%lx' expects argument of type 'long unsigned int', but argument 3 has type 'void *' [-Wformat=]
5 | #define KERN_SOH "\001" /* ASCII Start Of Header */
| ^~~~~~
./include/linux/kern_levels.h:14:25: note: in expansion of macro 'KERN_SOH'
14 | #define KERN_INFO KERN_SOH "6" /* informational */
| ^~~~~~~~
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:520:16: note: in expansion of macro 'KERN_INFO'
520 | printk(KERN_INFO "detected %s, base addr %08lx, IRQ %d\n",
| ^~~~~~~~~
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:520:54: note: format string is defined here
520 | printk(KERN_INFO "detected %s, base addr %08lx, IRQ %d\n",
| ~~~~^
| |
| long unsigned int
| %08p
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c: In function 'prl_tg_init_module':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:646:13: warning: unused variable 'rc' [-Wunused-variable]
646 | int rc;
| ^~
CC [M] /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_call.o
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_call.c:11:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_in32':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:154:32: warning: passing argument 1 of 'inl' makes integer from pointer without a cast [-Wint-conversion]
154 | x = inl(dev->base_addr + port);
| ~~~~~~~~~~~~~~~^~~~~~
| |
| void *
In file included from ./include/linux/io.h:13,
from ./include/linux/pci.h:39,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_call.c:7:
./arch/x86/include/asm/io.h:281:41: note: expected 'int' but argument is of type 'void *'
281 | static inline unsigned type in##bwl(int port) \
| ~~~~^~~~
./arch/x86/include/asm/io.h:336:1: note: in expansion of macro 'BUILDIO'
336 | BUILDIO(l, , int)
| ^~~~~~~
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_call.c:11:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_out32':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:169:34: warning: passing argument 2 of 'outl' makes integer from pointer without a cast [-Wint-conversion]
169 | outl(val, dev->base_addr + port);
| ~~~~~~~~~~~~~~~^~~~~~
| |
| void *
In file included from ./include/linux/io.h:13,
from ./include/linux/pci.h:39,
from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_call.c:7:
./arch/x86/include/asm/io.h:275:54: note: expected 'int' but argument is of type 'void *'
275 | static inline void out##bwl(unsigned type value, int port) \
| ~~~~^~~~
./arch/x86/include/asm/io.h:336:1: note: in expansion of macro 'BUILDIO'
336 | BUILDIO(l, , int)
| ^~~~~~~
In file included from /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_call.c:11:
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h: In function 'tg_out':
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg_common.h:179:14: warning: assignment to 'long unsigned int' from 'void *' makes integer from pointer without a cast [-Wint-conversion]
179 | port += dev->base_addr;
| ^~
LD [M] /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prl_tg.o
1: /lib/modules/5.14.0-70.13.1.el9_0.x86_64/build
2: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg
3: 20220527
4: 1.10.0
MODPOST /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/Module.symvers
CC [M] /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
BTF [M] /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prl_tg.ko
Skipping BTF generation for /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prl_tg.ko due to unavailability of vmlinux
make[2]: Leaving directory '/usr/src/kernels/5.14.0-70.13.1.el9_0.x86_64'
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 KBUILD_EXTRA_SYMBOLS=/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/Module.symvers
make[1]: Entering directory '/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs'
make -C /lib/modules/5.14.0-70.13.1.el9_0.x86_64/build M=/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs CC=cc
make[2]: Entering directory '/usr/src/kernels/5.14.0-70.13.1.el9_0.x86_64'
CC [M] /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/super.o
CC [M] /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.o
CC [M] /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/file.o
CC [M] /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/interface.o
LD [M] /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/prl_fs.o
MODPOST /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/Module.symvers
CC [M] /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/prl_fs.mod.o
LD [M] /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/prl_fs.ko
BTF [M] /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/prl_fs.ko
Skipping BTF generation for /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/prl_fs.ko due to unavailability of vmlinux
make[2]: Leaving directory '/usr/src/kernels/5.14.0-70.13.1.el9_0.x86_64'
make[1]: Leaving directory '/usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs'
cd prl_eth/pvmnet && make CC=cc
make[1]: Entering directory '/usr/lib/parallels-tools/kmods/prl_eth/pvmnet'
make -C /lib/modules/5.14.0-70.13.1.el9_0.x86_64/build M=/usr/lib/parallels-tools/kmods/prl_eth/pvmnet CC=cc
make[2]: Entering directory '/usr/src/kernels/5.14.0-70.13.1.el9_0.x86_64'
CC [M] /usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.o
/usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.c:422:27: error: 'eth_change_mtu' undeclared here (not in a function)
422 | .ndo_change_mtu = eth_change_mtu,
| ^~~~~~~~~~~~~~
make[3]: *** [scripts/Makefile.build:271: /usr/lib/parallels-tools/kmods/prl_eth/pvmnet/pvmnet.o] Error 1
make[2]: *** [Makefile:1862: /usr/lib/parallels-tools/kmods/prl_eth/pvmnet] Error 2
make[2]: Leaving directory '/usr/src/kernels/5.14.0-70.13.1.el9_0.x86_64'
make[1]: *** [Makefile:34: all] Error 2
make[1]: Leaving directory '/usr/lib/parallels-tools/kmods/prl_eth/pvmnet'
make: *** [Makefile.kmods:50: compile] Error 2
make: Leaving directory '/usr/lib/parallels-tools/kmods'
Error: could not build kernel modules
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-70.13.1.el9_0.x86_64
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-70.13.1.el9_0.x86_64
Error: failed to install Parallels Guest Tools!
Trying to restore previous Parallels Guest Tools installation...


I have tried to patch tools with the patch found on https://forum.parallels.com/threads...nel-5-17-parallels-tools-17-1-2-51548.357087/ to no avail.

I am open to suggestions please. Thanks!
 
Tried all combinations, running Parallels 17.1.4 with various patches did not work to install Tools on Centos9, upgraded to 17.1.6 but same problem, also tried upgrading the kernel to 6.1 and 6.7, both failed with patches, you need to upgrade to Parallels 18 or 19, no idea if they work but this was the ultimate conclusion, Parallels 17 will not support Centos9 tools and most likely not RHEL9 tools installation.
 
Update installing Parallels Tools on CentOS Stream 9 with Parallels 17, download the trial version 18, in Windows using 7zip unpacking the dmg, there is a file "prl-tools-lin-arm.iso" which copied to the linux VM, installed it, clipboard and host mapping work, it tries to reinstall tools every reboot but cancelling seems to work, Parallels Tools 17 is not compatible with CentOS 9 and it looks like there is no intention to update it.
 
Back
Top