Page 1 sur 2

[systemd] Service ineffectif au démarrage

Publié : dim. 16 déc. 2012, 22:45
par esclapion
Bonsoir,

Je cherche à créer un service qui fasse passer en low le profil d'alimentation de mon ATI.
Pour ça, j'ai écrit et rendu exécutable un script :

Code : Tout sélectionner

#!/bin/bash
echo low > /sys/class/drm/card0/device/power_profile
et un service :

Code : Tout sélectionner

[Unit]
Description=Initialisation personnelle
After=gdm.service

[Service]
Type=oneshot
ExecStart=/etc/initperso
RemainAfterExit=yes (ou no, c'est pareil)

[Install]
WantedBy=multi-user.target
Puis fait un systemctl enable de ce service.

Au redémarrage, aucun effet. Si je fais un systemctl start initperso.service, ça marche.
(edit)
Je suis sous Manjaro, pas Arch pure.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 08:01
par oktoberfest
Salut, que te réponds :

Code : Tout sélectionner

systemctl enable <de ce service>
Il est censé te dire qu'il fait un lien symbolique.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 11:07
par esclapion
Merci, mais le lien était fait.

Code : Tout sélectionner

[root@manjaro pat]# systemctl enable initperso.service
[root@manjaro pat]# systemctl disable initperso.service
rm '/etc/systemd/system/multi-user.target.wants/initperso.service'
[root@manjaro pat]# systemctl enable initperso.service
ln -s '/usr/lib/systemd/system/initperso.service' '/etc/systemd/system/multi-user.target.wants/initperso.service'
[root@manjaro pat]# 

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 11:11
par oktoberfest
et que dit un

Code : Tout sélectionner

# systemctl status initperso
une fois l'ordinateur redémarré ?

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 11:26
par esclapion
J'ai redémarré mon PC.

Code : Tout sélectionner

[root@manjaro pat]# systemctl status initperso
initperso.service - Initialisation personnelle
	  Loaded: loaded (/usr/lib/systemd/system/initperso.service; enabled)
	  Active: inactive (dead) since lun., 2012-12-17 11:24:58 CET; 50s ago
	 Process: 500 ExecStart=/etc/initperso (code=exited, status=0/SUCCESS)
	  CGroup: name=systemd:/system/initperso.service

déc. 17 11:24:58 manjaro systemd[1]: Started Initialisation personnelle.
[root@manjaro pat]# 

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 11:29
par oktoberfest
Donc le service a bien été démarré

Code : Tout sélectionner

déc. 17 11:24:58 manjaro systemd[1]: Started Initialisation personnelle.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 11:38
par esclapion
Oui, mais il est ineffectif, j'entends mon ventilateur tourner.

Si je lance le service à la main, le bruit s'arrête. Pareil si je fais un /etc/initperso direct.

Je pense à une question de synchro, mais ça marche sous Arch pure.

Normalement, il devrait attendre gdm.service pour démarrer, non ? Puis-je le synchroniser plus tard, sur quoi ?

De plus, je ne sais pas si c'est une impression, mais il me semble observer un léger temps d'arrêt entre l'apparition du fond du bureau et celle de la barre des tâches lorsqu'il est actif.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 11:40
par oktoberfest
Je soupçonne gnome de modifier le paramètre /sys/class/drm/card0/device/power_profile.
J'ai eu dans le passé des soucis avec gnome : je mettais ma partition / en lecture seule (ro) dans /etc/fstab mais gnome/gdm la remettait en lecture/écriture.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 11:45
par esclapion
De mon côté, je me demandais si l'arborescence que je crois virtuelle /sys/class/drm/card0/device/power_profile
était accessible tout de suite, ou si elle attendait ? pour être disponible.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 12:01
par oktoberfest
Je pense que l'arborescence est disponible quand le driver est chargé, donc très tôt.
Ce que tu peux tester :
- supprimer le ligne After=gdm.service
- démarrer en passant au noyau l'option : systemd.unit=multi-user.target

Ceci te fera démarrer dans l'ancien runlevel 3. Tu sauras ainsi si c'est gdm qui te causes un souci ou pas.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 12:50
par esclapion
Re,

Ça bloque au démarrage, juste après les tout premiers messages sur l'absence de cache.

Code : Tout sélectionner

[Unit]
Description=Initialisation personnelle
#After=gdm.service

[Service]
J'ai modifié dans un 40_custom manipulé par une Arch qui se trouve à côté et qui est maîtresse du grub.

Code : Tout sélectionner

	linux	/boot/vmlinuz-36-x86_64 root=UUID=8859141b-6574-4eda-9cb0-4c0d28d678bd ro quiet
#	linux	/boot/vmlinuz-36-x86_64 root=UUID=8859141b-6574-4eda-9cb0-4c0d28d678bd ro  systemd.unit=multi-user.target quiet

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 13:53
par oktoberfest
Je ne vois pas le rapport avec ton service, ni avec le runlevel multi-user.target...
Ca bloque éternellement, ou les 90 secondes réglementaires de systemd ? Il serait intéressant de laisser le temps qu système, histoire d'avoir des logs.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 14:50
par esclapion
Bon, nouvel essai.

Là, après les messages "Assuming disk cache : write through", il a bloqué.

J'ai attendu 10' (et c'est long :-)). Au bout de ce temps, j'ai vu un "no signal", et il m'a passé la main ensuite à la console. Le power_profile était bien passé en low, mais je ne sais pas si c'est significatif ?

Y a-t-il qqch sur quoi se déclencher après gdm.service ?

Et j'ai toujours ces 1 ou 2" d'attente avant l'apparition de la barre des tâches.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 15:07
par oktoberfest
Une fois que tu as la main, tu fais un 'systemctl status initperso' pour voir si ton service a bien été exécuté ou pas (je ne vois pas pourquoi il ne le serait pas).
Pour le reste je ne peux pas t'aider. J'ai viré gdm/gnome car c'était trop lourd et ça faisait des choses dans mon dos (un peu comme chez toi :))

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 16:50
par esclapion
Merci tout de même pour ton aide.

Les devs de Manjaro sont en train de remplacer gdm par lxdm, à cause de "quelques problèmes", et je commence à comprendre pourquoi. :wink:

Mais pour l'instant, je n'ai pas trop envie de planter mon instal en le faisant.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 17:35
par esclapion
Bon, j'ai remplacé gdm par lxdm -> pareil ????

Code : Tout sélectionner

[root@manjaro pat]# systemctl status initperso.service
initperso.service - Initialisation personnelle
	  Loaded: loaded (/usr/lib/systemd/system/initperso.service; enabled)
	  Active: inactive (dead) since lun., 2012-12-17 17:29:47 CET; 26s ago
	 Process: 471 ExecStart=/etc/initperso (code=exited, status=0/SUCCESS)
	  CGroup: name=systemd:/system/initperso.service

déc. 17 17:29:47 manjaro systemd[1]: Started Initialisation personnelle.
[root@manjaro pat]# 

Code : Tout sélectionner

[root@manjaro system]# cat initperso.service 
[Unit]
Description=Initialisation personnelle
After=lxdm.service

[Service]
Type=oneshot
ExecStart=/etc/initperso
RemainAfterExit=no

[Install]
WantedBy=multi-user.target
[root@manjaro system]# 
Je sèche... J'ai désinstallé gdm (déjà désactivé) à tout hasard, pour éviter les collisions.

A noter que le démarrage n'est pas plus rapide avec lxdm.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 17:42
par benjarobin
Mais pourquoi tu dis que cela ne fonctionne pas, tout prouve que le service est pleinement fonctionnel

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 17:47
par esclapion
Bonjour,

Mon script /etc/initperso :

Code : Tout sélectionner

#!/bin/bash
echo low > /sys/class/drm/card0/device/power_profile
[root@manjaro pat]# 
Je devrais donc retrouver low. Or je retrouve high.

Si je fais un systemctl start initperso.service à la main, après le démarrage, ça passe bien à low.

(edit)

Code : Tout sélectionner

[root@manjaro pat]# ls -l /etc/initperso
-rwxr-xr-x 1 root root 65 16.12.2012 21:23 /etc/initperso*
[root@manjaro pat]# 

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 18:24
par benjarobin
Je pense que le script fonctionne très bien mais que quelque chose le remet à high.

Re: [systemd] Service ineffectif au démarrage

Publié : lun. 17 déc. 2012, 18:27
par esclapion
Oui, mais quoi ? :roll: Je me suis (en théorie) après lxdm.service, saurais-tu après quoi me mettre pour déclencher encore plus tard ?

Je vais rajouter une instruction touch /tmp/toto dans mon script, voir si j'y passe, mais je pense que oui.

(edit)
Oui :

Code : Tout sélectionner

[root@manjaro pat]# ls -l /tmp/toto
-rw-r--r-- 1 root root 0 17.12.2012 18:28 /tmp/toto
[root@manjaro pat]#