systemd, eine externe HD und mpd

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

systemd, eine externe HD und mpd

Beitrag von scientific » 03.09.2014 12:31:23

Hi Leute!

Ich hoffe, ich bin mit meinem Problem mit systemd hier richtig...

Aufgabenstellung:
Ich habe auf einer externen HD einen ganzen Haufen Musik, einen Laptop mit Debian Wheezy und systemd und darauf mpd installiert.

Ich komme aber mit systemd nicht ganz klar. Ich möchte gerne folgendes realisieren:
1) Wenn ich die externe HD einstecke soll sie mit cryptsetup und einem keyfile entsperrt werden.
2) Die entsperrte Partition wird am entsprechenden Mountpoint eingehängt
3) die mpd-Bibliothek wird aktualisiert

Mit einem Menüeintrag (hier fvwm) wird die Platte ausgehängt und mittels cryptsetup luksClose wieder zugesperrt. Dazu muss
4) der mpd gestoppt werden
5) die Partition der externen HD ausgehängt,
6) der mpd wieder gestartet,
7) die Partition mittels cryptsetup luksClose gesperrt werden.

1-3) habe ich schon mit der Anleitung von http://mfuchs.org/linux/systemd-startin ... lugged-in/ realisiert. Aber bei 4-7) stehe ich an.
Wie bewege ich systemd die einzelnen units zu stoppen? Wie müsste ggfs. der UDEV-Eintrag lauten, damit cryptsetup@media.service gestoppt wird, wenn die Platte entfernt wird?

Und warum reicht es nicht, "

Code: Alles auswählen

systemctl stop cryptsetup@media.service
" aufzurufen und entsprechend wird zuerst der mpd gestoppt, dann die partition ausgehängt und dann die platte versperrt?

Ein manuelles

Code: Alles auswählen

/lib/systemd/systemd-cryptsetup detach 'media'
liefert bloß

Code: Alles auswählen

Failed to deactivate: Invalid argument
:-/

Ich steh bei systemd leider echt noch ziemlich an.

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

dufty2
Beiträge: 1714
Registriert: 22.12.2013 16:41:16

Re: systemd, eine externe HD und mpd

Beitrag von dufty2 » 03.09.2014 19:57:00

Ok, eine ketzerische Frage:
Was passiert, wenn man die Platte einfach abzieht (und später wieder dransteckt)?

Oder anders gefragt: Will man diesen Menueintrag wirklich?

Benutzeravatar
smutbert
Beiträge: 8350
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: systemd, eine externe HD und mpd

Beitrag von smutbert » 03.09.2014 20:07:46

Code: Alles auswählen

systemctl stop mpd.service
stoppt den mpd. Wie man ihn wieder startet, kannst du leicht erraten. (das .service hinter mpd ist bei jessie nicht mehr notwendig, aber ich glaube bei wheezy schon noch.)

Mit dem Verschlüsselungsteil habe ich keine Übung, da schweige ich lieber.

Mir ist allerdings auch nicht ganz klar was du bezweckst. Speicherst du die Musik auf dem verschlüsselten Dateisystem?

dufty2
Beiträge: 1714
Registriert: 22.12.2013 16:41:16

Re: systemd, eine externe HD und mpd

Beitrag von dufty2 » 03.09.2014 20:16:48

Wenn ich sein Anliegen richtig verstanden habe, will er die Punkte 4 bis 7 auf einmal - per Knopdruck - erledigt wissen - und nicht "4 Buttons einzeln" drücken.
Die externe Platte vergrößert einfach das Musikangebot: Platte ran - 2000 Titel mehr zum Abspielen, Platte raus - 2000 weniger. Oder so ähnlich ...

Benutzeravatar
smutbert
Beiträge: 8350
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: systemd, eine externe HD und mpd

Beitrag von smutbert » 03.09.2014 21:12:53

Ja, aber ein Skript ist dazu ja sowieso notwendig. Da schreibt man eben die 4 Befehle des zweiten Punktes hintereinander hinein. Ich stell mir das ungefähr so vor

Code: Alles auswählen

#!/bin/sh
systemctl stop mpd.service 
umount /mnt/pfad
systemctl start mpd.service
cryptsetup luksClose my_encrypted_volume
und vielleicht sicherheitshalber an jeden Befehl noch etwas wie

Code: Alles auswählen

