Я пытаюсь отключить встроенный картридер в своем MBP (5,3) рабочее тестирование Debian. Я заметил, что powertop перечисляет картридер как основной фактор, будят события и хотел бы отключить его, поскольку я редко должен читать SD-карты.
Я нашел это с "dmesg":
scsi 6:0:0:0: прямой доступ Читатель SD-карты APPLE 1.00 PQ: 0 ANSI: 0
и это от "sg_scan-i":
/dev/sg2: scsi6 channel=0 id=0 lun=0 [их] Читатель SD-карты APPLE 1.00 [rmb=1 cmdq=0 pqual=0 pdev=0x0]
Я не знаю, где найти устройство в/proc и нет никаких модулей, загруженных для этого устройства (я предполагаю, что это имеет поддержку, скомпилированную в ядро).
Так, идеально, я хотел бы смочь позволить/запретить это устройство без ядра, перекомпилировали. Действительно ли это возможно?
Скорее всего, картридер является устройством хранения USB. Однако это не вызывает пробуждения отдельно — вместо этого, HAL или udisks должны опросить его для обнаружения изменений медиа, и этот опрос обнаруживается в powertop. Возможно отключить этот опрос, но затем изменения медиа не будут обнаружены (однако, устройство будет все еще работать, обычно пытаться получить доступ к/dev/sdX заставит ядро обнаруживать медиа, изменяют и обнаруживают разделы, затем монтируя, что те разделы будут возможны).
Можно искать процессы опроса в системе — HAL и шоу udisks опрошенные имена устройств в командной строке, видимой в ps
вывод:
ps ax | grep /dev/sdX
С HAL существует отдельное hald-addon-storage
процесс для каждого опрошенного устройства; с udisks существует сингл udisks-daemon
процесс для всех опрошенных устройств в системе.
Отключение опрашивающий относительно HAL легко — существует специальная команда для него:
hal-disable-polling --device /dev/sdX
Если Вы хотите повторно позволить опросить позже, используйте ту же команду с дополнительным --enable-polling
опция.
Для более нового udisks ситуация более сложна. Во-первых, Вам нужен достаточно новый udisks пакет: ошибка Debian № 559562 говорит, что udisks> = 1.0.0~git20100223.a38230-2 необходим. Затем, необходимо добавить правило udev для устройства, как описано в http://bugs.freedesktop.org/show_bug.cgi?id=26508#c0. Для Вашего устройства правило должно, вероятно, быть похожим:
SUBSYSTEM=="block", ENV{ID_VENDOR}=="APPLE*", ENV{ID_MODEL}=="SD Card Reader*", ENV{UDISKS_DISABLE_POLLING}="1"
Поместите это правило в недавно созданный файл в /etc/udev/rules.d/
(например, 99-local.rules
).