Nvidia driver breaks vncserver on CentOS 7.4, is there a work around?

CentOS Linux release 7.4.1708 (Core) 
uname -r output: 3.10.0-693.2.2.el7.x86_64
NVidia driver: NVIDIA-Linux-x86_64-375.66.run

When using the Nvidia graphics card driver with the Nvidia GeForce GT 720 graphics card on CentOS 7.4 it works fine for the wired computer monitor on the console. However, when attempting to connect to the vncserver, you only get a blank black screen on connection. I have removed the Nvidia driver, and VNC works again. Apparently I just recently found out that the Nouveau driver works with VNC, but it doesn't with the wired computer monitor on the console.

Is there a work around for using the Nvidia driver and be able to get VNC to work? Possible configuration files changes or a simpler GUI to use with Gnome? Currently I'm using metacity in the ~user/.vnc/xstartup file. Or is there another good alternative to using the vncserver/tigervnc?

2
задан 15 October 2017 в 12:23
4 ответа

TurboVNC + VirtualGL - хорошая альтернатива.

Плюсы:

Минус в том, что его может быть сложно настроить. Я только что закончил настройку на своих CentOS 7 и NVidia K80. Я сомневаюсь, что моя конфигурация идеальна, но вот несколько моментов, которые я хотел бы выделить:

  1. Официальные руководства ( 1 , 2 , 3 , 4 ) на первый взгляд могут показаться слишком длинными и пугающими, но за ними довольно легко следить. Однако они упускают некоторые важные фрагменты информации ( 1 , 2 , 3 , 4 ).

  2. Я использовались драйверы kmod-nvidia от elrepo, занесены в черный список nouveau с двумя строками echo -e "blacklist nouveau \ noptions nouveau modeset = 0"> / etc / modprobe. d / disable-nouveau.conf , а не однострочным, как предлагается во многих других руководствах ( 1 , 2 ).

  3. Проверка следующих журналов - это хорошая отправная точка, когда что-то пойдет не так: / var / log / messages , /var/log/Xorg.0.журнал , ~ / .vnc / *. log . Большинство сообщений об ошибках, с которыми я столкнулся, уже обсуждались и их довольно легко погуглить.

  4. Обратите внимание на xdpyinfo -display: 0 проверку работоспособности. Если он не работает, попробуйте ответить n / n / n в vglserver_config и отключить selinux . Кроме того, лично мне пришлось заменить gdm на lightdm .

  5. Хотя в целом Gnome3 работает нормально, время от времени случаются некоторые странные ошибки (например, Firefox работает, но открыть загруженный архив с помощью встроенного менеджера архивов не удается с ошибкой типа this ). Итак, я установил KDE Plasma, так что -3dwm больше не нужен. (Но мне все еще нравится сервер TurboVNC, потому что он быстрый.)
1
ответ дан 3 December 2019 в 11:27

Насколько я понимаю, основная причина заключается в том, что NVIDIA устанавливает свои собственные библиотеки GL, которые нарушают работу других сред X.

$ ldd /usr/bin/Xvnc | egrep GL
libGL.so.1 => /lib64/libGL.so.1 (0x00007f7ed8f5b000)

Уловка состоит в том, чтобы отключить NVIDIA libGL.so, направив vncserver на / usr / lib64 ДО / usr / lib64 / nvidia:

$ diff -cbtw /usr/bin/vncserver*
*** /usr/bin/vncserver  2018-12-08 11:07:14.871180204 -0500
--- /usr/bin/vncserver.rhel71   2014-03-10 12:17:32.000000000 -0400
***************
*** 216,223 ****

  # Now start the X VNC Server

! $cmd = "export LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH ; ";
! $cmd .= $exedir."Xvnc :$displayNumber";
  $cmd .= " -desktop " . &quotedString($desktopName);
  $cmd .= " -httpd $vncJavaFiles" if ($vncJavaFiles);
  $cmd .= " -auth $xauthorityFile";
--- 216,222 ----

  # Now start the X VNC Server

! $cmd = $exedir."Xvnc :$displayNumber";
  $cmd .= " -desktop " . &quotedString($desktopName);
  $cmd .= " -httpd $vncJavaFiles" if ($vncJavaFiles);
  $cmd .= " -auth $xauthorityFile";
[merc_user@pair-1-host ~]$

У меня это работает с Red Hat 7.1 и CUDA 9-2.

1
ответ дан 3 December 2019 в 11:27

Чтобы продолжить работу над проблемой NVIDIA и «родной» графики с помощью NVIDIA libGL, я сделал следующие читы:

$ mv /usr/sbin/gdm /usr/sbin/gdm.bin
$ mv /usr/bin/Xorg /usr/bin/Xorg.bin
$ # make edits - show results 
$ cat /usr/sbin/gdm
#!/bin/sh
#
# workaround for libGL issue
#

LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

exec /usr/sbin/gdm.bin "$@"
$ cat /usr/bin/Xorg
#!/bin/sh
#
# workaround libGL issue
#

LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH

exec /usr/bin/Xorg.bin "$@"
0
ответ дан 3 December 2019 в 11:27

Вот мое решение на машине Fedora 29. Я считаю, что это проблема, не зависящая от распространения.
Переместите или скопируйте дистрибутивные версии libGL в / usr / local / vnclib:

$ ls -l /usr/local/vnclib
total 596
lrwxrwxrwx 1 root root     14 Feb 14 07:11 libGL.so -> libGL.so.1.7.0
lrwxrwxrwx 1 root root     14 Feb 14 07:11 libGL.so.1 -> libGL.so.1.7.0
-rwxr-xr-x 1 root root 610208 Feb 14 07:11 libGL.so.1.7.0
$

make a /usr/local/bin/vncserver:

$ cat /usr/local/bin/vncserver
#!/bin/bash
# added because nvidia driver overwrites these
export LD_LIBRARY_PATH=/usr/local/vnclib:$LD_LIBRARY_PATH
/usr/bin/vncserver $*
0
ответ дан 3 December 2019 в 11:27

Теги

Похожие вопросы