|| { echo "Fehler: konnte yxz nicht stoppen/starten/unmounten" ; exit 1 }
anhängen damit das Skript im Fehlerfall auch mit einer Meldung und einem Exitstatus !=0 abbricht. Das Skript kann man dann ja über einen Menüpunkt aufrufen.
Zuletzt geändert von smutbert am 03.09.2014 21:30:26, insgesamt 1-mal geändert.

dufty2
Beiträge: 1714
Registriert: 22.12.2013 16:41:16

Re: systemd, eine externe HD und mpd

Beitrag von dufty2 » 03.09.2014 21:26:37

Der Sinn von systemd - so wenigstens mein Verständnis - ist es, diese ganzen Abhängigskeitsbeziehungen automatisch von selbst zu erledigen, ansonsten könnte ich gleich bei init-SCRIPTEN bleiben ...

artemis
Beiträge: 447
Registriert: 21.12.2005 23:11:11

Re: systemd, eine externe HD und mpd

Beitrag von artemis » 04.09.2014 11:31:48

dufty2 hat geschrieben:Der Sinn von systemd - so wenigstens mein Verständnis - ist es, diese ganzen Abhängigskeitsbeziehungen automatisch von selbst zu erledigen, ansonsten könnte ich gleich bei init-SCRIPTEN bleiben ...
Aber es gibt ja keine direkten Abhängigkeiten. MPD läuft auch ohne die Festplatte. Und cryptsetup auch ohne MPD... was soll systemd da machen? Und unmounten wird man ja wohl immer manuell müssen.

Eine andere Idee ist, die Platte immer "ro" einbinden und dann einfach abziehen. Da könnten dann udev Regeln den Rest machen (MPD neu starten usw...)

scientific
Beiträge: 3022
Registriert: 03.11.2009 13:45:23
Lizenz eigener Beiträge: Artistic Lizenz
Kontaktdaten:

Re: systemd, eine externe HD und mpd

Beitrag von scientific » 08.09.2014 13:30:10

Also...

Warum ich Musik auf einer externen HD habe, und warum diese verschlüsselt ist, ist nicht Teil der Diskussion, aber Randbedingung für die gestellte Aufgabe...

Da systemd ja unweigerlich kommt, beschäftige ich mich gerade intensiv damit um das Teil besser kennenzulernen. Ansich habe ich ja eine Lösung per Skript die auch gut funktioniert. Nur möchte das eben auch mit systemd lösen um zu verstehen, wie systemd funktioniert.

Ich habe im Menü meines Windowmanagers (fvwm) einen abhängigen Menüeintrag mit dem ich die Platte aushängen kann. Das funktioniert aber eben nur wenn mpd nicht mehr auf die Platte zugreift. Dazu muss ich den mpd stoppen.

Auf der Platte ist grundsätzlich mein Backup des einen Rechners drauf. Auf dem hab ich das so gelöst, dass systemd die Platte aufsperrt, einhängt und ein Unterverzeichnis davon an einem anderen Mountpunkt mittels "bind" einhängt. Ich teste da gerade die automount-Funktion von systemd. Und die funktioniert schon fast zufriedenstellen...

Greife ich z.B. per ls auf /backup zu, wird die (bereits eingesteckte) Platte ensperrt, auf /var/cache/backup gemountet und davon ein Unterverzeichnis auf /backup (das ist der aktuellste Datensicherungspunkt) eingehängt.
Im Menü habe ich dann den Punkt "Backup aushängen". Dieser Menüeintrag führt

Code: Alles auswählen

sudo systemctl stop systemd-cryptsetup@mars.servie
aus.
Systemd bekommt also den Auftrag die Platte wieder zu versperren. Dazu wird zuerst /backup, dann /var/cache/backup ausgehängt und dann mit cryptsetup die Platte versperrt. Funktioniert prima. (fast... aber das Problem in einem anderen Thread...)

Wenn jetzt aber z.B. mpd auf das Musikverzeichnis aus dem Backup zugreift (warum auch immer... ist Teil einer anderen Lösung!!) hängt es natürlich beim unmounten... deshalb müsste mpd im Bedarfsfalle gestoppt werden, dann ein umount durchgeführt und dann mpd wieder gestartet werden... Die Frage ist... kann ich das systemd beibringen? Und wenn ja, wie?

lg scientific
dann putze ich hier mal nur...

Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie

auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main

Antworten