• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Wie heißt die Device-Datei?

Hallo!
Ich möchte eine Device-Datei erzeugen.
Warum will ich das machen?
Hier unter dem Link http://www.linux-club.de/viewtopic.php?f=19&t=104822#p644788 findet udev-System eine Hardware aber erzeugt keine Device-Datei.
Hier ein Auszug aus dem Script collectNWData.sh:
Code:
29: PCI 09.0: 0200 Ethernet controller
  Model: "Atheros Ethernet controller"
  Vendor: pci 0x168c "Atheros Communications, Inc."
  Device: pci 0xff1d 
  SubVendor: pci 0x168c "Atheros Communications, Inc."
  SubDevice: pci 0xee1c
Hier auf der PCI Liste http://www.pcidatabase.com/vendor_details.php?id=174 findet man die Vendor ID 168c aber nicht die Device ID ff1d.
Meiner Meinung nach wird die Device-Datei nicht erzeugt weil es fehlt die richtige Device ID.
Ist das so oder irre ich?
Ich weiß das mit Kommando:
Code:
mknod device-datei {bc} major minor
kann eine Device-Datei erstellt werden.
Ich weiß auch das der Name de Device-Datei ist hier zu finden: http://www.mjmwired.net/kernel/Documentation/devices.txt auch hier unter /usr/src/linux/Documentation/devices.txt (aber nur wenn der Kernelcode installiert ist).
Ich weiß aber nicht den Namen der Device-Datei.
Wer kann helfen?
Danke im voraus.
 
A

Anonymous

Gast
Erst mal was prinzipelles zu deinen Fragen.

Der Name eines Deviceknotens ist theoretisch vollkommen wahlfrei, natürlich sollte man sich an gewisse Konventionen halten, aber ob du den Knoten für eine Platte /dev/sda oder /dev/ottosplatte nennen würdest währe Linux als solches egal, Linux braucht nur die richtigen Major und Minor nummern sowie den Knotentype damit er für das Device den richtigen Treiber findet.

Wichtig sind also die Major und Minornummer sowie der Knotentype, diese werden prinziell mit den entsprechenden Treibern oder vom Kernel selbst zur Verfügung gestellt. Sind aber erst nutzbar nachdem die Knoten dazu angelegt worden sind. Diese Knoten werden meist durch automatisierte Mechanismen wie udev automatisch erzeugt, aber es geht auch in Ausnahmefällen per Hand oder selbstgebastelten Script.
mit dem Befehl
Code:
cat /proc/devices
siehst du alle vom Kernel oder den Modulen zur Verfügung gestellten Majornummern, die Minornummern richten sich nach den Eigenschaften der einzelnen Treiber und müssten dort nachgelesen werden.
mit dem Befehl mknode könntest du jetzt fehlende anlegen.

Was du jetzt aber immer noch vermissen wirst, die Gerätezugriffspunkte zB für die Netzwerkkarten ,Sockets .... , und das ist richtig so, die sind wo anders und sehen auch ganz anders aus.

gehe mal nach /sys/class/net und mache dort ein ls
Code:
 cd /sys/class/net
ls
Hier siehst du jetzt welche Netzwerkschnittstellen dir derzeitig der Kernel und die Treiber zur Verfügung stellt.

Bei dir scheint es sich letztlich um einen Ethernetkontroller zu handeln (auch wenn das noch über weitere Umwege zB über WLAN geschieht) der Zugriff erfolgt letztlich als Ethernetkontroller, der würde hier mit eth? (wobei ? eine Zahl ist) zu sehen sein. Welche Zahl er bekommt macht Linux und udev automatisch und der Reihe nach. Wenn also ein Treiber in deinem System vorhanden ist, der dein Gerät bediehnen kann, dann hast du dort automatisch nach dem Laden des Treibers ein entsprechendes Verzeichnis und damit eine fertige funktionierende Kommunikationsschnittstelle zu deiner Netzwerkkarte.

Die PCI-Liste die du verwendest ist nicht so ganz das was man unter Linux normal verwendet, entweder deine aus dem System /usr/share/pci.ids die dürfte in etwa mit dem kompatibel sein, was ursprünglich beim Erscheinen der entsprechenden Distribution bekannt war, oder die jeweils aktuelle davon im Netz http://pci-ids.ucw.cz/v2.2/pci.ids
und dort steht auch dein Gerät drin
ff1c AR5008 Wireless Network Adapter

Inwieweit jetzt deine Karte von den Treibern deines Kernels erkannt wird, welcher Treiber zuständig ist und wie du das zu laufen bekommst, dazu müsstest du dich mal im WLAN Forum umschauen. Dort kann man dir da besser weiterhelfen. Wichtig währe wahrscheinlich neben der Ausgabe von lspic auch die genaue SuSE Version und die Kernelversion die du aktuell benutzt. Das Ganze hat also nichts damit mit zu tun das du dort unter /dev keinen Gerätenamen für die Karte hast. Am besten du schaust dich dort im WLAN-Forum noch mal genauer um, und machst dann gegebnenfalls dort einen neues Thema auf, gleich mit den Informationen die die Jungs dort so im Normalfall für sowas anfordern. Das macht immer einen guten Eindruck ;)

robi
 

josef-wien

Ultimate Guru
robi schrieb:
dort steht auch dein Gerät drin
Das trifft für 11.1 zu, bei 11.0 ist es nicht der Fall.

So wie ich die Sache sehe, stehst Du vor demselben Problem wie ich damals. Ich habe eine "normale" LAN-Karte "onboard" (auch von Atheros/Attansic). Für openSUSE 11.0 mußte ich das notwendige Kernel-Modul selbst erstellen (der Source-Code war sogar auf der DVD zu meinem "motherboard" dabei), openSUSE 11.1 dagegen hat das Modul bereits dabei.
 
A

Anonymous

Gast
josef-wien schrieb:
robi schrieb:
dort steht auch dein Gerät drin
Das trifft für 11.1 zu, bei 11.0 ist es nicht der Fall.
Diese Datei hat mit der eigentlichen Funktion eines Gerätes nichts zu tun. Diese Datei wird nur genutzt um zB bei lspci einem PCI-Gerät auch einen Namen zuzuordnen. Ist es dort nicht eingetragen, zeigt das Gerät eben keinen Namen. Die Geräteunterstützung kommt aus den Treibern und dem Kernel und sollte letzlich in der Datei
Code:
/lib/modules/$(uname -r)/modules.pcimap
zu finden sein. Bzw. dort sucht der Kernel welchen Treiber er für welches PCI-Gerät laden soll.

robi
 
Oben