sysfs Probleme

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
florian
Posts: 10
Joined: Sat Dec 10, 2005 6:58 pm

sysfs Probleme

Post by florian »

Hallo zusammen,

ich habe ein wenig Probleme bei der Installation des iowarrior Moduls.
Mein System: Debian sarge mit linux-2.6.14.3
Ich habe sysfs im Kernel aktiviert und vermute, dass hier das Problem ist, denn das Skript make_nodes schlägt fehl mit folgenden Meldungen:

Code: Select all

creating Devicenodes for the iowarrior
mknod: `/dev/usb/iowarrior0': No such file or directory
mknod: `/dev/usb/iowarrior1': No such file or directory
mknod: `/dev/usb/iowarrior2': No such file or directory
usw.

Es gibt das Verzeichnis /dev/usb/ nicht. /dev/ selbst existiert und ich glaube die Devices für meine anderen USB Geräte sind:

Code: Select all

/dev/usbdev1.1
/dev/usbdev2.1
usw.

Kennt jemand dieses Problem und hat evtl. einen Lösungsvorschlag?

Vielen Dank
Florian
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

Ich würde einfach mal versuchen das Verzeichnis /dev/usb als root anzulegen:

Code: Select all

cd /dev
mkdir usb
dann sollte auch mknod in der Lage sein die entsprechenden Einträge für die iowarrior zu erzeugen.

Was du dann aber noch testen solltest, ist ob die Einträge auch nach einem reboot noch vorhanden sind. Irgendwo spukt mir im Hinterkopf herum, das es hier bei Debian ein Problem gab.

Eberhard
florian
Posts: 10
Joined: Sat Dec 10, 2005 6:58 pm

Post by florian »

Hallo!

Vielen Dank für diesen Tipp.

Ich hab das ganze versucht und, wie schon richtig vermutet, ist das Verzeichnis /dev/usb/ inkl. aller darin erzeugten Nodes nach dem nächsten reboot wieder weg.

Mir kommt diese Methode allerdings auch etwas "unnatürlich" vor, da ja die anderen USB Geräte auch keine Nodes in /dev/usb haben, sondern eben direkt in /dev liegen.

Viele Grüße,
Florian
wayoda
Posts: 362
Joined: Fri Dec 19, 2003 12:00 pm
Location: Wuppertal/Germany

Post by wayoda »

Hallo Florian,
als Alternative fällt mir dann noch ein, die devicenodes von udev erzeugen zu lassen. Der udevd-Dämon legt die nodes dynamisch an, wenn ein neues Gerät eingesteckt wird. Allerdings muß man dafür noch eine kleine Konfigurations-Datei erstellen. (siehe unten).

Zuerst einmal muß udev installiert sein. Ein Test hierfür ist z. B.

Code: Select all

wyd@rebooter:~> ps -C udevd
  PID TTY          TIME CMD
 1862 ?        00:00:01 udevd
wyd@rebooter:~>
Wenn bei der Ausgabe die Spalte PID nicht leer ist, läuft der udevd-Dämon, ansonsten müsste man das Paket udev noch installieren.
Die Konfigurationsdateien für die Geräte befinden sich normalerweise im Verzeichnis /etc/udev/rules.d.
Die Dateien in diesem Verzeichnis werden nun von udev eingelesen wenn ein neues Gerät eingesteckt wird. man udev zeigt dir die man-page in der die verschiedenen Optionen erklärt werden. Für den IOWarrior benutze ich eine Datei mit folgendem Inhalt:

Code: Select all

# Filename = 10-iowarrior.rules
# udev rules for iowarrior device nodes
SUBSYSTEM=="usb", KERNEL=="iowarrior[0-9]*", NAME="usb/iowarrior%n", GROUP="users", MODE="666"
Diese Datei ist also unter /etc/udev/rules.d/10-iowarrior.rules gespeichert. (Die 10 am Anfang ist wichtig weil alle Dateien in diesem Verzeichniss nach lexikalischer Sortierung abgearbeitet werden. Mit einer 10 am Anfang ist man da meist auf der sicheren Seite. )

Die GROUP und MODE Einträge stellen sicher, dass ein normaler user die Gerätedateien zum Lesen und Schreiben öffnen kann.

Nun sollte udev beim Einstecken eines IOWarriors automatisch die beiden Nodes /dev/usb/iowarrior0 und /dev/usb/iowarrior1 erzeugen. Nach dem Ausstecken werden diese Nodes dann auch wieder gelöscht. Probier das doch einfach mal aus.
florian wrote: Mir kommt diese Methode allerdings auch etwas "unnatürlich" vor, da ja die anderen USB Geräte auch keine Nodes in /dev/usb haben, sondern eben direkt in /dev liegen.
Prinzipiell ist es eigentlich egal, wo die Nodes angelegt werden. Hauptsache das Verzeichnis /dev ist bereits vorhanden. Allerdings ist der Pfad /dev/usb/iowarriorxx für die Verwendung der Iowkit-library fest vorgegeben. Da nur die device-nodes /dev/usb/iowarrior0 bis /dev/usb/iowarrior15 von der Iowkit-lib durchsucht werden.

Eberhard
Post Reply