Starting from version 4.3, NoMachine supports Unity 3D and GNOME 3 virtual desktops:
However when proprietary drivers for AMD and NVIDIA video cards are installed on the server host, users get a black screen when running virtual desktops. This doesn't occur when using Open Source drivers like Radeon or nouveau.
The issue with proprietary drivers (e.g. fglrx or nvidia) is due to the fact that the llvmpipe software rasterizer (http://www.mesa3d.org/llvmpipe.html) cannot be found on the system unless LD_LIBRARY_PATH is set to point to the location of the proper libGL.so library.
This happens when the Mesa library is not installed in the default path for system libraries, e.g. /usr/lib.
For example, on Ubuntu 14.04 64 bit, LD_LIBRARY_PATH has to point at: /usr/lib/x86_64-linux-gnu/mesa.
How to get rid of the black screen issue with NoMachine
In order to set LD_LIBRARY_PATH for NoMachine sessions, specify path to the Mesa 3D graphics library in the node configuration, the /usr/NX/etc/node.cfg file.
This must be done on the machine where the NoMachine server is installed and on each of the remote nodes if a multi-node environment is set-up.
To do that:
1) Edit the /usr/NX/etc/node.cfg file.
2) Uncomment the DesktopCommandLibraryPath key.
3) Set the proper path to Mesa library in the DesktopCommandLibraryPath key.
For example on Ubuntu 14.04 64 bit:
DesktopCommandLibraryPath = "/usr/lib/x86_64-linux-gnu/mesa"
and on Ubuntu 14.04 32 bit:
DesktopCommandLibraryPath = "/usr/lib/i386-linux-gnu/mesa/"
Paths above are the same for Ubuntu versions from 12.10 to 14.04.
Path to be set in the DesktopCommandLibraryPath key must point to the directory containing the libGL.so* libraries.
It should not be necessary to set it if the libraries are in the default path for libraries (e.g. /usr/lib).
To check where the Mesa library is placed on the system, you can use the 'dpkg -L' command for DEB-based package managers, for example:
$ sudo dpkg -L libgl1-mesa-glx | grep libGL.so.1
or 'rpm -ql' for RPM-based package managers, for example:
# rpm -ql mesa-libGL | grep libGL.so.1
Modify commands above to fit the name of the Mesa library package installed on the system.