Use as regras do udev para configurações permanentes de economia de energia diretamente na fonte, em vez de criar scripts ou confiar em possíveis pacotes não instalados. Assim, assim que o hardware for adicionado por udev
, suas configurações serão aplicadas.
Uma regra correta de udev
faz com que as configurações não se apliquem quando o hardware não está lá, tornando a configuração mais portátil. E você aprende mais sobre o funcionamento interno do seu kernel Linux :-). A configuração feita desta forma também se aplica quando não está funcionando com bateria.
Um exemplo de sintonizável Enable SATA link power Managmenet for host0
. A sugestão é:
# echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy''
Isso já dá uma idéia de onde o hardware é: em / sys / class / scsi_host. Você pode verificar isso com:
# udevadm info -a -p /sys/class/scsi_host/host?
…
looking at device '/devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0':
KERNEL=="host0"
SUBSYSTEM=="scsi_host"
…
ATTR{eh_deadline}=="0"
ATTR{link_power_management_policy}=="max_performance"
ATTR{host_busy}=="0"
Melhor não tocar nas regras do udev do sistema em /lib/udev/rules.d/ e criar seu próprio arquivo de regras do udev aproximadamente no nível 60 em /etc/udev/rules.d/. Por exemplo, com o editor nano:
$ nano /etc/udev/rules.d/60-power.rules
Alguns outros exemplos escrevem regras como:
KERNEL=="host[0-5]", SUBSYSTEM=="scsi_host", ATTR{link_power_management_policy}="min_power"
Eu diria que não e torne sua regra ainda melhor, aplicando-a somente quando a política de gerenciamento de energia do link estiver definida como max_performance. Dê uma olhada na pequena diferença (procure pelo sinal da dupla equação):
KERNEL=="host[0-5]", SUBSYSTEM=="scsi_host", ATTR{link_power_management_policy}=="max_performance", ATTR{link_power_management_policy}="min_power"
Teste sua regra com udevadm test /devices/…
:
# udevadm test /devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0/link_power_management_policy
calling: test
version 204
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.
=== trie on-disk ===
tool version: 204
file size: 5660180 bytes
header size 80 bytes
strings 1265196 bytes
nodes 4394904 bytes
load module index
read rules file: /lib/udev/rules.d/40-crda.rules
read rules file: /lib/udev/rules.d/40-gnupg.rules
read rules file: /lib/udev/rules.d/40-hyperv-hotadd.rules
read rules file: /lib/udev/rules.d/42-usb-hid-pm.rules
read rules file: /lib/udev/rules.d/50-firmware.rules
read rules file: /lib/udev/rules.d/50-udev-default.rules
read rules file: /lib/udev/rules.d/55-dm.rules
read rules file: /lib/udev/rules.d/60-cdrom_id.rules
read rules file: /lib/udev/rules.d/60-keyboard.rules
read rules file: /lib/udev/rules.d/60-persistent-alsa.rules
read rules file: /lib/udev/rules.d/60-persistent-input.rules
read rules file: /lib/udev/rules.d/60-persistent-serial.rules
read rules file: /lib/udev/rules.d/60-persistent-storage-dm.rules
read rules file: /lib/udev/rules.d/60-persistent-storage-tape.rules
read rules file: /lib/udev/rules.d/60-persistent-storage.rules
read rules file: /lib/udev/rules.d/60-persistent-v4l.rules
read rules file: /etc/udev/rules.d/60-power.rules
read rules file: /lib/udev/rules.d/61-accelerometer.rules
read rules file: /lib/udev/rules.d/64-btrfs.rules
read rules file: /etc/udev/rules.d/70-persistent-net.rules
read rules file: /lib/udev/rules.d/70-power-switch.rules
read rules file: /lib/udev/rules.d/70-uaccess.rules
read rules file: /lib/udev/rules.d/71-biosdevname.rules
read rules file: /lib/udev/rules.d/71-seat.rules
read rules file: /lib/udev/rules.d/73-idrac.rules
read rules file: /lib/udev/rules.d/73-seat-late.rules
read rules file: /lib/udev/rules.d/75-net-description.rules
read rules file: /lib/udev/rules.d/75-persistent-net-generator.rules
read rules file: /lib/udev/rules.d/75-probe_mtd.rules
read rules file: /lib/udev/rules.d/75-tty-description.rules
read rules file: /lib/udev/rules.d/78-graphics-card.rules
read rules file: /lib/udev/rules.d/78-sound-card.rules
read rules file: /lib/udev/rules.d/80-drivers.rules
read rules file: /lib/udev/rules.d/85-hdparm.rules
read rules file: /lib/udev/rules.d/85-keyboard-configuration.rules
read rules file: /lib/udev/rules.d/85-regulatory.rules
read rules file: /lib/udev/rules.d/95-udev-late.rules
rules contain 24576 bytes tokens (2048 * 12 bytes), 11335 bytes strings
1814 strings (22027 bytes), 1179 de-duplicated (11328 bytes), 636 trie nodes used
ATTR '/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0/link_power_management_policy' writing 'min_power' /etc/udev/rules.d/60-power.rules:1
ACTION=add
DEVPATH=/devices/pci0000:00/0000:00:1f.2/ata1/host0/scsi_host/host0
SUBSYSTEM=scsi_host
USEC_INITIALIZED=1203444595
unload module index
Não consigo encontrar uma maneira de aplicar a regra, portanto, neste caso, fiz uma reinicialização para aplicar a regra do udev recém-criada.