Anzeige:
Ergebnis 1 bis 11 von 11

Thema: udev daemon installieren und starten

  1. #1
    Registrierter Benutzer
    Registriert seit
    06.02.2007
    Beiträge
    10

    udev daemon installieren und starten

    hallo,

    ich möchte zwecks hotplug-in Funktionilität den udev daemon installieren und starten. Hat hiermit jemand bereits Erfahrungen?

    System Atmel At91SAM9261, Kernel 2.6.14

    gruß

    cv

  2. #2
    Registrierter Benutzer
    Registriert seit
    16.06.2003
    Beiträge
    73
    Hi,

    könntest du deine Frage etwas konkretisieren, weil ich jetzt nicht eine komplette udev Anleitung tippen möchte.
    Vielleicht nur kurz:

    - udev übersetzen und installieren

    Dann in den Startskripten irgendwo beim booten (also recht weit vorne):

    - /dev als tmpfs mounten
    - udevd mit Option --daemon starten
    - Mit udevtrigger Device triggern die schon vor dem udevd start angemeldet wurden
    - Mit udevsettle warten bis alle Event verarbeitet wurden.

    Alle Devices die nach dem Start von udevd angemeldet werden, werden vom udev auch automatisch eingerichtet.
    Besonderheiten für Devicenamen kannst du dann in

    /etc/udev/rules.d/50-udev.rules

    hinterlegen.

    Gruß

    almoeli

  3. #3
    Registrierter Benutzer
    Registriert seit
    06.02.2007
    Beiträge
    10
    Hallo,

    im Prinzip möchte ich einfach nur die Plug and Funktionalität für USB MSD programmieren, d.h. anstatt das "vfat" Filesystem manuell zu mounten, soll das am USB Bus erkannte Gerät automatisch gemountet bzw unmountet werden.
    Mein erster Ansatz war, hier mir dem udev daemon zu arbeiten, allerdings versuche ich jetzt das Ganze mittels Hotplug Events zu implementieren.
    Nach meinem Veständnis muß ich dazu nur ein Skript mit z.B dem Inhalt "mount /mnt/disk1" erstellen und in ein Verzeichnis unterhalb "etc/hotplug" plazieren.
    Hast du damit eventuell auch Erfahrungen bzw. liege ich mit diesem Ansatz richtig?

    Gruß

    cv

  4. #4
    Registrierter Benutzer
    Registriert seit
    16.06.2003
    Beiträge
    73
    Hi,

    ja, USB Hotplug kannst du nur mit dem Hotplug Mechanismus verarbeiten. udev ist hier nicht geeignet.
    Der Kernel ruft im Falle eines Hotplug fest das Programm (oder Shellskript) /sbin/hotplug auf. Dieses Skript kann dann weitere Aktionen anstoßen. Je nachdem was du in /sbin/hotplug hinterlegst (da gibts ja jede Menge vorgefertigte Skripten ein möglichst schlankes langt dir wahrscheinlich).
    Damit das Skript ungefähr weiß was los ist, bekommt es einige Environment Variablen mit auf den Weg:

    ACTION (Werte 'add' oder 'remove')
    DEVPATH (Pfad zur Devicedatei)
    SUBSYSTEM (Subsystem des Kernels z.B. 'usb')

    Für usb Geräte gibts ausserdem:
    DEVICE
    PRODUCT
    TYPE
    INTERFACE
    MODALIAS

    Wenn du wissen willst was da genau drinsteht schau im Kernel im Source drivers/usb/usb.c Funktion usb_hotplug nach.
    Noch ein paar Links wo du dir was abgucken kannst:
    Das Diet-Hotplug Packet (schlankes leicht verständliches hotplug Skript)

    http://sourceforge.net/project/showf...ckage_id=26759

    Und was für automatische USB mounten:

    http://users.actrix.co.nz/michael/usbmount.html

    Gruß

    almoeli

  5. #5
    Registrierter Benutzer
    Registriert seit
    06.02.2007
    Beiträge
    10
    Hallo,

    Danke erstmal für die Antworten. Ich habe mit die Sourcen untern deinen Links angeschaut, mein Problem ist allerdings, dass es sich bei mir um eine Embedded Anwendung handelt, daher funktioniert ;denke ich, das Beispiel http://users.actrix.co.nz/michael/usbmount.html nicht.
    Ein Skript im Verzeichnis /sbin/hotplug exestiert beim mit bereits. Dies führt dann im Falle von USB Geräten alle skripte im Verzeichnis /etc/hotplug.d/usb aus. Allerdings ist dies in meinem Fall leer.
    Kannst du mir hierfür ein Beispiel geben bzw. welche Sourcen kann ich las Referens nuzen?

    Gruß

    cv

  6. #6
    Registrierter Benutzer
    Registriert seit
    16.06.2003
    Beiträge
    73
    Genau hierfür ist usb-mount ein gutes Beispiel. Natürlich kann man das nicht 1 zu 1 übernehmen, aber das beigelegte mount Skript eignet sich super als Inspiration für ein Skript welches man dann selber erstellt. Zumal man bei USB Sticks doch ne ganze Menge beachten muss und das Skript zeigt einem sehr gut, wo man die Informationen über Partitionierung Dateisystem usw. herkriegt und es ist sauber strukturiert.
    Ich hab das usbmount auch für eine Embedded Anwendung genommen und halt nur das verwendet, was ich gebraucht habe. Danach hatte man dann Plug&Play für USB Sticks.

    Gruß almoeli

  7. #7
    Registrierter Benutzer
    Registriert seit
    06.02.2007
    Beiträge
    10
    Ok, danke. Dann werde ich versuchen es entsprechend anzupassen.
    Weitere Frage wäre noch wie kann ich prüfen ob ein entprechendes Event, hier USB, ausgelöst wurde, ich meine 1. "/sbin/hotplug" ausgeführt wurde (proc/sys/kernel/hotplug ist entsprechend gesetzt) und 2. Das richtige Argument, hier USB, übergeben wurde?
    Ich habe bereits versucht die Skripte mittels "echo" zu debuggen, leider erfolglos.

    Mein Gerät wird, wie angesprochen,wird bereits automatisch vom USB Host Controller erkannt, d.h. ich kann nach Plug In manuell mounten.

    Gruß

    cv

  8. #8
    Registrierter Benutzer
    Registriert seit
    16.06.2003
    Beiträge
    73
    Hi,

    läuft auf deinem System der Syslog? Dann kannst du mit dem Shell Kommando 'logger' (funktioniert wie echo) Messages in /var/log/messages schreiben und dort dann lesen was passiert ist. Läuft kein Syslog, kommen die Ausgaben wohl an der Konsole raus.
    Willst dein Skript wirklich nur an ein festes immer gleich geartetes USB Gerät anpassen, so kannst du wahrscheinlich viel von dem usbmount Skript vergessen. Dieses versucht nämlich beliebige USB Storage Geräte zu mounten.
    Und dazu muss man Informationen über dessen Partitionierung und Dateisysteme zusammensammeln. Bei dir langt dann wohl der feste mount mit evtl. ein bisschen Framework drumrum.

    Gruß

    almoeli

  9. #9
    Registrierter Benutzer
    Registriert seit
    06.02.2007
    Beiträge
    10
    Hallo,

    falls ich in meinem usb.agent skript System Calls wie z.B. mount oder sleep durchführe, wird das Skript verlassen und das entsprechende Kommando nicht ausgeführt. Kennst du hierfür vielleicht die Ursache?
    ICh verwende die Synatx wie im "usb-mount" Beispiel.
    Shell Kommandos funktionieren.

    gruß

    cv

  10. #10
    Registrierter Benutzer
    Registriert seit
    16.06.2003
    Beiträge
    73
    Hi,

    was meinst du mit System Calls. Direkte System Calls aus einem Shell Skript? Wie geht das denn? Da sollte ja immer ein Programm drumrum sein.
    Erklär mal ein bisschen genauer evtl. auch mit Beispiel sonst kapier ich das glaub ich nicht was da genau vorgeht.

    Gruß

    almoeli

  11. #11
    Registrierter Benutzer
    Registriert seit
    06.02.2007
    Beiträge
    10
    Hallo,

    erstmal vielen Dank für deine Hilfe, ich konnte das Problem lösen. Das USB event war einfach zu schnell, d.h der "mount" Befehl wurde ausgeführt ,bevor der SCSI Treiber initialisiert war. Ich habe jetzt einen "sleep" von 4s eingebaut und alles läuft perfekt. Zusätzlich hatte ich noch ein paar Bugs im Skript, das war die Ursache für den Absturz des Skripts beim Mount/Umount Befehl.

    Gruß

    cv

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •