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?
TurboVNC + VirtualGL - хорошая альтернатива.
Плюсы:
-3dwm
. Минус в том, что его может быть сложно настроить. Я только что закончил настройку на своих CentOS 7 и NVidia K80. Я сомневаюсь, что моя конфигурация идеальна, но вот несколько моментов, которые я хотел бы выделить:
Официальные руководства ( 1 , 2 , 3 , 4 ) на первый взгляд могут показаться слишком длинными и пугающими, но за ними довольно легко следить. Однако они упускают некоторые важные фрагменты информации ( 1 , 2 , 3 , 4 ).
Я использовались драйверы kmod-nvidia от elrepo, занесены в черный список nouveau
с двумя строками echo -e "blacklist nouveau \ noptions nouveau modeset = 0"> / etc / modprobe. d / disable-nouveau.conf
, а не однострочным, как предлагается во многих других руководствах ( 1 , 2 ).
Проверка следующих журналов - это хорошая отправная точка, когда что-то пойдет не так: / var / log / messages
, /var/log/Xorg.0.журнал
, ~ / .vnc / *. log
. Большинство сообщений об ошибках, с которыми я столкнулся, уже обсуждались и их довольно легко погуглить.
Обратите внимание на xdpyinfo -display: 0
проверку работоспособности. Если он не работает, попробуйте ответить n
/ n
/ n
в vglserver_config
и отключить selinux . Кроме того, лично мне пришлось заменить gdm
на lightdm
.
-3dwm
больше не нужен. (Но мне все еще нравится сервер TurboVNC, потому что он быстрый.) Насколько я понимаю, основная причина заключается в том, что 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 " . "edString($desktopName);
$cmd .= " -httpd $vncJavaFiles" if ($vncJavaFiles);
$cmd .= " -auth $xauthorityFile";
--- 216,222 ----
# Now start the X VNC Server
! $cmd = $exedir."Xvnc :$displayNumber";
$cmd .= " -desktop " . "edString($desktopName);
$cmd .= " -httpd $vncJavaFiles" if ($vncJavaFiles);
$cmd .= " -auth $xauthorityFile";
[merc_user@pair-1-host ~]$
У меня это работает с Red Hat 7.1 и CUDA 9-2.
Чтобы продолжить работу над проблемой 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 "$@"
Вот мое решение на машине 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 $*