необходимо обеспечить возможность выполнять действия, которые зависят от железки и дополнительных факторов (первая загрузка после установки, наличие/отсутствие конфига, etc). причина -- проблемы конкретных железок/драйверов, которые требуют специальной инициализации для нормальной работы. пример -- #4735. осмысленно решать вместе с #6830 IMCO.
кстати о platform-detect. :)
На какой именно стадии нужно запускать скрипты ? возможны варианты: 1) нашли железку 2) грузим модуль 3) загрузили модуль 4) когда-то потом и т.д.
в случае #4735 -- после загрузки модулей, в округе восстановления микшера (собсно это в одной инфраструктуре имеет смысл) вообще -- подозреваю, что осмысленно хуки по всем точкам расставить (вспоминая %post и компанию ;)
Каким образом эти хуки определять ? предлагайте идеи.
в смысле определять? сейчас sound.dev -- то, что цепляется на такой вот хук
так тебе же не только по классу устройств, но и по ID'шникам нужно
о чём и спич. поскольку сдаётся, что это проблема более общая, чем snd-emu10k1.
ну так надо подумать как сделать настройку в зависимость от id устройства. Но проблема то глубже (vsu@ поправь если я не прав): для многих звуковых плат сдетектить что же это за зверь можно уже только после загрузки драйвера.
ну так не противоречит.
(In reply to comment #8) > Но проблема то глубже (vsu@ поправь если я не прав): для многих звуковых плат > сдетектить что же это за зверь можно уже только после загрузки драйвера. Ну так в момент вызова sound.dev драйвер уже загружен; копание глубже, чем PCI ID, можно засунуть уже в обработчик для этого PCI ID.
хорошо, а давайте попробуем расширить обработчик, добавив обработку по модулю ? Или как ? или сделать что-то, что будет работать по pciid ? Я могу добавить такое как и в hwdatabase, так и в файловую систему (например /etc/devices.d/<скрипт с именем, равным pciid устройства> Да, а что делать с не PCI устройствами (ISA PNP, USB и т.д.) ? О.. и тут же еще всплывает одна интересная тема, место которой в отдельной баге: тестирование серийных портов. 2vsu: там ничего не планируют предпринять в ядре, что бы /dev/ttyS* стали работать аля /dev/psaux в 2.6 ? Заморочка тут с тем, что при появлении /dev/ttyS* устройства нужно по хорошему посмотреть что на нем висит (модем, мышь... и т.д.) и выполнить соответствующие действия (сделать симлинк нужного вида, запустить serialattach для мышей с опцией - нужный протокол, и т.д. и т.п.)
(In reply to comment #11) > Да, а что делать с не PCI устройствами (ISA PNP, USB и т.д.) ? Если делать в общем виде, то это скорее переползает уже куда-то в сторону HAL... > при появлении /dev/ttyS* устройства нужно по хорошему > посмотреть что на нем висит (модем, мышь... и т.д.) Т.е., предлагается затащить в ядро обработку Serial-PnP?
(In reply to comment #12) > (In reply to comment #11) > > Да, а что делать с не PCI устройствами (ISA PNP, USB и т.д.) ? > > Если делать в общем виде, то это скорее переползает уже куда-то в сторону HAL... А в hal ли ? Давайте составим список действий, которые нужно предпринять при появлении нового устройства: 1) звук: выставить уровни микшера в зависимости от предыдущего состояния и устройства 2) модем: сделать симлинк /dev/modem на устройство 3) серийная мышь: запустить serialattach > > > при появлении /dev/ttyS* устройства нужно по хорошему > > посмотреть что на нем висит (модем, мышь... и т.д.) > > Т.е., предлагается затащить в ядро обработку Serial-PnP? Нет, зачем ? я могу это прекрасно делать и в userspace. Останется только сгенерить соответствующее событие для hotplug'а.
(In reply to comment #13) > Нет, зачем ? я могу это прекрасно делать и в userspace. Останется только > сгенерить соответствующее событие для hotplug'а. Так оно и сейчас неплохо генерируется: Jun 14 19:21:43 center4 default.hotplug[8337]: arguments (tty) env (PHYSDEVPATH=/devices/platform/serial8250 SUBSYSTEM=tty OLDPWD=/ DEVPATH=/class/tty/ttyS0 PATH=/bin:/sbin:/usr/sbin:/usr/bin ACTION=remove PWD=/etc/hotplug HOME=/ SHLVL=2 PHYSDEVDRIVER=serial8250 DEBUG=yes PHYSDEVBUS=platform SEQNUM=1424 _=/usr/bin/env) Jun 14 19:21:44 center4 default.hotplug[8350]: arguments (tty) env (PHYSDEVPATH=/devices/pnp0/00:07 SUBSYSTEM=tty OLDPWD=/ DEVPATH=/class/tty/ttyS0 PATH=/bin:/sbin:/usr/sbin:/usr/bin ACTION=add PWD=/etc/hotplug HOME=/ SHLVL=2 PHYSDEVDRIVER=serial DEBUG=yes PHYSDEVBUS=pnp SEQNUM=1425 _=/usr/bin/env) Jun 14 19:21:44 center4 default.hotplug[8357]: arguments (tty) env (PHYSDEVPATH=/devices/platform/serial8250 SUBSYSTEM=tty OLDPWD=/ DEVPATH=/class/tty/ttyS1 PATH=/bin:/sbin:/usr/sbin:/usr/bin ACTION=remove PWD=/etc/hotplug HOME=/ SHLVL=2 PHYSDEVDRIVER=serial8250 DEBUG=yes PHYSDEVBUS=platform SEQNUM=1426 _=/usr/bin/env) Jun 14 19:21:43 center4 default.hotplug[8364]: arguments (tty) env (PHYSDEVPATH=/devices/pnp0/00:08 SUBSYSTEM=tty OLDPWD=/ DEVPATH=/class/tty/ttyS1 PATH=/bin:/sbin:/usr/sbin:/usr/bin ACTION=add PWD=/etc/hotplug HOME=/ SHLVL=2 PHYSDEVDRIVER=serial DEBUG=yes PHYSDEVBUS=pnp SEQNUM=1427 _=/usr/bin/env)
Это генерится событие о появлении ttyS*, а нужно еще сгенерить событие о появлении на этих ttyS* других устройств.
(In reply to comment #15) > Это генерится событие о появлении ttyS*, а нужно еще сгенерить событие о > появлении на этих ttyS* других устройств. Ну так вот и запускай по этому событию Serial-PnP в userspace - лучше этого там ничего не сделаешь. Только глюков не оберёшься от этого PnP...
О, точно... хорошая идея. Хей, ппл, кому там нужно было по устройствам чего запускать ? давайте это через udev делать ?
погодь, sr@ на той неделе вернётся, продолжим. PS: Security group сними, чего людей пугать. :)
так снята уже давно
новый udev предлагает прекрасные возможности для таких хаков смотрите /usr/share/doc/udev-*/RELEASE-NOTES
замечательно :-) Женя, посмотришь?
closing