[systemd] hibernation et physlock

Questions et astuces concernant l'installation et la configuration d'archlinux
Répondre
Torlik
Hankyu
Messages : 18
Inscription : dim. 09 mars 2014, 23:49

[systemd] hibernation et physlock

Message par Torlik »

Salut,

Pour faire simple : je n'ai pas de gestionnaire de login. Au boot, j'arrive sur un tty, je rentre login + mdp puis à la main je lance xinit.

Je me suis fait une hibernation à la fermeture du capot de la façon suivante :
/etc/systemd/logind.conf => HandleLidSwitch=hibernate
/etc/mkinitcpio.conf
/boot/syslinux/syslinux.cfg => puis booter sur ce qui va bien

le soucis c'est lorsque je reboot après l'hibernation je me retrouve sur le bureau à l'instant t où je coupais le jus et le problème c'est que c'est sans demande de mdp.

La solution que j'ai trouvé c'est physlock.
Pour automatiser la chose, comme il ne possède pas de unit, j'en ai fait un moi : dans /etc/systemd/system

Code : Tout sélectionner

[Unit]
Description=Lock session
Before=sleep.target

[Service]
Type=simple
ExecStart=/usr/bin/physlock -d

[Install]
WantedBy=hibernate.target
j'ai activé le service. Quand je ferme le capot et reboot le service ne s'est pas lancé. Qu'est ce que j'ai loupé ?
Quand je fais systemctl status hibernate.service :

Code : Tout sélectionner

● hibernate.service
   Loaded: not-found (Reason: No such file or directory)
   Active: inactive (dead)
J'espère que l'on pourra m'aider :copain:
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd] hibernation et physlock

Message par benjarobin »

Quel est la sortie de : tree /etc/systemd/system
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Torlik
Hankyu
Messages : 18
Inscription : dim. 09 mars 2014, 23:49

Re: [systemd] hibernation et physlock

Message par Torlik »

Voilà :
(le fichier lock-sleep.service c'est le unit que j'ai crée)

Code : Tout sélectionner

a@b ~ $ tree /etc/systemd/system
/etc/systemd/system
├── dbus-org.freedesktop.NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
├── dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service
├── getty.target.wants
│   └── getty@tty1.service -> /usr/lib/systemd/system/getty@.service
├── lock-sleep.service
├── multi-user.target.wants
│   ├── dhcpcd@enp0s25.service -> /usr/lib/systemd/system/dhcpcd@.service
│   ├── NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
│   ├── ntpd.service -> /usr/lib/systemd/system/ntpd.service
│   ├── remote-fs.target -> ../../../../usr/lib/systemd/system/remote-fs.target
│   └── sshd.service -> /usr/lib/systemd/system/sshd.service
└── NetworkManager-dispatcher.service -> /dev/null

2 directories, 10 files
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd] hibernation et physlock

Message par benjarobin »

Pourquoi tu parles de lock-sleep.service et de hibernate.service ?
De plus tu n'as pas activé lock-sleep.service, donc cela ne risque en effet pas de fonctionner

Sinon tu ne devrait jamais avoir NetworkManager.service ainsi que dhcpcd@enp0s25.service activé en même temps !
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Torlik
Hankyu
Messages : 18
Inscription : dim. 09 mars 2014, 23:49

Re: [systemd] hibernation et physlock

Message par Torlik »

J'ai désactivé lock-sleep.service comme il ne marchait pas mais je l'avais bien activé.
Parce que dans la conf j'ai mit ça :

Code : Tout sélectionner

WantedBy=hibernate.target
Sur le chan on m'a dit de vérifier le service hibernate du coup. Donc j'en ai parlé.

Bizarre pour le réseau en effet... Networkmanager pour le wifi et dhcpd pour le rj... Je regarderais ça

edit : je t'ai refais la sortie avec le service enable :

Code : Tout sélectionner

/etc/systemd/system
├── dbus-org.freedesktop.NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
├── dbus-org.freedesktop.nm-dispatcher.service -> /usr/lib/systemd/system/NetworkManager-dispatcher.service
├── getty.target.wants
│   └── getty@tty1.service -> /usr/lib/systemd/system/getty@.service
├── hibernate.target.wants
│   └── lock-sleep.service -> /etc/systemd/system/lock-sleep.service
├── lock-sleep.service
├── multi-user.target.wants
│   ├── dhcpcd@enp0s25.service -> /usr/lib/systemd/system/dhcpcd@.service
│   ├── NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service
│   ├── ntpd.service -> /usr/lib/systemd/system/ntpd.service
│   ├── remote-fs.target -> ../../../../usr/lib/systemd/system/remote-fs.target
│   └── sshd.service -> /usr/lib/systemd/system/sshd.service
└── NetworkManager-dispatcher.service -> /dev/null

3 directories, 11 files
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd] hibernation et physlock

