LINUX.ORG.RU

Сообщения simburde

multiseat + udev = profit

Форум - Desktop

Поскольку из блогов у меня есть учётка только в ЖЖ, где удобно только ругать Путина, решил поделиться опытом тут. Если уже было, извиняйте.

Пользуюсь мультиситом с 2008 года, но до сих пор не доходили руки разобраться с горячим подключением устройств ввода. Классический сетап подразумевает жесткое прописывание клавиатур и мышек в xorg.conf, и если во время работы иксов происходит отключение устройства, вернуть его можно только с помощью перезапуска сервера.

Относительно недавно всеми горячо любимый Леннарт Поттеринг, добавил поддержку мультисита в systemd. Ничего конкретного в новостях тогда не было, и после собственно расследования, я пришел к выводу, что это пустышка. Он придумал систему тэгов в базе udev, на основании которых иксы должны цеплять или не цеплять устройства ввода. Самая информативная часть его работы была кусочком кода на Си, пример обработки этих тегов сервером дисплеев.

И когда моё время встретилось с желанием его "продуктивно" провести, я стал копать в сторону относительно новой секции InputClass в конфиге иксов. В Ubuntu 10.04, где всё и происходило, в иксы она добавляется в виде патча. При этом в более позднии версии иксов была добавлена поддержка дополнительных опций для этой секции. Оказалось, что функционал из systemd уже давно запилен и работает, всё что нужно, это несколько текстовых файлов с настройками.

Итак, сначала добавляем правила udev, чтобы связать устройства с места пользователей:

# Apply these rules only to input devices
SUBSYSTEM!="input", GOTO="custom_input_end"
KERNEL=="input[0-9]*", GOTO="custom_input_end"
ACTION!="add|change", GOTO="custom_input_end"

# Seat 0 
ATTRS{description}=="i8042 KBD port", ENV{ID_INPUT.tags}="seat0"
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c01b", ENV{ID_INPUT.tags}="seat0"
ATTRS{name}=="Venus USB2.0 Camera", ENV{ID_INPUT.tags}="seat0"

# Seat 1
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c069", ENV{ID_INPUT.tags}="seat1"
ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c313", ENV{ID_INPUT.tags}="seat1"
ATTRS{product}=="Plantronics Wireless Audio", ENV{ID_INPUT.tags}="seat1"

LABEL="custom_input_end"
Тут всё просто, ну а если не всё, то предлагаю почитать доки по удаву, пойдет на пользу. Я назвал это 99-multiseat-tags.rules, и скопировал в /etc/udev/rules.d

Дальше создаются почти одинаковые файлы настроек для иксов, вот первый, seat0.conf:

Section "ServerFlags"
	Option "DontZap" "false"
	Option "AllowEmptyInput" "true" 
EndSection

Section "InputClass"
        Identifier  "Generic input device"
        MatchTag "seat0"
	Driver "evdev"
EndSection

Section "Monitor"
	Identifier  "Samsung"
	Option	    "DPMS" "true"
EndSection

Section "Device"
	Identifier  "Radeon HD 4290"
	Driver      "radeon"
	BusID       "PCI:1:5:0"
EndSection

Section "Screen"
	Identifier "Left Screen"
	Device     "Radeon HD 4290"
	Monitor    "Samsung"
	DefaultDepth     24
	SubSection "Display"
		Viewport   0 0
		Depth     24
	EndSubSection
EndSection

Section "ServerLayout"
	Identifier     "Seat0"	
	Screen      0  "Left Screen" 0 0
	Option         "SingleCard" "on"
EndSection
Ключевые отличия настроек икс-сервера для разных мест это BusID и драйвер видеокарты, а также тэг в опции MatchTag. Остальное может совпадать. Файлы скопировал в /etc/X11.

И в завершение этого безобразия настройка менеджера дисплеев. У меня это KDM, подойдет также lightdm, а вот gdm3 гномоделы брутально упростили посредством фронтальной лоботомии. Спи спокойно дорогой друг.

[X-:0-Core]
AutoLoginAgain=false
AutoLoginDelay=0
AutoLoginEnable=false
AutoLoginLocked=false
AutoLoginUser=
ClientLogFile=.xsession-errors
ServerVT=7
ServerCmd=/usr/bin/X -config /etc/X11/seat0.conf -layout Seat0 -sharevts -keeptty

[X-:1-Core]
AutoLoginAgain=false
AutoLoginEnable=false
AutoLoginLocked=false
ClientLogFile=.xsession-errors
ServerVT=9
ServerCmd=/usr/bin/X -config /etc/X11/seat1.conf -layout Seat1 -sharevts -keeptty -novtswitch
Здесь только кусочек kdmrc, потому что целиком его помещать сюда было бы просто антигуммано. Обращаю внимание, что ключ -novtswitch нужен только для второго сервера.

Сейчас на моем месте используется интегрированный радеон с открытым драйвером, а на втором стоит GeForce 9800GT для любителей игр с проприетарным драйвером. Как следствие никакого 3D на радеоне. Перезапись стандартных библиотек - зло!

()

Пропал звук во flash

Форум - Desktop

В Ubuntu 10.04 (ядро 2.6.38 х86-64 из бэкпортов) после того, как в WINE перелопатили звуковую подсистему, возникла необходимость обновить libasound2-plugins до 1.0.24 из-за несовместимости более ранних версий с Pulseaudio. Всё ставилось пакетным менеджером, пакеты как собирались из пакетов исходных кодов, так и брались готовые из 11.04. Результат: звук работает, в том числе в WINE. Звук во флеше пропал. Флеш последний №11, для х86-64. Pulseaudio просто не регистрирует его активности, через ALSA, разумеется. Есть какой-нибудь способ отследить обращения флеша к ALSA? Или может кто уже сталкивался с похожей проблемой?

()

Производительность RS690G

Форум - Linux-hardware

Поставил на компьютер Убунту 10.10, обновил. На полном экране артефакты в 3D и тормоза на некоторых видеоклипах в Mplayer. VLC выручил с видео. Решил попробовать, как будет работать Gallium3d, обновился с PPA xorg-edgers. Видео не тормозит, в 3D артефактов нет, но рисует очень медленно. Например Neverball c MESA работает вполне нормально по скорости, в Gallium3D слайдшоу. Lugaru меня добил, графика на уровне Tomb Raider 1, и при этом слайдшоу с любым драйвером. Есть ли у кого-нибудь положительный опыт в приручении этого видеочипа? Всё таки под виндой и с fglrx (когда-то) он был побыстрее S3 Virge.

()

MESA под угрозой копирастов

Форум - Talks

Во вторник Ян Романик, работник Intel, на конференции разработчиков X-сервера XDC2009 поднял вопрос о потенциальных проблемах в реализации некоторых фич OpenGL 3 в MESA из-за наличия на них патентов. В частности он упоминает текстуры с плавающей точкой и некоторые форматы сжатых текстур. Как возможный выход из ситуации, он видит добавление в код "переключатель" для включения/выключения проблемного кода, как это сделано во Freetype, а также возможную покупку этих патентов OIN.

Источник: http://www.x.org/wiki/Events/XDC2009/Notes#head-11498e82ed45062886490e7b917c4...

()