Поскольку это не помечено определенной версией Ubuntu, и существующие ответы не полностью работали с моей системой (Ubuntu 15.10), я отправляю этот ответ, который использует logind.
В принципе, чтобы заставить GLX и libGL работать, вы должны настроить как X-сервер, так и пользовательский сеанс для использования правильной реализации libGL в зависимости от места.
Поэтому вам нужен сценарий оболочки для LightDM для start X и скрипт Xsession для установки LD_LIBRARY_PATH, чтобы сеанс использовал правильный libGL.
В /etc/X11/Xsession.d/00ldlibrary:
#!/bin/bash
if ps aux | grep "/usr/local/bin/X $DISPLAY" | grep -q seat1; then
export LD_LIBRARY_PATH=/usr/lib/nvidia-352:/usr/lib32/nvidia-352
fi
if ps aux | grep "/usr/local/bin/X $DISPLAY" | grep -q seat0; then
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa:/usr/lib/i386-linux-gnu/mesa/
fi
(предполагается, что seat1 использует nvidia и seat0 mesa)
Аналогично, вам нужно обернуть X-сервер (/usr/local/bin/X):
#!/bin/bash
if grep -q seat1 <<<$*; then
export LD_LIBRARY_PATH=/usr/lib/nvidia-352
echo "Detected seat1, using nvidia-352 libs"
fi
if grep -q seat0 <<<$*; then
export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/mesa
echo "Detected seat0, using mesa libs"
fi
exec /usr/bin/Xorg "$@"
[ ! d9] Наконец, вам нужно настроить LightDM, чтобы использовать их в /etc/lightdm/lightdm.conf:
[Seat:*]
# needed to use the correct libraries for mesa/nvidia,
# along with a Xsession.d script (00ldlibrary)
xserver-command=/usr/local/bin/X
session-setup-script=/etc/X11/Xsession.d/00ldlibrary
Подробнее см. в разделе myiseise-mesa- nvidia repo, который имеет более подробную информацию и содержит полные файлы конфигурации и скрипты.