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!
 
Why would you try to apply a patch for an incompatible kernel version? In your case, I would try with https://forum.parallels.com/threads...allels-tools-17-0-0-51461.354739/#post-891709 first.
OK Thanks, I will try that. However, RHEL9 uses kernel version 5.14 which compiles OK with OpenSUSE Leap 15.4 RC1 which also comes with kernel 5.14. Also by the looks of the errors in my first message they appear largely similar to the ones that people observe in https://forum.parallels.com/threads...nel-5-17-parallels-tools-17-1-2-51548.357087/ thread ( error: 'eth_change_mtu' undeclared here (not in a function) ). I tend to think RH has back-ported something from the later versions of the kernels, which is not uncommon for them.
 
For that particular error (which is entirely RHEL related), you will need to edit prl_eth/pvmnet/pvmnet.c and wrap eth_change_mtu as follows:
Code:
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,4) 
        .ndo_change_mtu = eth_change_mtu, 
#endif
 
For that particular error (which is entirely RHEL related), you will need to edit prl_eth/pvmnet/pvmnet.c and wrap eth_change_mtu as follows:
Code:
#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,4)
        .ndo_change_mtu = eth_change_mtu,
#endif
Thanks for this. However, this does not work for RHEL9.
I have found inspiration in this thread: https://lkml.kernel.org/lkml/[email protected]/ . Seeing how eth_change_mtu function is removed from all the net drivers, I have replaced it with the funcion dev_set_mtu in prl_eth/pvmnet/pvmnet.c and wrapped it with RHEL9 specifics:

Code:
#elif RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(9, 0)
    .ndo_change_mtu = dev_set_mtu,

It now build just fine. So, the final patch for version 17.1.4.51567 now is in the attachment. It is combined with the patch found in this thread: https://forum.parallels.com/threads...rnel-5-18-parallel-tools-17-1-4-51567.357611/ (please note than in 17.1.4.51567 kmods/prl_fs/Toolgate now is a symlink to kmods/prl_tg/Toolgate, so the patch posted in the link contains 2 duplicate entries for prltg.c and prltg_call.c which are removed in my patch).
 

Attachments

Hello Guys, We have released the Parallels Desktop's latest build 17.1.4 so we would suggest you upgrade it to the latest build and check if the issue persists kindly let us know.
 
Hello Guys, We have released the Parallels Desktop's latest build 17.1.4 so we would suggest you upgrade it to the latest build and check if the issue persists kindly let us know.
i have a same problem like DariusS1 in Kali Linux, can you help to resolve it?
 
Got the same problem on macOS 10.15.7 + RHEL 9 in Parallels Tools v17.1.4.51567.
Tried to use a patch but failed somewhere (most likely in some permissions when copied data from mounted drive to local folder). Could you please provide compiled ISO, ready for mounting and launching?
 
...and, not sure whether it's the same (actually it should be), for Fedora 36 Parallels tools of the same version cannot be installed as well.
 
Hello all,

Can we estimate when Redhat Enterprise Linux 9 is supported as guest in parallels?

RHEL9 is really important to Business Users and I wish some more focus to support this distro.

Thanks, Andy
 
Same problem here, that module "prl_tg" can not be found. intel MacBook Pro.
There are code changes to Parallels Tools that are specifically required for RHEL as outlined in this thread. Please read through the entire thread because there are several revisions to the patch file required for 5.18.x (and 5.19.x) kernels.
 
Hi folks,
I have the same issue regarding the installation of Parallels Tools on RHEL 9 (Kernel version 5.14.0-70.22.1).
I've upgraded Parallels to the latest version 18.0.0 (53049). It runs on my Intel Mac and nothing changed in comparision to the latest 17.x Parallels version.
I woud have expected, that there are no longer any issues after installing the 18.x version, but I still got the same error messages as before when having installed the 17.x version.
....
Fontconfig warning: "/usr/share/fontconfig/conf.avail/05-reset-dirs-sample.conf", line 6: unknown element "reset-dirs"
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-70.22.1.el9_0.x86_64
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-70.22.1.el9_0.x86_64
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-70.22.1.el9_0.x86_64
...
I would like Paralles to fix the bug as soon as possible because it severely limits the functionality of the VM in terms of hardware compatibility.
If you need further logs please give me a short reply. I'll try contribute all available information I can to help solving that issue.
 
Back
Top