[SOLVED] Parallels Tools Fail to Install in Oracle Linux VM

StefanH28

Bit poster
Hello, I'm on a Mac Mini M2 Pro, trying out Parallels. I have an Ubuntu 22.04.2 ARM64 VM which works fine; installing Parallels Tools was just a click.
On the other VM, Oracle Linux 8, I can't get it to work. The installation log (see attached screenshot; sorry for not pasting the text, because I can't copy it from the VM due to the lack of Parallels Tools :() seems to indicate that the Parallels Tools installer uses the Red Hat compiler, while the kernel was compiled with GCC. The Red Hat compiler (CC) seems to choke on a couple of command-line options.
What to do to overcome that issue?
 

Attachments

  • Screenshot 2024-01-09 at 18.56.38.png
    Screenshot 2024-01-09 at 18.56.38.png
    720.5 KB · Views: 24
Here's what I did after much frustration:

Install gcc-12 and some of its parts:
yum install gcc-aarch64-linux-gnu.aarch64 gcc-c++-aarch64-linux-gnu.aarch64 gcc-toolset-12.aarch64 gcc-toolset-12-runtime.aarch64 gcc-toolset-12-gcc-c++.aarch64

Then went into /usr/bin and temporarily renamed the gcc binary to gcc-8. The gcc-12 install didn't replace the gcc binaries in /usr/bin. Symlinked the new gcc to /usr bin/gcc:

mv gcc gcc-8
ln -s /opt/rh/gcc-toolset-12/root/usr/bin/gcc gcc

ran the tools installer and it completed. Then nuked the symlink and put the old gcc binary back.

It appears to be working. This is on OEL8.9

Hope this helps?
 
Here's what I did after much frustration:

Install gcc-12 and some of its parts:
yum install gcc-aarch64-linux-gnu.aarch64 gcc-c++-aarch64-linux-gnu.aarch64 gcc-toolset-12.aarch64 gcc-toolset-12-runtime.aarch64 gcc-toolset-12-gcc-c++.aarch64

Then went into /usr/bin and temporarily renamed the gcc binary to gcc-8. The gcc-12 install didn't replace the gcc binaries in /usr/bin. Symlinked the new gcc to /usr bin/gcc:

mv gcc gcc-8
ln -s /opt/rh/gcc-toolset-12/root/usr/bin/gcc gcc

ran the tools installer and it completed. Then nuked the symlink and put the old gcc binary back.

It appears to be working. This is on OEL8.9

Hope this helps?
Thanks much, Mitch2! Amazingly, this actually worked, and has saved me a lot of the frustration you had!
 
I got this working on Oracle Linux 9 & Parallels 20.2.0.55872

The issue for us is as follows:

Confirmed fix for EL 8. Regarding EL 9:

My team need to use the DLM kernel module.

On Oracle 9 aarch64 the DLM kernel module is only distributed with the Oracle UEK kernel (5.15.0) and not the RHCK (5.14.0). Of course, this is different on x86_64 where the DLM module is distributed with both, and the problem does not exist!

Regrettably, parallels tools will only build on the red hat compatible kernel, not the UEK. Why? Well, in the UEK kernel there is a change to include/linux/arm-smccc.h which breaks the build:

`ERROR: modpost: GPL-incompatible module prl_notifier.ko uses GPL-only symbol 'arm_smccc_smc'`

The easiest thing to do is just down grade to the RHCK, but then we do not get the DLM module. Of course we could build our own kernel, maintain it moving forwards and keep ourselves busy for an infinite period of time. So that's never a good idea.
The solution was actually trivial:

`[/root]# cp /usr/src/kernels/5.14.0-503.el9.aarch64/include/linux/arm-smccc.h /usr/src/kernels/5.15.0-304.171.4.el9uek.aarch64/include/linux/arm-smccc.h`

This will probably need to be repeated whenever you see a kernel update coming in from the repositories.

It would be terribly nice if Parallels could look in to this and fix it before it drives everyone up the wall.
 
Oh, BTW there is a typo in the dkms.conf file (missing a quote on the first line):

/usr/lib/parallels-tools/kmods/dkms.conf: line 34: unexpected EOF while looking for matching `"'
/usr/lib/parallels-tools/kmods/dkms.conf: line 35: syntax error: unexpected end of file
dkms.conf: Error! No 'PACKAGE_NAME' directive specified.
dkms.conf: Error! No 'PACKAGE_VERSION' directive specified.
dkms.conf: Warning! Zero modules specified.

Error! Bad conf file.
File: /usr/lib/parallels-tools/kmods/dkms.conf does not represent a valid dkms.conf file.
 
I think I do have a solution for Oracle Linux 8, 9 and 10. Here is what you need to do:

1. Backup your existing VM in case something goes wrong a do not blame me afterwards if you did not do so :-)
2. Update Oracle Linux to the latest version. As user root this can be done with
yum update -y

Solution for Oracle Linux 8
================
Make Oracle Linux use the latest version of gcc and as. As root user do the following:
cd /usr/bin
Backup the old versions of gcc and as:
mv gcc gcc-old
mv as as-old
Now create symbolic links to the new versions:
ln -s /opt/rh/gcc-toolset-12/root/bin/gcc gcc
ln -s /opt/rh/gcc-toolset-12/root/bin/as as
check if gcc --version returns a version number 12 or higher
check if as --version returns a version number 2.38 or higher
Now run the installer as usual from the Parallels Host Menu. Installation should be fine.
Finally you may remove the symbolic links created before and rename gcc-old and as-old back to gcc and as

Solution for Oracle Linux 9
================
Verify the versions of gcc and as with:
gcc --version
as -- version
gcc should be 11.5 or higher
as should be 2.35 or higher
Proceed with normal installation from Parallels Host Menu. Everything should be fine

Solution for Oracle Linux 10
=================
This is definitely the toughest one!
Choose the Host Menu Option Parallels Tools installation as if you wanted to install the tools like usual, but do not start the installation in Oracle Linux 10
As user root copy the parallels tools too a directory /temp
Should be something like
cd /
mkdir temp
cd /run/media/<your username>/Parallels Tools
cp -pr * /temp
change the ownership of all files in the /temp directory to root with something like
chown -R root *
Change the permissions on all files too 777 (not the proper way of doing this in linux, but to shortcut things it is the fastest way)
chmod -R 777 *
Now find the file pre_mod.tar.gz it should be here: /temp/kmods/prl_mod.tar.gz
uncompressed this file as user root
tar -xzvf prl_mod.tar.gz
now find the Makifile for the client tools. It should be here: /temp/kmods/prl_tg/Toolgate/Guest/Linux/prl_tg/Makefile
Use a text editor to add the following line in the Makefile and add the following line:
EXTRA_CFLAGS += -Wno-error=attribute-warning
Save the Makefile and run the installer as root from the temp directory:
cd /temp
./install
Sit back and be patient, but installation should go fine, at least it did it for me
Parallels should eventually update their Guest Tools for new kernels, but until then these hacks are needed...
Hope that helps
 
Back
Top