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
При использовании драйвера видеокарты Nvidia с видеокартой Nvidia GeForce GT 720 в CentOS 7.4 он отлично работает с проводным монитором компьютера на консоли. Однако при попытке подключиться к vncserver вы получаете только пустой черный экран при подключении. Я удалил драйвер Nvidia, и VNC снова работает. По-видимому, я недавно узнал, что драйвер Nouveau работает с VNC, но не с проводным монитором компьютера на консоли.
Есть ли способ использовать драйвер Nvidia и заставить работать VNC? Возможные изменения файлов конфигурации или более простой графический интерфейс для использования с Gnome? В настоящее время я использую metacity в файле ~ user / .vnc / xstartup. Или есть еще одна хорошая альтернатива использованию vncserver / tigervnc?
Насколько я понимаю, основная причина в том, что 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.
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.log
, ~/.vnc/*.log
. Большинство сообщений об ошибках, с которыми я столкнулся, уже обсуждены и их довольно легко погуглить.
Обратите внимание на xdpyinfo -display :0
там проверка на вменяемость. Если не работает, попробуйте ответить n
/n
/n
в vglserver_config
и отключение selinux. Также лично я оказался замена gdm
с участием lightdm
.
-3dwm
больше не нужен. (Но мне все еще нравится сервер TurboVNC, потому что он быстрый).Чтобы продолжить работу над проблемой NVIDIA vs native graphics с проблемой 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 $*