Page 1 sur 1

[systemd] hibernation et physlock

Publié : mar. 15 avr. 2014, 14:13
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:

Re: [systemd] hibernation et physlock

Publié : mar. 15 avr. 2014, 15:45
par benjarobin
Quel est la sortie de : tree /etc/systemd/system

Re: [systemd] hibernation et physlock

Publié : mer. 16 avr. 2014, 10:08
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

Re: [systemd] hibernation et physlock

Publié : mer. 16 avr. 2014, 11:09
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 !

Re: [systemd] hibernation et physlock

Publié : mer. 16 avr. 2014, 11:25
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

Re: [systemd] hibernation et physlock

Publié : mer. 16 avr. 2014, 13:32
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...

Re: [systemd] hibernation et physlock

Publié : mer. 16 avr. 2014, 20:39
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 ?

Re: [systemd] hibernation et physlock

Publié : mer. 16 avr. 2014, 21:09
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...

Re: [systemd] hibernation et physlock

Publié : mer. 16 avr. 2014, 21:29
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)

Re: [systemd] hibernation et physlock

Publié : dim. 20 avr. 2014, 01:29
par Torlik
Personne ?

j'ai tenté de le lancer dans handler.sh sans effet également

Re: [systemd] hibernation et physlock

Publié : sam. 26 avr. 2014, 12:40
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:

Re: [systemd] hibernation et physlock

Publié : lun. 28 avr. 2014, 10:49
par Torlik
Je tourne sous un tiling :/

Sérieusement personne qui saurait comment procéder ?

Re: [systemd] hibernation et physlock

Publié : lun. 28 avr. 2014, 11:40
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

Re: [systemd] hibernation et physlock

Publié : lun. 28 avr. 2014, 23:41
par Torlik
oui cela marche

Re: [systemd] hibernation et physlock

Publié : mar. 29 avr. 2014, 01:37
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

Re: [systemd] hibernation et physlock

Publié : mar. 29 avr. 2014, 10:41
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 :? ) ?

Re: [systemd] hibernation et physlock

Publié : mer. 30 avr. 2014, 00:29
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)

Re: [systemd] hibernation et physlock

Publié : mer. 30 avr. 2014, 10:05
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éé...

Re: [systemd] hibernation et physlock

Publié : mer. 30 avr. 2014, 19:52
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 ?

Re: [systemd] hibernation et physlock

Publié : sam. 18 avr. 2015, 21:33
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