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

glxinfo

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

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

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

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

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

sudo su
export LTSP_HANDLE_DAEMONS=false
chroot /opt/ltsp/i386
mount -t proc proc /proc
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
xorg.conf.openchrome
Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
#       Option          "RandR"  "false"
        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"
	#RgbPath      "/usr/local/share/X11/rgb"
	ModulePath   "/usr/lib/xorg/modules"
	#FontPath     "/usr/share/fonts/X11/misc/"
	#FontPath     "/usr/share/fonts/X11/TTF/"
	#FontPath     "/usr/share/fonts/X11/OTF"
	#FontPath     "/usr/share/fonts/X11/Type1/"
	#FontPath     "/usr/share/fonts/X11/100dpi/"
	#FontPath     "/usr/share/fonts/X11/75dpi/"
EndSection


Section "Monitor"
	Identifier	"VGA-1"
     	#Option		"Ignore"	    "true"
        #Option         "NoDDCValue"        "false"
     	#Option		"Disable"	    "true"
     	Option		"Enable"	    "true"
        #Option		"Rotate"            "right"
     	#Modeline 	"1024x768_60.00"    63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
     	#Option		"PreferredMode"	    "1024x768"
	Option		"DefaultModes"	    "true"
EndSection

Section "Monitor"
	Identifier	"LVDS-1"
	Option	 	"Ignore"		"true"
	#Option   	"Enable"		"true"
	#Modeline 	"800x480_60.00"   	29.50  800 824 896 992  480 483 493 500 -hsync +vsync
        #Modeline 	"1024x768_60.00"   	63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
	#Modeline 	"1600x1200_60.00"  	130.25  1600 1648 1680 1760  1200 1203 1207 1235 -hsync +vsync
	#Option   	"PanelSize"		"1360x768"
	#Option	  	"PreferredMode" 	"800x600"
	#Option	  	"MSB"           	"false"
	#Option         "NoDithering"           "true"
	#Option         "DualChannel"           "false"
	#Option         "Center"                "true"
        #Option         "FixOnIGA1"             "true"
	#Option         "ClockPolarity"         "1"
	#Option         "ClockAdjust"
	#Option         "ClockDrivingSelection"
	#Option         "DataDrivingSelection"
	#Option         "Vt1636ClockSelST1"
	#Option		"Vt1636ClockSelST2"
	Option		"DefaultModes"	    "true"
EndSection	

Section "Monitor"
	Identifier	"DVI-1"
	Option		"Ignore"	"true"
        #Option         "Enable"        "true"
        #Option         "NoDDCValue"    "true"
        #Option         "PreferredMode" "1024x768"
        #Option         "ClockPolarity"         "1"
        #Option         "ClockAdjust"
        #Option         "ClockDrivingSelection"
        #Option         "DataDrivingSelection"
	Option		"DefaultModes"	    "true"
EndSection	

Section "Monitor"
	Identifier	"TV-1"
	Option 		"Ignore"   	"true"
	Option		"DefaultModes"	    "true"
EndSection	

Section "Monitor"
        Identifier      "HDMI-1"
        Option          "Ignore"        "true"
        #Option         "Enable"        "true"
	#Option         "AttachAllModes" "true"
	#Option         "DisableAudio"  "True"
        #Option          "PreferredMode" "1280x720P"
        #Option         "ClockPolarity"         "1"
        #Option         "ClockAdjust"
        #Option         "ClockDrivingSelection"
        #Option         "DataDrivingSelection"
	Option		"DefaultModes"	    "true"
EndSection

Section "Monitor"
        Identifier      "DisplayPort-1"
        Option          "Ignore"        "true"
        #Option         "Enable"        "true"
        #Option         "NoDDCValue"    "true"
        #Option         "Swlinktraining"    "true"
        #Option         "PreferredMode" "1024x768"
	Option		"DefaultModes"	    "true"
EndSection

Section "Monitor"
        Identifier      "VGA-2"
        Option         "Ignore"            "true"
        #Option         "NoDDCValue"        "false"
        #Option         "Disable"           "true"
        #Option         "Enable"            "true"
        #Option         "Rotate"            "right"
        #Modeline       "1024x768_60.00"    63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
        #Option          "PreferredMode"     "1024x768"
	Option		"DefaultModes"	    "true"
EndSection

Section "Monitor"
        Identifier      "LVDS-2"
        Option          "Ignore"                "true"
        #Option         "Enable"                "true"
        #Modeline       "800x480_60.00"         29.50  800 824 896 992  480 483 493 500 -hsync +vsync
        #Modeline       "1024x768_60.00"        63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
        #Modeline       "1600x1200_60.00"       130.25  1600 1648 1680 1760  1200 1203 1207 1235 -hsync +vsync
        #Option         "PanelSize"             "1024x768"
        #Option         "PreferredMode"         "1024x768"
        #Option         "MSB"                   "false"
        #Option         "NoDithering"           "true"
        #Option         "DualChannel"           "false"
        #Option         "Center"                "true"
        #Option         "FixOnIGA1"             "true"
	#Option         "Vt1636ClockSelST1"
        #Option         "Vt1636ClockSelST2"
	Option		"DefaultModes"	    	"true"
EndSection

Section "Monitor"
        Identifier      "DVI-2"
        Option          "Ignore"        "true"
        #Option         "Enable"        "true"
        #Option         "NoDDCValue"    "true"
        #Option         "PreferredMode" "1024x768"
        #Option         "ClockPolarity"         "1"
        #Option         "ClockAdjust"
        #Option         "ClockDrivingSelection"
        #Option         "DataDrivingSelection"
	Option		"DefaultModes"	    "true"
EndSection

Section "Monitor"
        Identifier      "TV-2"
        Option          "Ignore"        "true"
	Option		"DefaultModes"	"true"
EndSection

Section "Monitor"
        Identifier      "HDMI-2"
        Option          "Ignore"        "true"
        #Option         "Enable"        "true"
        #Option         "AttachAllModes" "false"
        #Option         "DisableAudio"  "True"
        #Option         "PreferredMode" "1280x720P"
        #Option         "ClockPolarity"         "1"
        #Option         "ClockAdjust"
        #Option         "ClockDrivingSelection"
        #Option         "DataDrivingSelection"
	Option		"DefaultModes"	    "true"
EndSection

Section "Monitor"
        Identifier      "DisplayPort-2"
        Option          "Ignore"        "true"
        #Option         "Enable"        "true"
        #Option         "NoDDCValue"    "true"
        #Option         "Swlinktraining"    "true"
        #Option         "PreferredMode" "1024x768"
	Option		"DefaultModes"	    "true"
EndSection

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

Section "Screen"
	DefaultDepth 24
	SubSection "Display"
	#	Virtual 4000 4000
		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

и пропишем в 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   тем самым указали использовать системный.

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

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

 

 

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