Message par benjarobin »

Et donc quelle est la sortie en sortie de veille de :

Code : Tout sélectionner

systemctl status -l lock-sleep.service
Mais je crois comprendre le problème, le service n'a pas accès à Xorg...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Torlik
Hankyu
Messages : 18
Inscription : dim. 09 mars 2014, 23:49

Re: [systemd] hibernation et physlock

Message par Torlik »

Code : Tout sélectionner

● lock-sleep.service - Lock session
   Loaded: loaded (/etc/systemd/system/lock-sleep.service; enabled)
   Active: inactive (dead) since mer. 2014-04-16 13:28:14 CEST; 7h ago
  Process: 28805 ExecStart=/usr/bin/physlock -d (code=exited, status=0/SUCCESS)
 Main PID: 28805 (code=exited, status=0/SUCCESS)

avril 16 13:28:14 faab systemd[1]: Starting Lock session...
avril 16 13:28:14 faab systemd[1]: Started Lock session.
avril 16 13:28:14 faab physlock[28805]: physlock: error: could not read from console: Input/output error
t'as une solution ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd] hibernation et physlock

Message par benjarobin »

Bon déjà est ce que cela fonctionne si tu lances physlock depuis une console ? En utilisateur et en root ?
Je crains que tu n'es pas compris à quoi servait physlock (ou je n'ai rien compris)...
Si j'ai bien compris cela permet d'éviter de switcher de tty et permet aussi de se connecter depuis un tty. Bref je ne vois pas en quoi cela répond à ton besoin.

Tu as slim lock par exemple, mais il doit bien y en avoir d'autre...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Torlik
Hankyu
Messages : 18
Inscription : dim. 09 mars 2014, 23:49

Re: [systemd] hibernation et physlock

Message par Torlik »

Oui avec la commande dans le terminal ça marche

Et non tu n'as rien compris :
Control physical access to a linux computer by locking all of its virtual terminals / consoles.

