Parallels Tools do not install on RHEL9

We are having the same problem here. Alma Linux 9, Parallels 18.0.2, running on Mac OS Big Sur 11.6.7, Intel Mac
 
Hello everyone. Have the same problem with Parallels Tools installation on RHEL-9.0 (Kernel: Linux 5.14.0-70.26.1.el9_0.x86_64)
 

Attachments

  • upload_2022-11-2_15-37-6.png
    upload_2022-11-2_15-37-6.png
    32.1 KB · Views: 20
Same problem here, with the latest version of Parallels installed. This seems unacceptable as the issue has been around for a long time. Can someone from Parallels fix this please?
 
I'm also having this issue when using Bento to generate a AlmaLinux 9 parallels vagrant box:

Code:
parallels-iso: Provisioning with shell script: ~/Documents/Code/bento/packer_templates/almalinux/../_common/parallels.sh
==> parallels-iso: + HOME_DIR=/home/vagrant
==> parallels-iso: + case "$PACKER_BUILDER_TYPE" in
==> parallels-iso: ++ awk -F. '{print $1}'
==> parallels-iso: ++ sed 's/^.\+ release \([.0-9]\+\).*/\1/' /etc/redhat-release
==> parallels-iso: + major_version=9
==> parallels-iso: + '[' 9 -ge 10 ']'
==> parallels-iso: + mkdir -p /tmp/parallels
==> parallels-iso: ++ uname -m
==> parallels-iso: + '[' aarch64 = aarch64 ']'
==> parallels-iso: + mount -o loop /home/vagrant/prl-tools-lin-arm.iso /tmp/parallels
==> parallels-iso: mount: /tmp/parallels: WARNING: source write-protected, mounted read-only.
==> parallels-iso: ++ cat /tmp/parallels/version
==> parallels-iso: + VER=18.1.0.53311
    parallels-iso: Parallels Tools Version: 18.1.0.53311
==> parallels-iso: + echo 'Parallels Tools Version: 18.1.0.53311'
==> parallels-iso: + /tmp/parallels/install --install-unattended-with-deps
    parallels-iso: Started installation of Parallels Guest Tools version '18.1.0.53311'
    parallels-iso: modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-70.30.1.el9_0.aarch64
    parallels-iso:
    parallels-iso: Tue Nov 15 22:16:39 UTC 2022
    parallels-iso: Start installation or upgrade of Guest Tools
    parallels-iso: Skipping BTF generation for /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prl_tg.ko due to unavailability of vmlinux
    parallels-iso: Skipping BTF generation for /usr/lib/parallels-tools/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/prl_fs.ko due to unavailability of vmlinux
    parallels-iso: Skipping BTF generation for /usr/lib/parallels-tools/kmods/prl_notifier/Installation/lnx/prl_notifier/prl_notifier.ko due to unavailability of vmlinux
    parallels-iso: Skipping BTF generation for /usr/lib/parallels-tools/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.ko due to unavailability of vmlinux
    parallels-iso: Start installation of prl_tg kernel module
    parallels-iso: Start installation of prl_fs kernel module
    parallels-iso: Start installation of prl_fs_freeze kernel module
    parallels-iso: Start installation of prl_notifier kernel module
    parallels-iso: Failed to resolve typeattributeset statement at /var/lib/selinux/targeted/tmp/modules/400/prltimesync/cil:35
    parallels-iso: Failed to resolve AST
    parallels-iso: semodule:  Failed!
    parallels-iso: Failed to resolve typeattributeset statement at /var/lib/selinux/targeted/tmp/modules/400/prltoolsd/cil:51
    parallels-iso: Failed to resolve AST
    parallels-iso: semodule:  Failed!
    parallels-iso: cp: cannot create regular file '/usr/share/icons/hicolor/48x48/apps/parallels-tools.png': No such file or directory
    parallels-iso: Parallels Guest Tools were installed successfully!

I think the main issue may be this one: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-70.30.1.el9_0.aarch64
 
Same issue here with CentOS Stream 9 on an M1 Pro macOS 13.0 host with PD 18.1.0(53311)
 

Attachments

  • Snipaste_2022-11-16_20-15-30.png
    Snipaste_2022-11-16_20-15-30.png
    973.9 KB · Views: 11
I find it hilarious that Parallels claims via https://www.parallels.com/blogs/parallels-desktop-18-1/ that in 18.1.0 they fixed installation on M1 for CentOS 9 Stream, when everyone around here knows that that is not the case. The code still fails to compile with parallel tools 18.1.0.53311

