[teilw. gelöst] Script in /etc/pm/sleep.d/ wird ignoriert

.Sun

Active member
Registriert
29 Aug. 2010
Beiträge
3.465
Code:
[xx@xx ~]$ cat /etc/pm/sleep.d/01-standby.sh 
#!/bin/bash
case $1 in
    hibernate)
        ;;
    suspend)
        truecrypt --force --dismount /dev/mmcblk0p1
        ;;
    thaw)
        ;;
    resume)
        sleep 20
        ;;
    *) echo "ERROR: called incorrectly."
        ;;
esac

Dieses Script wird bei mir unter Archlinux komplett ignoriert. Manuell ausführen lässt es sich, ebenso funktionieren die Befehle.
Hintergrund ist der, dass meine Sd nach einem suspend-to-ram immer re-mounted wird und ich dann keinen Zugriff mehr auf den Truecrypt-Teil habe. Daher wollte ich vor dem Standby dismounten und danach direkt wieder mounten. Hier wird mir leider ein Strich durch die Rechnung gemacht.

Funktioniert das besser mit dm-crypt (automatische (dis-)mounten nach einer Aktion)? Die SD dient quasi nur als Download-Ordner und wird so gut wie nie entfernt.


Lösung
 
Zuletzt bearbeitet:
Moin

In Systemskripten verwendet man immer absolute Pfadangaben, weil die Systemumgebung (PATH, etc.) nicht der eines Users entspricht.

RomanX
 
Hi,

Archs Implementierung von pm-utils ruft die Skripte in sleep.d/ beim Suspend/Resume nicht auf.
 
Sun das was der Linnrunner hier sagt hab ich dir im ICQ schon gesagt ....

Mit quaisi genau den identischen Worten.

@Roman X

Prinzipiell Stimme ich die zu. Aber eher aus der Begründung das beim laden des Sctipt gar kein path gesetzt ist. Ich wurde mir Gedanken machen wenn der user nen andere truecrypt hat als der root. Und doppelte binarys, zB eine fuern root und eine für user, mit unterschiedlich en Umfang gibt es nicht.

Unter arch ist das so das es gar keine shin bin Trennung mehr gibt. Die ist zwar.an CH auf dem Papier aber effektiv zeigt beides nach /usr/bin.

Gruesse
 
Sun das was der Linnrunner hier sagt hab ich dir im ICQ schon gesagt ....

Richtig. Und ich hatte gehofft jemand weiß dazu einen Ausweg. Die Scripte per Hand auszuführen ist nicht sehr komfortabel.

Den Quelltext hab ich im übrigen aus dem Wiki. Sowohl im DE als auch im ENG Wiki steht das (QText, Pfad) so :rolleyes:
 
Zuletzt bearbeitet:
Der Quelltext ist soweit auch i.O :)

Jo .. es gibt! wege und möglichkeiten. Danach hattest du aber nicht gefragt :p

Schau dir mal das tlp-sleep.service an welches nun im tlp-paket mit drin ist.

Dies kannst du unbenennen, den Scriptnamen anpassen, und dann zb /etc/eigenes_script/blafoo.sh ausführen lassen. Und in dem blafoo.sh steht alles drin was beim Standby/Resume gemacht werden soll :)
 
Code:
[Unit]
Description=dismount sdhc
Before=sleep.target

[Service]
ExecStart=/usr/bin/truecrypt --dismount /dev/mmcblk0p1

[Install]
WantedBy=sleep.target

Dismounten klappte auf anhieb.

Code:
[Unit]
Description=mount sdhc
After=suspend.target

[Service]
ExecStart=/usr/bin/truecrypt -t -k *keyfile* --non-interactive /dev/mmcblk0p1 /home/sun/SDHC/

[Install]
WantedBy=suspend.target

Hier tut sich aber gar nichts :confused:
 
Warum verwendest Du nicht einfach die getestete Vorlage aus TLP auf die dich blafoo hinwies?
Code:
[Unit]
Description=Unmout/mount sdhc upon supend/resume
Before=sleep.target
StopWhenUnneeded=yes

[Service]
User=%I
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/truecrypt --dismount /dev/mmcblk0p1
ExecStop=/usr/bin/truecrypt -t -k *keyfile* --non-interactive /dev/mmcblk0p1 /home/sun/SDHC/

[Install]
WantedBy=sleep.target

Wenn es damit immer noch nicht geht, solltest Du den Fehler in deinen Befehlen suchen.
 
In TLP habe ich noch nicht reingeguckt. Hatte es nach dem Post aber kurz mit dem kombinierten aus dem verlinkten Wiki probiert. Da tut sich auch nichts.

Das Mounten funktioniert ja im Prinzip... nur führt systemd es einfach nicht aus. Auch ein einfaches Öffnen des Hauptfensters wird nicht durchgeführt. (Oder muss dafür Environment=DISPLAY=:0 gesetzt sein?)

Update:

Code:
sun@T410s ~]$ cat /etc/systemd/system/resume\@.service 
[Unit]
Description=User suspend actions
After=suspend.target

[Service]
User=%I
Type=forking
Environment=DISPLAY=:0
ExecStart=/usr/bin/truecrypt -k /path/to/keyfile /dev/mmcblk0p1 /home/sun/SDHC/

[Install]
WantedBy=suspend.target

Code:
[sun@T410s ~]$ cat /etc/systemd/system/truecrypt-dismount-sdhc.service
[Unit]
Description=dismount sdhc 
Before=sleep.target

[Service]
User=%I
Type=oneshot
ExecStart=/usr/bin/truecrypt --dismount /dev/mmcblk0p1

[Install]
WantedBy=sleep.target

Funktioniert. Entscheidend ist Environment=DISPLAY=:0. Ohne das tut sich gar nichts. Es öffnet sich zwar auch kein Fenster (obwohl kein Textmodus und --non-interactive gesetzt wurden)...

In eine Datei hab ich es nicht bekommen, da --dismount sich nicht mit Environment=DISPLAY=:0 (oder mit forking?!) verträgt.

Bedanke mich für eure Hilfe.

Update2:
Wenn beide Services laufen, wird nur bei jedem 2. Resume gemounted. Ist das dismounten deaktiviert (ich also manuell discmounte) habe ich keinen Fehler.
 
Zuletzt bearbeitet:
  • ok1.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen
Zurück
Oben