LINUX.ORG.RU

Запуск скрипта устанавливающего режим термопакета на ноутбуке

 ,


0

1

В связи с впиливанием в убунто-15.04 systemd и выпиливанием оттуда pm-utils появилась проблема запуска скрипта, устанавливающего для моего ноутбука «термальный» режим в зависимости от того, работает ли он от батареи или от сети.

На данный момент проблема решена частично добавлением правил udev (взято из Arch Wiki):

SUBSYSTEM==«power_supply», ATTR{online}==«0», RUN+=«/path/to/your/script true»
SUBSYSTEM==«power_supply», ATTR{online}==«1», RUN+=«/path/to/your/script false»

Но в этом случае скрип запускается при фактическом изменении режима питания, однако нужно чтобы он также один раз запускался и после загрузки. Можно ли изменить правила udev, чтобы он делал это при, например, инициализации подсистемы или модуля ядра?



Последнее исправление: abacaba (всего исправлений: 1)

Ответ на: комментарий от surefire

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

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

дай вывод udevadm info -a /sys/class/power_supply/чегототам

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00/power_supply/ADP1':
    KERNEL==«ADP1»
    SUBSYSTEM==«power_supply»
    DRIVER==«»
    ATTR{type}==«Mains»
    ATTR{online}==«1»

  looking at parent device '/devices/LNXSYSTM:00/LNXSYBUS:00/ACPI0003:00':
    KERNELS==«ACPI0003:00»
    SUBSYSTEMS==«acpi»
    DRIVERS==«ac»
    ATTRS{hid}==«ACPI0003»
    ATTRS{path}==«\_SB_.ADP1»
    ATTRS{status}==«15»

  looking at parent device '/devices/LNXSYSTM:00/LNXSYBUS:00':
    KERNELS==«LNXSYBUS:00»
    SUBSYSTEMS==«acpi»
    DRIVERS==«»
    ATTRS{hid}==«LNXSYBUS»
    ATTRS{path}==«\_SB_»

  looking at parent device '/devices/LNXSYSTM:00':
    KERNELS==«LNXSYSTM:00»
    SUBSYSTEMS==«acpi»
    DRIVERS==«»
    ATTRS{hid}==«LNXSYSTM»
    ATTRS{path}==«\»
abacaba
() автор топика
Ответ на: комментарий от surefire

Есть два устройства в классе power_supply - ADP1 и BAT1. Аттрибут {online} есть только у ADP1. Вывод выше получен вызовом:

udevadm info -a /sys/class/power_supply/ADP1

abacaba
() автор топика
Последнее исправление: abacaba (всего исправлений: 1)
Ответ на: комментарий от abacaba

Попробуй добавить тогда к своим правилам KERNEL==«ADP1», по идее должно запускаться при старте

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

Есть еще один момент
Незнаю как правильно описать, зависит от того, что выполняет скрипт.
Возможно при его запуске во время загрузки, еще не готово то устройство которым оно управляет.
Либо кто-то еще в системе позже заменяет нужные параметры своими.

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