На этот раз достался очередной толстый клиент, но с видяхой VIA VX900, подключил в сеть и опять облом: картинка вся в мыле, не то разрешение и не работает OpenGL, при попытке узнать как он там:

glxinfo

Получаем кучу:

Xlib:  extension "GLX" missing on display ":0.0".

Чтож, добавим в эот зоопарк дрова на VIA VX900, а именно свободные openchrome

Понятно дело, в предыдущий раз были поставлены дрова на Нвидию т.к. остальные клиенты на ней, а теперь зоопарк.


Нус, добавим в этот зоопарк дрова на VIA VX900, а именно свободные openchrome.

Переходим в рут к ltsp, подключаем нужные разделы и ставим дрова:

sudo ltsp-chroot --mount-all
apt-get install xserver-xorg-video-openchrome

разумеется нужно в lts.conf указать конкретный драйвер:

[client mac]
   XSERVER=openchrome

Можно попробовать перегрузиться, но по glxinfo опять облом =(

Смотрим /var/log/xorg.0.log, а там

LoadModule: "glx"
...
Module glx: vendor="NVIDIA corporation"

Походу, что-то не оттуда грузиться, поэтому сделаем свой xorg.conf.openchrome, который укажем в настройках lts.conf и засунем в него портянку , где в секции FIles укажем дефолтные пути загрузки:

nano /etc/X11/xorg.conf.openchrome
Section «ServerLayout»
Identifier «Default Layout»
Screen «Default Screen»
InputDevice «Mouse»
InputDevice «Keyboard»
EndSection

Section «InputDevice»
Identifier «Keyboard»
Driver «kbd»
Option «XkbRules» «xorg»
Option «XkbModel» «pc105»
Option «XkbLayout» «cn»
EndSection

Section «InputDevice»
Identifier «Mouse»
Driver «mouse»
Option «CorePointer»
EndSection

Section «Files»
ModulePath «/usr/lib/xorg/modules»
EndSection

Section «Monitor»
Identifier «VGA-1»
Option «Enable» «true»
Option «DefaultModes» «true»
EndSection

Section «Monitor»
Identifier «LVDS-1»
Option «Ignore» «true»
Option «DefaultModes» «true»
EndSection

Section «Monitor»
Identifier «DVI-1»
Option «Ignore» «true»
Option «DefaultModes» «true»
EndSection

Section «Monitor»
Identifier «HDMI-1»
Option «Ignore» «true»
Option «DefaultModes» «true»
EndSection

Section «Monitor»
Identifier «DisplayPort-1»
Option «Ignore» «true»
Option «DefaultModes» «true»
EndSection

Section «Device»
Driver «openchrome»
VendorName «VIA Tech»
BoardName «via»
Identifier «Configured Video Device»
EndSection

Section «Screen»
DefaultDepth 24
SubSection «Display»
Depth 24
EndSubSection
Identifier «Default Screen»
Device «Configured Video Device»
EndSection

Section «Module»
Load «glx»
Load «dri»
Load «extmod»
EndSection

Section «DRI»
Group 0
Mode 0666
EndSection

Section «Extensions»
Option «Composite» «Enable»
EndSection

Вам скорее всего придётся изменить под себя, т.к. у меня только VGA выход.

и пропишем в lts.conf его явно:

[client mac] 
X_CONF=/etc/X11/xorg.conf.openchrome

Можно пробовать перезагрузиться, разрешение должно прийти в норму, а вот с glxinfo опять облом, опять же смотрим xorg.0.log

AIGLX error: dlopen of /usr/lib/xorg/modules/drivers/i965_dri.so failed (/usr/lib/xorg/modules/drivers/i965_dri.so: undefined symbol: _glapi_set_dispatch)

Вот падла, что-то опять не оттуда загрузил, проверяем откуда libglx.so берёт зависимости:

ldd /usr/lib/xorg/modules/extensions/libglx.so

а там

libGL.so.1 => /usr/lib/nvidia-340/libGL.so.1

Бля, тащит libGL от Нвидии. Ладно, значит Нвидиа подсунула в ld свои настройки, идём в /etc/ld.so.conf.d смотрим в *.conf файлах отголоски Нвидии и заменяем на папку, откуда по идее должен быть libGL.so.1 (можно узнать, заюзав find / -name «libGL.so.1»)

/usr/lib/i386-linux-gnu/mesa

Ну и не забываем обновить кэш ld:

ldconfig

Обновляем образ, перегружаем клиента, радуемся,

ha_ha


Таким макаром мы сломали загрузу дров Нвидии.

Создадим и для неё отдельный xorg.conf.nvidia

xorg.conf.nvidia
Section "Files"
        ModulePath   "/usr/lib/nvidia-340/xorg"
        ModulePath   "/usr/lib/xorg/modules"
EndSection


Section "Device"
        Driver "nvidia"
        VendorName "NVIDIA coproration"
        BoardName "nvidia"
        Identifier      "Configured Video Device"
EndSection

не забудем прописать в lts.conf для клиентов с Нвидиа карточками

[client mac] 
X_CONF=/etc/X11/xorg.conf.nvidia

Но это ещё не всё…

Дело в том, что Nvidia подменяет системный libGL своим…, а мы заменив пути в /etc/ld.so.conf.d  тем самым указали где лежат зависимости на библиотеки от NVidia.

и через xorg.conf это никак не настроить =((    Тоесть придётся перед загрузкой клиента заранее прописывать какой там путь должен быть.

Как это сделать более элегантно я не придумал, кроме как запускать скрипты из rc.local

Вот как-то так =)