On Fri, Feb 09, 2007 at 03:04:56PM +0300, Valery V. Inozemtsev wrote: > > > > - sound.rc - действия, выполняемые при загрузке, в данном случае не > > > > особо полезны, а вот при завершении работы этот скрипт сохраняет > > > > состояние микшера, которое потом будет восстановлено при > > > > обнаружении звуковых устройств; > > > > > > remove ты зря убрал. во первых есть ноуты, у которых при засыпании модули > > > звуковухи могут выгружаться (например snd-intel8x0 не поддерживает > > > засыпание). > > > > Тогда то, что выгружает эти модули, должно перед этим самостоятельно > > сохранить настройки. Сохранять состояние в обработчике remove, > > вызываемом из udevd, уже поздно - в этот момент устройство уже > > уничтожено. > > # rmmod snd-intel8x0 > настройки сохранились, или я че не понимаю? Сейчас проверил и убедился, что сохранение не работает, как и должно. Ни с "for i in /sys/class/sound/controlC*", как было в оригинальном скрипте, ни с сохранением параметров для устройства, указанного в DEVPATH. Ещё раз повторяю: событие remove генерируется, когда устройство уже стало недоступным (как минимум - было убрано из sysfs), поэтому в его обработчике нельзя делать ничего, для чего требуется доступ к устройству. Если какие-то скрипты выгружают модули snd-*, в этих скриптах надо предусмотреть какие-то вызовы для сохранения состояния микшера перед выгрузкой модулей. В принципе можно оформить это в виде перезапуска какого-то сервиса, но тогда этот кусок нельзя тащить в udevd-final - он должен быть отдельным сервисом, который и нужно будет вписывать в RestartServices для hibernate или ещё куда-то. > > В принципе можно запихать это и в udevd-final. [skip очередной хак] > > Можно туда же засунуть > > и загрузку модулей ACPI, но не уверен, что это правильно. > > не надо грязи. пусть cpu.rc acpi.rc живут гдето отдельно Как будто вызовы sound.agent там - не грязь...