Hi,
ich habe da ein kleines problem,
wenn ich eine datei mittels cryptsetup mounte, also
losetup /dev/loop0 datei
cryptsetup luksOpen /dev/loop0 xy
mount /dev/mapper/xy /mnt/crypt
in diesem falle kann ich keinen direkten shutdown machen, bzw ich kann es doch, die letzte meldung ist
/ bussy
halt
und beim nächsten neustart wird das root datei system überprüft, da es nicht richtig ausgehangen wurde.
Das selbe problem, scheint auch ab und an aufzutrteten wenn man einfach, mittels losetup etwas gemountet hat, wobei das stark vom dateisystem abhängt, und auch wenn man den swap speicher, mittels losetup mal vergrößert hat.
Meine Idee war jetzt dieses script zu verwenden und automatisch mit in den shutdown prozess einzubeziehen, prinzipiel scheint es auch zu funktionieren, nur gibt es halt ne menge fehlermeldungen aus, da es nicht überprüft ob die dinge wirklich gemountet sind oder ob ein loop device wirklich benutzt wird.
So jetzt zu meiner frage kann dieses script irgendwie schädlich sein, oder kann ich es einfach mit als praktisch letztes laufen lassen (S49)
System ist ein aktuelles ubuntu 64bit.
gruß
robinx99
und hier noch das script
--------------------------
#!/bin/bash
for f in /dev/mapper/* ;
do
umount $f;
done;
for f in /dev/loop* ;
do
umount $f;
done;
swapoff -a
for f in /dev/mapper/* ;
do
cryptsetup luksClose $f;
done;
for f in /dev/loop* ;
do
losetup -d $f;
done;
------------------------
Linux 15.009 Themen, 106.826 Beiträge
Ich kann zu diesem Script nicht viel sagen, aber du müßtest eigentlich eine case Anweisung einfügen. Schau mal in die Scripte in /etc/init.d/ (bei Debian ) rein. Da ist immer so eine case Anweisung dabei:
case "$1" in
start)
start_it_up
;;
stop)
shut_it_down
;;
reload|force-reload)
reload_it
;;
restart)
shut_it_down
start_it_up
;;
*)
echo "Usage: /etc/init.d/$NAME {start|stop|reload|restart|force-reload}" >&2
exit 2
;;
esac
Der Parameter $1 ist der Parameter der von init diesem Script übergeben wird..
Diese Werte kann $1 annehmen:
start, stop, reload, force-reload, restart, * (alle anderen Werte)
Beginnt der Link mit S, übergibt init dem jeweiligen Script den "start" Parameter. Deshalb mußt du den "start" Paramter in diesem Script in einer case Anweisung auch auswerten.
Bei allen Links die mit K anfangen , übergibt init dem Script den "stop" Parameter, welchen du auch in diesem Scrip auswerten mußt.
Mit cryptsetup kenne ich mich als Debiananwender nicht aus. Wenn das Script beim shutdown ausgeführt wird, würde ich den Link mit K beginnen und im Script den stop Parameter auswerten.
Außerdem würde ich dieses Script ausführen , bevor das System anhält, damit das Dateisystem syncronisiert werden kann und Daten vom Speicher auf den Datenträger übertragen werden können.
Kennst du schon den Advanced Bash-Scripting Guide ?
http://www.tldp.org/LDP/abs/html/
Da ist auch die case Anweisung erklärt.
Diese Art der init - Scripte mit einer case Anweisung stammt ursprünglich von AT&T Unix und wird auch System V (römisch fünf) Style genannt.
PS: Bei Debian werden alle Dateisystem automatisch von einem Script unmounted, bevor das System runterfährt. Wieso mußt du selbst ein Script programmieren ?
Schau mal in das Script /etc/init.d/umountfs rein. Mit diesem Script werden alle Dateisysteme bei Debian automatisch unmounted, bevor der Rechner runterfährt.
