ubuntuusers.de

atime mit udev

Status: Ungelöst | Ubuntu-Version: Xubuntu 12.04 (Precise Pangolin)
Antworten |

oha123

Anmeldungsdatum:
12. November 2012

Beiträge: Zähle...

Guten Tag,

Bei mir werden USB Devices unter /media/<Label> automatisch mit dem einstöpseln montiert.

Allerdings möchte ich die mit atime einhängen, da mir access time wichtig ist.

Wie stell ich das an? Ist dafür udev veantwortlich?

ls -l /etc/udev/rules.d
total 16
-rw-r--r-- 1 root root  597 Sep  5 19:11 10-vboxdrv.rules
-rw-r--r-- 1 root root  863 Aug 15 22:19 70-persistent-cd.rules
-rw-r--r-- 1 root root  484 Aug 15 22:19 70-persistent-net.rules
-rw-r--r-- 1 root root 1157 Apr  5  2012 README

Wo muss ich da drehen?

Hat jemand 'ne Idee?

Danke und Grüße

Benno-007

Anmeldungsdatum:
28. August 2007

Beiträge: 29240

Wohnort: Germany

Willkommen!

In /lib/udev/rules.d/ sind noch mehr, aber auch dort finde ich die entsprechende Stelle nicht - vielleicht jemand anderes. Da ich das aber schon mal las, frag ich mal Tante Google.

https://help.ubuntu.com/community/UsingUUID

Sieht so aus, als ob ein Label anstatt UUID genommen wird, wenn man eins vergeben hat. Beantwortet aber nicht konkret deine Frage. Man könnte nun natürlich auf die Idee kommen, einfach das Label dazu zu missbrauchen, dort stets die atime als Label zu setzen. Beispiel für Stick sdb mit Partition sdb1:

sudo mlabel -i /dev/sdb1 ::"Mein_Label"

ersetzen durch

sudo mlabel -i /dev/sdb1 ::"$(ls -lu /dev/sdb | awk '{print $7}')"

Das ist natürlich noch manuell - wäre schön, wenn man das in udev automatisieren könnte.

Ansonsten könnte das ein Script im Hintergrund erledigen, welches eine Endlosschleife beinhaltet und in rc.local gestartet wird:

1
2
3
4
5
6
7
8
#!/bin/bash
while true; do
  for i in sd{b..z}; do
    # geht davon aus, dass jeder Stick als 1 gemountet wird, z.B. sdb1, sdc1...
    # auch wird von FAT-Dateisystem ausgegangen
    if [ -e /dev/sd"$i" ]; then mlabel -i /dev/sd"$i"1 ::"$(ls -lu /dev/sd"$i" | awk '{print $7}')"; fi
  done
done

Nicht alles komplett getestet...mangels Testumgebung. Auch müsste man noch einen remount einfügen, um das Label zu sehen. Der Stick (je nach Modell) darf beim umount jedoch nicht den Strom verlieren...

Desweiteren würde hier dauernd das Label neu gesetzt, das müsste man auf einmal beschränken, z.B. mit einem Speichern der gesetzten Werte als Variable und Überprüfung.

Die "Formel" zur Zeitermittlung in $() könnte man aber so auch in udev einsetzen, wenn man die richtige Regel ausfindig macht und entsprechend von UUID/ Label auf Zeit umstellt.

Habe für heute allerdings genug damit gespielt. Und hoffe, du kannst selber was damit anfangen oder dir jemand bei udev helfen.

Grüße, Benno

Edit: Oder du legst mal eine neue Regel an, die die alte überschreiben soll. Dazu könnte man eine der "Vorlagen" anpassen und neu abspeichern. Wie genau, würde mich viel Zeit kosten bzw. hat mich das Durchsehen der USB-Regeln schon Zeit gekostet und was besonders tolles war nicht dabei... Im Wiki bei udev und in der Manpage steht ja noch mehr dazu, wie man das anlegt und anpasst.

Edit 2: Beispiel: /etc/udev/rules.d/70-usb-stick.rules

SUBSYSTEMS=="usb", KERNEL=="sd?1", SYSFS{serial}=="ABCDEF012345", SYMLINK+="$(ls -lu /dev/sd"$i" | awk '{print $7}')"

In dem Fall mit fester Seriennummer des Sticks, also nur bekannten. Wobei die Frage ist, ob die Shell darin ausgewertet wird, also die Zeit...da es ja nun doch kein Shellscript ist.....

Antworten |