Black screen on connection to headless CentOS 7 NoMachine

Forum / NoMachine for Linux / Black screen on connection to headless CentOS 7 NoMachine

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
  • #21450

    I’m trying to connect to the physical desktop on a headless CentOS 7 machine, running NoMachine server 6.4.6.  Client is on Ubuntu linux, running NoMachine 6.4.6 as well.  We had a problem with X not running on the server (its headless), so the user was having NoMachine create its own virtual display server, as some posts here have recommended. That worked, but interacting with that desktop was incredibly slow, unusably so. In our other experience with NoMachine, using the physical desktop works extremely well – is fast and responsive.

    The x server issue was due to a version difference between glx and xorg.server, which we found tips to elsewhere online. Once we sorted that out, NoMachine client was again connecting to the physical desktop, as we wanted. But when the screen comes up, the display is entirely black. Going to display settings in NoMachine client shows no resolution options! Selecting a custom resolution, or “match client resolution upon connecting” did not help.

    We use the vendor NVIDIA driver, version 410.93, for a Quadro P4000 card.  I did see this post: about using proprietary drivers, but the mesa drivers are already in /usr/lib64, eg I added the path anyways to node.cfg, but no help.

    I dont see any obvious error messages in the system or NoMachine logs. (there are various warnings but I think these are about audio issues, which is fine, we don’t need audio!).

    I have thought maybe the issue is with xorg.conf, but haven’t been able to change anything there to fix the issue. Currently the core parts are pasted at the end, in case anything obvious is wrong there.

    Any ideas?



    Section “Monitor”
    Identifier     “Monitor0”
    VendorName     “Unknown”
    ModelName      “Unknown”
    #HorizSync       28.0 – 33.0
    #VertRefresh     43.0 – 72.0
    #Option         “DPMS”

    Section “Device”
    Identifier     “Device0”
    Driver         “nvidia”
    VendorName     “NVIDIA Corporation”
    BoardName      “Quadro P4000”
    BusID          “PCI:59:0:0”
    Option         “AllowEmptyInitialConfiguration”

    Section “Screen”
    Identifier     “Screen0”
    Device         “Device0”
    Monitor        “Monitor0”
    DefaultDepth    24
    Option         “AllowEmptyInitialConfiguration” “True”
    SubSection     “Display”
    Depth       24
    Modes      “1920×1200”
    Virtual    1920 1200



    the fact the X server starts up doesn’t mean necessarily that rendering actually happens when no montitor is connected to the GPU. You could try one of those dongles that simulate a monitor. Try to search for “headless hdmi dongle”.

    Or you could give one more try with the NoMachine’s virtual display server. In this regard, the following article should be more appropriate to address your issue:


    Thanks very much for the info and the link. I followed the instructions in the article, and got the first method working (“turn LLVMpipe ON”), and the desktop is responsive. To get this to work, I did have to ensure the display manager (gdm) was shut down, otherwise NoMachine would provide only the option to connect to physical desktop, which was again just blank.

    I did try the second method also, but no luck, still just blank screen on connecting to the physical desktop. One step of the process did suggest a possible problem (see IMPORTANT NOTE at the end):

    /etc/NX/nxserver –virtualgl-install
    NX> 900 … Modifying /etc/security/console.perms to disable automatic permissions
    NX> 900     for DRI devices …
    NX> 900 … Creating /etc/modprobe.d/virtualgl.conf to set requested permissions for
    NX> 900     /dev/nvidia* …
    NX> 900 … Attempting to remove nvidia module from memory so device permissions
    NX> 900     will be reloaded …
    NX> 900 … Granting write permission to /dev/nvidia-modeset /dev/nvidia0 /dev/nvidiactl for all users …
    NX> 900 … Granting write permission to /dev/dri/card0 for all users …
    NX> 900 … Modifying /etc/X11/xorg.conf.d/99-virtualgl-dri to enable DRI permissions
    NX> 900     for all users …
    NX> 900 … /etc/X11/xorg.conf has been saved as /etc/X11/xorg.conf.orig.vgl …
    NX> 900 … Modifying /etc/X11/xorg.conf to enable DRI permissions
    NX> 900     for all users …
    NX> 900 … /etc/gdm/Init/Default has been saved as /etc/gdm/Init/Default.orig.vgl …
    NX> 900 … Adding xhost +LOCAL: to /etc/gdm/Init/Default script …
    NX> 900 … Enabling XTEST extension in /etc/gdm/custom.conf …
    NX> 900 … Setting default run level to 5 (enabling graphical login prompt) …
    NX> 900 … Commenting out DisallowTCP line (if it exists) in /etc/gdm/custom.conf …
    NX> 900 Done. You must restart the display manager for the changes to take effect.
    NX> 900 IMPORTANT NOTE: Your system uses modprobe.d to set device permissions. You
    NX> 900 must execute rmmod nvidia with the display manager stopped in order for the
    NX> 900 new device permission settings to become effective.

    I attempted to execute the “rmmod nvidia”, but this fails:

    # rmmod nvidia
    rmmod: ERROR: Module nvidia is in use by: nvidia_modeset

    This is after shutting down gdm. I get the same error if do rmmod -f. So perhaps this is preventing this method from working properly…

    First method might be ok for now, as long as applications such as MATLAB can still access the GPU (for computation, not rendering)…I’ll have the user check.

    Otherwise, sounds like getting a dongle is maybe the easiest solution?


    Yes, getting the dongle should be the easiest solution to have GPU acceleration, but probably you are good to go with the llvmpipe solution, so I’d suggest to wait for your user 😉


    # rmmod nvidia
    rmmod: ERROR: Module nvidia is in use by: nvidia_modeset

    nvidia module depends on other modules they you need to remove before (order matters): rmmod nvidia_drm nvidia_uvm nvidia_modeset nvidia

    If it doesn’t help, use nvidia-smi to check processes using the GPU.

Viewing 5 posts - 1 through 5 (of 5 total)

This topic was marked as solved, you can't post.