Назад | Перейти на главную страницу

Ошибка Xrandr при доступе к виртуальной машине Debian через VNC

У меня Debian 8 с XFCE, работающий на виртуализации vmware.

Если я работаю на консоли vSphere, никаких проблем.

Если я подключаюсь через VNC (thighVNC) с использованием «my-hostname: 1», у меня возникают некоторые проблемы (я предполагаю, что две проблемы связаны между собой):

1) Если я хочу перейти в «Меню приложений -> Настройки -> Дисплей», я получаю сообщение: «Невозможно запустить настройки дисплея Xfce. Эта система использует RandR 1.1. Для работы настроек дисплея используется версия 1.2. требуется как минимум ». У меня нет этой проблемы на vSphere Console.

2) Я установил RStudio. Если я захочу его запустить, на консоли появится следующий вывод:

QXcbConnection: Failed to initialize XRandr
Qt:XKEYBOARD extension not presten on the X server
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
Unsupported screen format: depth 16, red_mask: 3f, blue_mask:f800
...
then a lot of QWidget and QPainter errors
...
and finally a segmentation fault

Что случилось?


Ответы на вопросы ниже:

sduo find /usr -iname "*libGL.so*" -exec ls -l {} \;

дает:

lrwxrwxrwx 1 root root 14 Aug 19  2015 /usr/lib/x86_64-linux- gnu/libGL.so.1 -> libGL.so.1.2.0
-rw-r--r-- 1 root root 627320 Aug 19  2015 /usr/lib/x86_64-linux-gnu/libGL.so.1.2.0

И

glxgears

дает:

libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so
libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so
libGL: Can't open configuration file /home/bioinf/.drirc: No such file or directory.
libGL: Can't open configuration file /home/bioinf/.drirc: No such file or directory.
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
30063 frames in 5.0 seconds = 6012.055 FPS

Самое главное - программный рендерер. Это означает, что он не может найти драйвер оборудования для вашей видеокарты. Установлено множество библиотек libGL и множество символических ссылок на эти библиотеки.

Чтобы увидеть это, запустите это из строки cmd.

sudo find /usr -iname "*libGL.so*" -exec ls -l {} \; 

Вероятная причина вашей проблемы в том, что установка графических драйверов иногда нарушает эти символические ссылки. (В частности, /usr/local/lib/libGL.so.1.2.0, вероятно, будет либо неправильной библиотекой, либо символической ссылкой на неправильную ссылку).

Чтобы выяснить, какую библиотеку пытаются запустить программы opengl, вы можете включить немного подробностей и запустить простую программу opengl. В этом можно убедиться с помощью стандартной тестовой программы opengl:

export LIBGL_DEBUG=verbose
glxgears

Убедитесь, что /usr/local/lib/libGL.so.1.2.0 - это символическая ссылка, указывающая на правую библиотеку opengl.


Итак, решение (в данном случае) - убедиться, что /usr/local/lib/libGL.so.1.2.0 является символической ссылкой, указывающей на правую библиотеку opengl. Например, допустим, у меня есть драйвер nvidia 3.40:

ln -s /usr/lib/nvidia-340/libGL.so.1 /usr/local/lib/libGL.so.1.2.0

Но вы захотите указать его на подходящую для вас библиотеку opengl (указанную в первой команде find).

Установка (проприетарных) графических драйверов может нарушить символические ссылки, используемые для библиотек opengl. Чтобы решить эту проблему, вручную исправьте символические ссылки (сначала исправьте /usr/local/lib/libGL.so.1.2.0).