LINUX.ORG.RU

Помогите допилить правило Udev

 ,


1

1

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

Собственно проблема у меня возникла с передачей xorg названия драйвера который надо использовать. Не передается и все тут, гугль и здравый смысл не помогли. Udevd версии 173, xorg-server-1.11.3

# udev rules for nvidia video cards
# правило udev для видеокарт nvidia - передаем xorg что нужно использовать
# драйвер nouveau вместо nv
#

ACTION!="add|change", GOTO="end_video"

# xorg_start only does something for subsystem "pci" and "video" class.
SUBSYSTEM=="pci", ATTR{class}=="0x030000", GOTO="subsystem_pci"
SUBSYSTEM=="drivers", GOTO="subsystem_drivers"
GOTO="end_video"

# check for drivers dont use the pci substem
LABEL="subsystem_drivers"
KERNEL=="fglrx_pci", ENV{xorg_driver}="fglrx",   GOTO="start_xorg"
KERNEL=="nvidia",    ENV{xorg_driver}="nvidia",  GOTO="start_xorg"
GOTO="end_video"

# check for drivers using the pci substem
LABEL="subsystem_pci"
DRIVER=="i915",      ENV{xorg_driver}="i915",    GOTO="start_xorg"
DRIVER=="nouveau",   ENV{xorg_driver}="nouveau", GOTO="start_xorg"
DRIVER=="nvidia",    ENV{xorg_driver}="nvidia",  GOTO="start_xorg"
DRIVER=="radeon",    ENV{xorg_driver}="radeon",  GOTO="start_xorg"
DRIVER=="vmware",    ENV{xorg_driver}="vmware",  GOTO="start_xorg"
GOTO="end_video"

# start Xorg
LABEL="start_xorg"
#ENV{xorg_driver}=="?*", RUN+="xwin"

LABEL="end_video"

Думаю данное правило будет полезным и в других системах упрощая установку проприетарных драйверов.

★★★★★
Ответ на: комментарий от anonymous
# grep -vE '(^#|^$)' /etc/modprobe.d/blacklist.conf
blacklist evbug
blacklist eth1394
blacklist nouveau
blacklist nvidiafb
blacklist snd_hda_intel
anonymous
()
Ответ на: комментарий от anonymous

да не в блеклисте дело, я знаю как оно ставится должно. Чтобы все стало шоколадно - надо чтобы правило udev рулило какой модуль ядра использовать для видеокарты. т.е. если есть проприетарный - используем его. если нету проприетарного - используем свободный.

Автоматизировать процесс хочется. Потому как дистриб модульный, в идеале хочется чтобы положил модуль в проприетарным дравером и после перезагрузки система подхватывает проприетарный драйвер. Снес проприетарный драйвер - после перезагрузки система использует свободный.

irton ★★★★★
() автор топика
Ответ на: комментарий от irton

А как мусье планирует рулить модулями при загрузке initramfs? А то при первоначальной загрузке initramfs загрузится какой-нибудь модуль — его потом даже rmmod'ом не выковыряешь. И блеклистинг в /etc/modprobe.d не поможет.

carasin ★★★★★
()
Ответ на: комментарий от anonymous

В initramfs запакованы в том числе и видеодрайверы. А вот какой из этих видеодрайверов загрузится при первоначальной загрузке минимальной системы из initramfs — это уже вопрос. Но если загрузится, к примеру, nouveau, а нужен nvidia, то ничего сделать уже будет нельзя в рамках текущей сессии.

Это я к тому, что этот вопрос нужно также проработать. Здесь одним лишь правилом udev не обойтись. Также нужно будет обратить внимание на X'овую часть, а именно: создавать соответствующие xorg.conf'ы для проприетарных драйверов (не знаю как fglrx, но nvidia без оного заводиться не хочет), создавать линк на libgl.so из состава mesa или на реализацию из блоба.

carasin ★★★★★
()
Ответ на: комментарий от carasin

в данном случае гарантированно в initrd.gz модулей видеокарт нет.

irton ★★★★★
() автор топика
Ответ на: комментарий от carasin

Также нужно будет обратить внимание на X'овую часть, а именно: создавать соответствующие xorg.conf'ы для проприетарных драйверов (не знаю как fglrx, но nvidia без оного заводиться не хочет), создавать линк на libgl.so из состава mesa или на реализацию из блоба.

Во всех статьях пишется что xorg поддерживает конфигурирование через udev (при компиляции --enable-config-udev включил). Вот этим методом и должны передаваться нужные параметры - вот только не получается хотя бы название драйвера передать :( Может ошибка в синтаксисе самого правила udev?

Проблемы ссылок, замены libgl и т.п. решаются «слоистой» структурой дистрибутива. Процедуры отработаны и за ними проблем не будет, проверено. Повторюсь - основная проблема заставить udev рулить параметрами xorg.

irton ★★★★★
() автор топика

Апну тему.

может кто на годном английском спросит у разрабов xorg как оно у них с udev увязано?

Подозрения пока что на ENV{xorg_driver}=

возможно вместо xorg_driver надо по другому писать название параметра.

irton ★★★★★
() автор топика
15 марта 2013 г.

Собственно правило допилили.

Существующая текстовка от старой версии udev, пришлось исправить SUBSYSTEM на SUBSYSTEMS и ATTR на ATTRS

А вот с передачей xorg информации какой надо драйвер использовать - не получилось пока. Обходное решение - запускать переименование готового конфига в /etc/X11/xorg.conf.d/ (по рецепту одного из участников ЛОР).

Ну и просто GOTO=«end_video» тоже не работает теперь, сделали SUBSYSTEMS==«*?», GOTO=«end_video»

irton ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.