Проблема с видеодрайверами только при туннелировании X через ssh

Я неохотный системный администратор, который унаследовал ответственность за настройку сервера RHEL 6.7 (работающего внутри виртуальной машины VMware) для замены старого физического сервера.

На этом новом сервере некоторые приложения X11 работают некорректно, когда пользователь входит на этот сервер удаленно через ssh и туннелирование X-протокола. В частности, набор приложений FreeSurfer для нейронаук не работает удаленно через ssh. Однако, если пользователь запускает ту же программу с теми же опциями, что и в локальной сессии на сервере (доступ к которому осуществляется удаленно через NoMachine вместо ssh), она работает нормально.

Например, следующая команда отображает правое полушарие мозга на основе данных МРТ, содержащихся в папке mySubject, используя цвета областей мозга, указанные в файле aparc.annot:

tksurfer mySubject rh pial -annotation aparc.annot

В локальной сессии на сервере программа работает без ошибок. Если пользователь входит в систему удаленно через ssh -Y user@hostname (туннелируя X-дисплей на свой ПК с CentOS 6), он получает следующую ошибку:

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

Я немного покопался в сети и обнаружил, что эти сообщения об ошибках обычно связаны с приложением, которое требует установки драйверов Nvidia. Я не хотел устанавливать драйверы Nvidia, опасаясь, что они могут испортить X-сервер.

Кто-нибудь успешно запускает RHEL в среде VMware с установленными драйверами Nvidia? Если да, то какова была ваша процедура установки драйверов таким образом, чтобы сохранить совместимость со средой виртуальной машины?

Когда я запускаю lspci | grep VGA на этом сервере, я получаю следующий результат:

00:0f.0 VGA compatible controller: VMware SVGA II Adapter

0
25.03.2016, 17:03
1 ответ

Вы хотите рендерить приложение удаленно и просто передавать результат на ваш узел.
Одним из решений может быть использование virtualgl (возможно, с turbovnc для простоты): https://cdn.rawgit.com/VirtualGL/virtualgl/2.5/doc/index.html https://cdn.rawgit.com/TurboVNC/turbovnc/2.0.x/doc/index.html

В основном вы хотите установить virtualgl, установить turbovnc, и следовать процедуре в https://cdn.rawgit.com/TurboVNC/turbovnc/2.0.x/doc/index.html#hd009 :

Процедура

Follow the procedure described in Chapter 6 for starting a TurboVNC session and connecting to it.
Open a new terminal inside the TurboVNC desktop.
In the same terminal window, open a Secure Shell (SSH) session into the VirtualGL server:

/opt/VirtualGL/bin/vglconnect {user}@{server}

Replace {user} with your username on the VirtualGL server and {server} with the hostname or IP address of that server. Refer to the VirtualGL User’s Guide for additional vglconnect options.
In the SSH session, set the VGL_COMPRESS environment variable to rgb

Passing an argument of -c rgb to vglrun achieves the same effect.
In the SSH session, start a 3D application using VirtualGL:

/opt/VirtualGL/bin/vglrun [vglrun options] {application_executable_or_script} {arguments}

Совершенно другой подход - передать устройство nvidia pci через vm, используя GPU-PASSTHROUGH. Это требует поддержки как биоса, так и ОС хоста IIRC, но позволит вам использовать драйверы nvidia непосредственно в виртуальной машине.
Обратите внимание, что vmware поддерживает nvidia passthrough, похоже, только для продуктов grid, а не для потребительских продуктов geforce.
Несколько ссылок на подобные решения:

https://www.citrix.com/content/dam/citrix/en_us/documents/go/reviewers-guide-remote-3d-graphics-apps-part-2-vsphere-gpu-passthrough.pdf

https://www.pugetsystems.com/labs/articles/Multi-headed-VMWare-Gaming-Setup-564/

Есть и другие, я просто не уверен, что ваш случай использования подходит для такого подхода.

2
28.01.2020, 02:35

Теги

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