Parallels Tools do not install on RHEL9

Discussion in 'Linux Guest OS Discussion' started by DariusS1, May 27, 2022.

  1. DariusS1

    DariusS1 Bit Poster

    Messages:
    5
    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!
     
  2. (GalaxyMaster)

    (GalaxyMaster) Kilo Poster

    Messages:
    106
  3. DariusS1

    DariusS1 Bit Poster

    Messages:
    5
    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.
     
  4. (GalaxyMaster)

    (GalaxyMaster) Kilo Poster

    Messages:
    106
    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
    
     
  5. DariusS1

    DariusS1 Bit Poster

    Messages:
    5
    Thanks for this. However, this does not work for RHEL9.
    I have found inspiration in this thread: https://lkml.kernel.org/lkml/20160928211738.33190-3-jarod@redhat.com/ . 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).
     

    Attached Files:

    ChrisJ16 likes this.
  6. Asish@Parallels

    Asish@Parallels Staff Member

    Messages:
    140
    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.
     
  7. (GalaxyMaster)

    (GalaxyMaster) Kilo Poster

    Messages:
    106
    Why would you say something like that @ashish@Parallels if you are responding to a message that is clearly a patch to 17.1.4.51567?
     
    ChrisJ16 and Mark Fine like this.
  8. Mark Fine

    Mark Fine Kilo Poster

    Messages:
    434
    Maybe he's 'instigating' again.
     
  9. PlayF

    PlayF Bit Poster

    Messages:
    5
    i have a same problem like DariusS1 in Kali Linux, can you help to resolve it?
     
  10. PlayF

    PlayF Bit Poster

    Messages:
    5
    my version of parallels is 17.1.4
     
  11. Asish@Parallels

    Asish@Parallels Staff Member

    Messages:
    140
    Hello @PlayF , Kindly let us know the below details;
    1. What is the version of the host Mac os?
    2. What is the processor of your host Mac? (Intel/ M1)
     
  12. PlayF

    PlayF Bit Poster

    Messages:
    5
    Hello!
    1. Mac OS big sur 11.6
    2. M1
    Can you help me?
     
  13. PlayF

    PlayF Bit Poster

    Messages:
    5
    Hello!
    1. Mac OS big sur 11.6
    2. M1
    Can you help me?
     
  14. Nickolay1

    Nickolay1

    Messages:
    2
    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?
     
  15. Nickolay1

    Nickolay1

    Messages:
    2
    ...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.
     
  16. AndreasC6

    AndreasC6

    Messages:
    1
    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
     
  17. billxiong

    billxiong Bit Poster

    Messages:
    4
    Same problem here, that module "prl_tg" can not be found. intel MacBook Pro.
     
  18. Mark Fine

    Mark Fine Kilo Poster

    Messages:
    434
    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.
     

Share This Page