web-dev-qa-db-fra.com

L'unité de service Systemd échoue au démarrage

Je voulais changer certains paramètres powertop au démarrage d’Ubuntu 17.04, j’ai donc créé un script Shell dans /usr/sbin/ et je l’ai rendu exécutable:

#!/bin/sh
echo 'min_power' > '/sys/class/scsi_Host/host1/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_Host/host2/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_Host/host0/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_Host/host5/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_Host/host3/link_power_management_policy';
echo 'min_power' > '/sys/class/scsi_Host/host4/link_power_management_policy';
echo '1' > '/sys/module/snd_hda_intel/parameters/power_save';
echo 'auto' > '/sys/bus/i2c/devices/i2c-0/device/power/control';
echo 'auto' > '/sys/bus/i2c/devices/i2c-1/device/power/control';
echo 'auto' > '/sys/bus/i2c/devices/i2c-2/device/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1d.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.3/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:00.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.6/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:02.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:14.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.4/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:17.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.2/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.0/power/control';
echo 'auto' > '/sys/bus/pci/devices/0000:00:16.0/power/control';
ethtool -s  enp0s31f6 wol d
exit 0

Ensuite, j'ai créé une unité de service dans /etc/systemd/system:

[Unit]
Description=PowerTOP

[Service]
ExecStart=/usr/sbin/powertop-stup.sh

[Install]
WantedBy=multi-user.target

et l’a activé avec Sudo systemctl enable powertop_start.service mais après un redémarrage, cela ne fonctionne pas.

Si je lance le service manuellement après avoir démarré avec Sudo systemctl start powertop_start.service, cela fonctionne parfaitement. De plus, lorsque je lance le script Shell lui-même, il fonctionne mais il ne fait rien automatiquement au démarrage.

4
ilovebytes

Je ne sais pas pourquoi votre service ne fonctionne pas, mais j'estime que la méthode standard pour modifier /sys au démarrage consiste à utiliser sysfsutils, c'est pourquoi je propose une approche alternative.

Le paquet n'étant peut-être pas installé par défaut, commencez par:

Sudo apt install sysfsutils

maintenant, éditez le fichier /etc/sysfs.conf, par exemple:

sudoedit /etc/sysfs.conf

et ajouter ces lignes à la fin de celui-ci

class/scsi_Host/host1/link_power_management_policy = min_power
class/scsi_Host/host2/link_power_management_policy = min_power
class/scsi_Host/host0/link_power_management_policy = min_power
class/scsi_Host/host5/link_power_management_policy = min_power
class/scsi_Host/host3/link_power_management_policy = min_power 
class/scsi_Host/host4/link_power_management_policy = min_power
module/snd_hda_intel/parameters/power_save = 1
bus/i2c/devices/i2c-0/device/power/control = auto
bus/i2c/devices/i2c-1/device/power/control = auto
bus/i2c/devices/i2c-2/device/power/control = auto
bus/pci/devices/0000:00:1d.0/power/control = auto
bus/pci/devices/0000:00:1f.3/power/control = auto
bus/pci/devices/0000:00:00.0/power/control = auto
bus/pci/devices/0000:00:1f.6/power/control = auto
bus/pci/devices/0000:00:02.0/power/control = auto
bus/pci/devices/0000:00:14.0/power/control = auto
bus/pci/devices/0000:00:1f.4/power/control = auto
bus/pci/devices/0000:00:17.0/power/control = auto
bus/pci/devices/0000:00:1f.2/power/control = auto
bus/pci/devices/0000:00:1c.0/power/control = auto
bus/pci/devices/0000:00:1f.0/power/control = auto
bus/pci/devices/0000:00:16.0/power/control = auto

Enregistrez le fichier et quittez-le, puis redémarrez.

Cela laisse votre commande ethtool, pour laquelle je n'ai pas de solution, mais vous pourriez voir si systemd exécutera uniquement cette commande pour vous comme détaillé dans cette réponse de mur .

2
Zanna