physlock is an alternative to vlock, it is equivalent to `vlock -an'. It is written because vlock blocks some linux kernel mechanisms like hibernate and suspend and can therefore only be used with some limitations. physlock is designed to be more lightweight, it does not have a plugin interface and it is not started using a shell script wrapper.
https://github.com/muennich/physlock

je veux locker ma session lorsque j'hiberne (fermeture de capot) pour qu'au boot une demande de mot de passe soit faite sachant que je n'ai pas de gestionnaire de login, je passe par le tty. (bis)
Torlik
Hankyu
Messages : 18
Inscription : dim. 09 mars 2014, 23:49

Re: [systemd] hibernation et physlock

Message par Torlik »

Personne ?

j'ai tenté de le lancer dans handler.sh sans effet également
Avatar de l’utilisateur
hansi
Elfe
Messages : 508
Inscription : ven. 08 oct. 2010, 21:11

Re: [systemd] hibernation et physlock

Message par hansi »

Salut,

J'ai le même problème... Contourné bêtement car Xfce utilise un fichier xflock4 qui s'occupe de lancer les "lockers" qu'il reconnait, suffit donc d'ajouter une ligne dans le fichier mais c'est vrai que c'est particulièrement reulou qu'il ne soit pas simple de le faire avec ce satané systemd :roll:

Code : Tout sélectionner

Je crains que tu n'es pas compris à quoi servait physlock (ou je n'ai rien compris)...
Si j'ai bien compris cela permet d'éviter de switcher de tty et permet aussi de se connecter depuis un tty. Bref je ne vois pas en quoi cela répond à ton besoin.

Tu as slim lock par exemple, mais il doit bien y en avoir d'autre...
Le problème de Slimlock et consors c'est que tu peux quand même switcher de TTY quand l'ordi est verrouillé, voire même lancer une séquence SysRQ... Vachement efficace comme moyen de verrouillage ! :lol:
Combattu souvent, battu parfois, abattu jamais ! (François de Charette)
Torlik
Hankyu
Messages : 18
Inscription : dim. 09 mars 2014, 23:49

Re: [systemd] hibernation et physlock

Message par Torlik »

Je tourne sous un tiling :/

Sérieusement personne qui saurait comment procéder ?
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd] hibernation et physlock

Message par benjarobin »

Si tu te connectes en root de cette manière, et que tu lance physlock, est ce que cela fonctionne :

Code : Tout sélectionner

$ command su -
# /usr/bin/physlock -d
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Torlik
Hankyu
Messages : 18
Inscription : dim. 09 mars 2014, 23:49

Re: [systemd] hibernation et physlock

Message par Torlik »

oui cela marche
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd] hibernation et physlock

Message par benjarobin »

Bon je n'ai pas trouvé de solution propre... Je ne comprend pas pourquoi je dois passer par un script intermediaire...

Service: /etc/systemd/system/lock-sleep@.service

Code : Tout sélectionner

[Unit]
Description=Lock session
Before=sleep.target suspend.target hibernate.target

[Service]
Type=forking
ExecStart=/usr/bin/su --login %I -c /usr/share/physlock/physlockd

[Install]
WantedBy=sleep.target suspend.target hibernate.target
Avec /usr/share/physlock/physlockd

Code : Tout sélectionner

#!/bin/bash

/usr/bin/physlock -d
Puis activer le tout :

Code : Tout sélectionner

chmod +x /usr/share/physlock/physlockd
systemctl enable lock-sleep@benjarobin.service
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [systemd] hibernation et physlock

Message par FoolEcho »

benjarobin a écrit :Je ne comprend pas pourquoi je dois passer par un script intermediaire...
Ça ne fonctionne pas en protégeant la commande, ExecStart=/usr/bin/su --login %I -c "physlockd -d" (ça devrait :? ) ?
«The following statement is not true. The previous statement is true.» :nage:
Torlik
Hankyu
Messages : 18
Inscription : dim. 09 mars 2014, 23:49

Re: [systemd] hibernation et physlock

Message par Torlik »

Salut,
J'ai suivi tes explications et malheureusement ça ne marche pas. Voilà les sorties sur les services après sortie d'hibernation :
torlik@faab ~ $ sudo systemctl status lock-sleep@hibernate.service
lock-sleep@hibernate.service - Lock session
Loaded: loaded (/etc/systemd/system/lock-sleep@.service; enabled)
Active: failed (Result: exit-code) since mer. 2014-04-30 00:26:07 CEST; 57s ago
Process: 600 ExecStart=/usr/bin/su --login %I -c /usr/share/physlock/physlockd (code=exited, status=1/FAILURE)

avril 30 00:26:07 faab systemd[1]: Starting Lock session...
avril 30 00:26:07 faab su[600]: su: l'identifiant hibernate n'existe pas.
avril 30 00:26:07 faab systemd[1]: lock-sleep@hibernate.service: control process exited, code=exited status=1
avril 30 00:26:07 faab systemd[1]: Failed to start Lock session.
avril 30 00:26:07 faab systemd[1]: Unit lock-sleep@hibernate.service entered failed state.
torlik@faab ~ $ sudo systemctl status lock-sleep@sleep.service
lock-sleep@sleep.service - Lock session
Loaded: loaded (/etc/systemd/system/lock-sleep@.service; enabled)
Active: failed (Result: exit-code) since mer. 2014-04-30 00:26:07 CEST; 1min 8s ago
Process: 601 ExecStart=/usr/bin/su --login %I -c /usr/share/physlock/physlockd (code=exited, status=1/FAILURE)

avril 30 00:26:07 faab systemd[1]: Starting Lock session...
avril 30 00:26:07 faab systemd[1]: lock-sleep@sleep.service: control process exited, code=exited status=1
avril 30 00:26:07 faab systemd[1]: Failed to start Lock session.
avril 30 00:26:07 faab systemd[1]: Unit lock-sleep@sleep.service entered failed state.
avril 30 00:26:07 faab su[601]: su: l'identifiant sleep n'existe pas.
torlik@faab ~ $ sudo systemctl status lock-sleep@suspend.service
lock-sleep@suspend.service - Lock session
Loaded: loaded (/etc/systemd/system/lock-sleep@.service; enabled)
Active: inactive (dead)
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd] hibernation et physlock

Message par benjarobin »

Je te conseil de relire ce que j'ai écrit... Il faut mettre ton nom d'utilisateur, benjarobin est mon nom d'utilisateur...
Le status doit être demandé avec l'argument après le @...
Je te conseil de faire le ménage dans les liens symboliques que tu as du créé...
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Torlik
Hankyu
Messages : 18
Inscription : dim. 09 mars 2014, 23:49

Re: [systemd] hibernation et physlock

Message par Torlik »

Ok désolé, je pensais que c'était optionnel.. merci beaucoup ça marche niquel :chinois:

Mais du coup je me retrouve avec cette erreur là ;
https://bugs.archlinux.org/task/38486

Juste après le Unlock [..]
je fais entrer et je peux taper mon mdp. Bizarre ?
Avatar de l’utilisateur
hansi
Elfe
Messages : 508
Inscription : ven. 08 oct. 2010, 21:11

Re: [systemd] hibernation et physlock

Message par hansi »

Salut,

Pour info maintenant ça fonctionne correctement :

Code : Tout sélectionner

# nano /etc/systemd/system/physlock@.service
[Unit]
Description=Lock X session using physlock
Before=sleep.target

[Service]
User=%I
Type=forking
ExecStart=/usr/bin/physlock -ds

[Install]
WantedBy=sleep.target

# systemctl enable physlock@nomutilisateur

# reboot
Combattu souvent, battu parfois, abattu jamais ! (François de Charette)
Répondre