I opened a support ticket but got a reply with links about how to install parallel tools on Windows! Reopened the ticket and linked to this thread, hopefully we would have it fixed.
 
Tried running on the latest Rocky Linux 9.1, with kernel 5.14.0-162.6.1.el9_1.0.1.x86_64, and it's not compiling, same prl_tg errors as usual:
Code:
2022-12-28T20:49:35+0000: 

Parallels Tools 17.1.6-51584 Installer started.
2022-12-28T20:49:35+0000: Failed to setup console printk level.
2022-12-28T20:49:37+0000: execCmd: ./install --check [0]
2022-12-28T20:49:37+0000: execCmd: ./installer/detect-xserver.sh -v >/dev/null 2>&1 [163]
2022-12-28T20:49:37+0000: execCmd: ./installer/pm.sh --check gtools [0]
Started installation of Parallels Guest Tools version '17.1.6.51584'
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64

Wed Dec 28 20:49:37 GMT 2022
Start installation or upgrade of Guest Tools
Installed Guest Tools were not found
Register service to install new Guest Tools
Perform installation into the /usr/lib/parallels-tools directory
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.3.1 20220421 (Red Hat 11.3.1-2)"
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-162.6.1.el9_1.0.1.x86_64/build
2: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg
3: 20221228
4: 1.10.0
Start compile prl_tg...
make -C /lib/modules/5.14.0-162.6.1.el9_1.0.1.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-162.6.1.el9_1.0.1.x86_64'
1: /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64/build
2: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg
3: 20221228
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:267:41: note: expected 'int' but argument is of type 'void *'
  267 | static inline unsigned type in##bwl(int port)                           \
      |                                     ~~~~^~~~
./arch/x86/include/asm/io.h:322:1: note: in expansion of macro 'BUILDIO'
  322 | 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:261:54: note: expected 'int' but argument is of type 'void *'
  261 | static inline void out##bwl(unsigned type value, int port)              \
      |                                                  ~~~~^~~~
./arch/x86/include/asm/io.h:322:1: note: in expansion of macro 'BUILDIO'
  322 | 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;
      |              ^~
/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:255:30: error: implicit declaration of function 'PDE_DATA'; did you mean 'NODE_DATA'? [-Werror=implicit-function-declaration]
  255 |         struct tg_dev *dev = PDE_DATA(FILE_DENTRY(filp)->d_inode);
      |                              ^~~~~~~~
      |                              NODE_DATA
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:255:30: warning: initialization of 'struct tg_dev *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
In file included from ./include/linux/printk.h:7,
                 from ./include/linux/kernel.h:20,
                 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':
2022-12-28T20:49:38+0000: Started installation of Parallels Guest Tools version '17.1.6.51584'
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64

