udev: Keine remove-Action?

28/03/2008 - 15:16 von Peter Mairhofer | Report spam
Hi,

Ich moechte eine externe USB Festplatte (sdX) in einen VServer
exportieren damit ich sie innerhalb des VServers mounten kann. Dazu muss
vom Host aus eine Devicefile innerhalb des VServers erstellt werden.

Ich habe eine Datei erstellt:

/etc/udev/rules.d/10-vserver.rules

mit dem Inhalt:

SUBSYSTEM=="block", KERNEL=="sd*1", SUBSYSTEMS=="usb", ATTRS{serial}
=="XL0000000139", RUN+="/usr/local/sbin/vserver-media.sh %k"

In /usr/local/sbin/vserver-media.sh steht folgendes:

#!/bin/bash

devfile=/var/lib/vservers/vserver1/dev/media

case "$ACTION"
in
add)
rm -f $devfile
mknod $devfile b $MAJOR $MINOR
chown root.root $devfile
chmod 600 $devfile
;;
remove)
rm -f $devfile
;;
esac

exit 0


Beim Hinzufuegen funktioniert das perfekt :-) Stoepsel ich die Platte an,
wird das Script aufgerufen, innerhalb des VServers die dev Datei erstellt
und ich kann die Platte mounten.

Lt. udev-Dokus, die ich im Internet gefunden habe, sollte es aber auch
eine ACTION=remove geben. Das ist sehr sinnvoll, denn ich moechte, dass
die Devicedatei wieder geloescht wird, wenn die Platte ausgestoepselt
wird. Ist ja auch klar, denn so kann es passieren, dass nach der
speziellen Platte eine andere eingesteckt wird, die dann die gleiche
Minor-Number hat und der VServer dann drauf zugreifen kann obwohl er
nicht soll!

Aber beim Abstoepseln der Platte wird das Script gar nie ausgefuehrt!
Ich habs auch schon mit ACTION=="remove" [...] probiert, aendert aber nix
dran.


Vergesse ich hier irgendwas oder macht das udev tatsaechlich nicht?


lg,
Peter
 

Lesen sie die antworten

#1 Josef Moellers
28/03/2008 - 16:02 | Warnen spam
Peter Mairhofer wrote:
Hi,

Ich moechte eine externe USB Festplatte (sdX) in einen VServer
exportieren damit ich sie innerhalb des VServers mounten kann. Dazu muss
vom Host aus eine Devicefile innerhalb des VServers erstellt werden.

Ich habe eine Datei erstellt:

/etc/udev/rules.d/10-vserver.rules

mit dem Inhalt:

SUBSYSTEM=="block", KERNEL=="sd*1", SUBSYSTEMS=="usb", ATTRS{serial}
=="XL0000000139", RUN+="/usr/local/sbin/vserver-media.sh %k"

In /usr/local/sbin/vserver-media.sh steht folgendes:

#!/bin/bash

devfile=/var/lib/vservers/vserver1/dev/media

case "$ACTION"
in
add)
rm -f $devfile
mknod $devfile b $MAJOR $MINOR
chown root.root $devfile
chmod 600 $devfile
;;
remove)
rm -f $devfile
;;
esac

exit 0


Beim Hinzufuegen funktioniert das perfekt :-) Stoepsel ich die Platte an,
wird das Script aufgerufen, innerhalb des VServers die dev Datei erstellt
und ich kann die Platte mounten.

Lt. udev-Dokus, die ich im Internet gefunden habe, sollte es aber auch
eine ACTION=remove geben. Das ist sehr sinnvoll, denn ich moechte, dass
die Devicedatei wieder geloescht wird, wenn die Platte ausgestoepselt
wird. Ist ja auch klar, denn so kann es passieren, dass nach der
speziellen Platte eine andere eingesteckt wird, die dann die gleiche
Minor-Number hat und der VServer dann drauf zugreifen kann obwohl er
nicht soll!

Aber beim Abstoepseln der Platte wird das Script gar nie ausgefuehrt!
Ich habs auch schon mit ACTION=="remove" [...] probiert, aendert aber nix
dran.


Vergesse ich hier irgendwas oder macht das udev tatsaechlich nicht?



Laß' mal udevmonitor mitlaufen. Der sagt Dir, was passiert.

These are my personal views and not those of Fujitsu Siemens Computers!
Josef Möllers (Pinguinpfleger bei FSC)
If failure had no penalty success would not be a prize (T. Pratchett)
Company Details: http://www.fujitsu-siemens.com/imprint.html

Ähnliche fragen