Wed Dec 28 20:49:37 GMT 2022
Start installation or upgrade of Guest Tools
awk: cmd. line:1: warning: regexp escape sequence `\#' is not a known regexp operator
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:267:41: note: expected 'int' but argument is of type 'void *'
  267 | static inline unsigned type in##bwl(int port)                           \
      |                                     ~~~~^~~~
./arch/x86/include/asm/io.h:322:1: note: in expansion of macro 'BUILDIO'
  322 | 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:261:54: note: expected 'int' but argument is of type 'void *'
  261 | static inline void out##bwl(unsigned type value, int port)              \
      |                                                  ~~~~^~~~
./arch/x86/include/asm/io.h:322:1: note: in expansion of macro 'BUILDIO'
  322 | 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;
      |              ^~
/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:255:30: error: implicit declaration of function 'PDE_DATA'; did you mean 'NODE_DATA'? [-Werror=implicit-function-declaration]
  255 |         struct tg_dev *dev = PDE_DATA(FILE_DENTRY(filp)->d_inode);
      |                              ^~~~~~~~
      |                              NODE_DATA
/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c:255:30: warning: initialization of 'struct tg_dev *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
In file included from ./include/linux/printk.h:7,
                 from ./include/linux/kernel.h:20,
                 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 functio./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;
      |             ^~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:295: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.o] Error 1
make[2]: Leaving directory '/usr/src/kernels/5.14.0-162.6.1.el9_1.0.1.x86_64'
make[2]: *** [Makefile:1915: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg] Error 2
make[1]: Leaving directory '/usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg'
make[1]: *** [Makefile:43: prl_tg] Error 2
make: Leaving directory '/usr/lib/parallels-tools/kmods'
make: *** [Makefile.kmods:47: compile] Error 2
Error: could not build kernel modules
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64
Error: failed to install Parallels Guest Tools!
2022-12-28T20:49:38+0000: n '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;
      |             ^~
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:295: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.o] Error 1
make[2]: *** [Makefile:1915: /usr/lib/parallels-tools/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg] Error 2
make[1]: *** [Makefile:43: prl_tg] Error 2
make: *** [Makefile.kmods:47: compile] Error 2
Error: could not build kernel modules
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64
modprobe: FATAL: Module prl_tg not found in directory /lib/modules/5.14.0-162.6.1.el9_1.0.1.x86_64
Error: failed to install Parallels Guest Tools!
2022-12-28T20:49:38+0000: execCmd: ./install --install [167]
2022-12-28T20:49:39+0000: Exiting with code 1
I'm Using Parallels Tools 17.1.6.51584.
Have tried previous patches, but not working unfortunately. Anyone been able to get it working?
I'm on an old Mac that didn't get MacOS 13, so no point me buying Parallels Desktop 18, as it's only partially supported on MacOS 12, but would be great if someone had a fix for 17.1.6 working with the latest RHEL release & derivatives
 
I played around running make with the Makefile.kmods file, and this diff got 17.1.6.51584 compiling, installing, and the OS booting for me.

Code:
diff -u -r parallels-tools-17.1.6.51584.orig/kmods/prl_eth/pvmnet/pvmnet.c parallels-tools-17.1.6.51584/kmods/prl_eth/pvmnet/pvmnet.c
--- parallels-tools-17.1.6.51584.orig/kmods/prl_eth/pvmnet/pvmnet.c    2022-12-01 09:23:05.000000000 +0000
+++ parallels-tools-17.1.6.51584/kmods/prl_eth/pvmnet/pvmnet.c    2022-12-28 22:03:33.620305885 +0000
@@ -418,6 +418,8 @@
 #if RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 5) && \
     RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(8, 0)
    .extended.ndo_change_mtu = eth_change_mtu,
+#elif RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(9, 0)
+        .ndo_change_mtu = dev_set_mtu,
 #else
    .ndo_change_mtu = eth_change_mtu,
 #endif
diff -u -r parallels-tools-17.1.6.51584.orig/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c parallels-tools-17.1.6.51584/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c
--- parallels-tools-17.1.6.51584.orig/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c    2022-12-01 09:23:09.000000000 +0000
+++ parallels-tools-17.1.6.51584/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c    2022-12-28 21:51:27.640987278 +0000
@@ -249,7 +249,7 @@
    size_t nbytes, loff_t *ppos)
 {
    int ret = 0;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)
    struct tg_dev *dev = pde_data(FILE_DENTRY(filp)->d_inode);
 #else
    struct tg_dev *dev = PDE_DATA(FILE_DENTRY(filp)->d_inode);

I'm not a C programmer, I can't guarantee all functionality will work, and I know for a fact that the patch for prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c will break some installs using kernel 5.14.0, as obviously RHEL 9.0 used 5.14.0-70, and the old PDE_DATA worked with that. I unfortunately can't quickly with a search online find a function to compare to that low a linux kernel version to make it work for both. Having said that it works with the kernel version I'm running with (5.14.0-162.6.1.el9_1.0.1.x86_64), so I'm sticking with it for now. If anyone else has a better fix, please do update it to sort this out for both versions. :)
 
Same problem here. Parallels Dsektop 18 bussiness + CentOS 9 stream(kernel 5.14) + MacOS Monterey 12.6.6 M1
 
Just tried to get version 17.1.7.51588 working on kernel 5.14.0-284.25.1.el9_2.x86_64 , (RHEL 9.2)
This patch got it working:

Code:
diff -u -r parallels-tools-17.1.7.51588.orig/kmods/prl_eth/pvmnet/pvmnet.c parallels-tools-17.1.7.51588/kmods/prl_eth/pvmnet/pvmnet.c
--- parallels-tools-17.1.7.51588.orig/kmods/prl_eth/pvmnet/pvmnet.c     2023-08-27 16:09:33.534056800 +0100
+++ parallels-tools-17.1.7.51588/kmods/prl_eth/pvmnet/pvmnet.c  2023-08-27 16:07:29.120106527 +0100
@@ -419,9 +419,11 @@
     RHEL_RELEASE_CODE < RHEL_RELEASE_VERSION(8, 0)
        .extended.ndo_change_mtu = eth_change_mtu,
 #else
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,14,0)
        .ndo_change_mtu = eth_change_mtu,
 #endif
 #endif
+#endif
 };
 #endif

diff -u -r parallels-tools-17.1.7.51588.orig/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c parallels-tools-17.1.7.51588/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c
--- parallels-tools-17.1.7.51588.orig/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c     2023-08-27 16:09:33.539056597 +0100
+++ parallels-tools-17.1.7.51588/kmods/prl_fs/SharedFolders/Guest/Linux/prl_fs/inode.c  2023-08-27 16:07:29.118106608 +0100
@@ -16,6 +16,9 @@
 #include <linux/pagemap.h>
 #include <linux/namei.h>
 #include <linux/cred.h>
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0))
+#include <linux/writeback.h>
+#endif

 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 40)) && \
     (LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0))
@@ -56,7 +59,9 @@
        return (unsigned long *)&(de->d_fsdata);
 }

-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0)
+#define prl_uaccess_kernel() (false)
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(5, 9, 0)
 #define prl_uaccess_kernel() uaccess_kernel()
 #else
 #define prl_uaccess_kernel() segment_eq(get_fs(), KERNEL_DS)
@@ -954,7 +959,11 @@
        .writepage              = prlfs_writepage,
        .write_begin    = simple_write_begin,
        .write_end      = prlfs_write_end,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)
+        .dirty_folio    = filemap_dirty_folio,
+#else
        .set_page_dirty = __set_page_dirty_nobuffers,
+#endif
 };


diff -u -r parallels-tools-17.1.7.51588.orig/kmods/prl_fs/Toolgate/Guest/Linux/prl_tg/prltg.c parallels-tools-17.1.7.51588/kmods/prl_fs/Toolgate/Guest/Linux/prl_tg/prltg.c
--- parallels-tools-17.1.7.51588.orig/kmods/prl_fs/Toolgate/Guest/Linux/prl_tg/prltg.c  2023-08-27 16:09:33.536056719 +0100
+++ parallels-tools-17.1.7.51588/kmods/prl_fs/Toolgate/Guest/Linux/prl_tg/prltg.c       2023-08-27 16:07:29.124106365 +0100
@@ -249,7 +249,7 @@
        size_t nbytes, loff_t *ppos)
 {
        int ret = 0;
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)
        struct tg_dev *dev = pde_data(FILE_DENTRY(filp)->d_inode);
 #else
        struct tg_dev *dev = PDE_DATA(FILE_DENTRY(filp)->d_inode);
diff -u -r parallels-tools-17.1.7.51588.orig/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c parallels-tools-17.1.7.51588/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c
--- parallels-tools-17.1.7.51588.orig/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c       2023-08-27 16:09:33.535056760 +0100
+++ parallels-tools-17.1.7.51588/kmods/prl_fs_freeze/Snapshot/Guest/Linux/prl_freeze/prl_fs_freeze.c    2023-08-27 16:07:29.122106446 +0100
@@ -328,7 +328,11 @@
        char buf[BDEVNAME_SIZE];

        fsb = list_entry((struct list_head*)data, struct frozen_sb, list);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,14,0)
+       snprintf(buf, sizeof(buf), "%pg", fsb->sb->s_bdev);
+#else
        bdevname(fsb->sb->s_bdev, buf);
+#endif
        seq_printf(file, "%s\n", buf);
        return 0;
 }

I got the fix for the removed bdevname from here: https://forum.parallels.com/threads...nel-6-0-2-parallel-tools-18-0-2-53077.358750/
Otherwise, the fixes were available in previously posted patches by other users.
Again, as I noted on the last patch I posted:
I'm not a C programmer, I can't guarantee all functionality will work, and I know for a fact that the patch for prl_tg/Toolgate/Guest/Linux/prl_tg/prltg.c will break some installs using kernel 5.14.0, as obviously RHEL 9.0 used 5.14.0-70, and the old PDE_DATA worked with that. I unfortunately can't quickly with a search online find a function to compare to that low a linux kernel version to make it work for both. Having said that it works with the kernel version I'm running with (5.14.0-284.25.1.el9_2.x86_64), so I'm sticking with it for now. If anyone else has a better fix, please do update it to sort this out for both versions. :)
 
This seems pretty improbable on its face, but here we are a whole release later (Parallels 19.0.0 on an M1 Mac, tools version 19.0.0.54570), and Red Hat (9.2) is still completely broken as a guest operating system. Is there something I'm missing?
 
Same problem with the newly released Mageia 9 (today's Mandriva Linux): Parallels Tools won't install, with the usual errors; let's hope that this will be fixed in the near future...
 
This is not the solution to the OP's specific problem, but do note that RHEL 9.2 and bug-for-bug compatible duplicates such as Rocky Linux 9.2 ship with an older kernel than is supported by the current kernel-devel* packages. Be sure to do a sudo dnf update before trying to install Parallels Tools, and make sure the kernel package is included in the updates.
 
Back
Top