Upload
eldric-leinenbach
View
105
Download
3
Embed Size (px)
Citation preview
19.05.2008 hwsetup - Hardwareerkennung 1
Hardwareerkennung und Konfiguration
betreut duch Dirk von Suchodoletz
Martin Bauer
19.05.2008 hwsetup - Hardwareerkennung 2
Inhaltsangabe
Motivation Voraussetzungen
Hardware Linux Kernel und Module hwsetup und kudzu
Implementierung von hwsetup Zusammenfassung
19.05.2008 hwsetup - Hardwareerkennung 3
Motivation (1)
Hardwareerkennung für Diskless Client System
19.05.2008 hwsetup - Hardwareerkennung 4
Bootvorgang Terminal
DHCP/PXE der Netzwerkkarte tftp download des Kernel/initial RAM Disk Laden Kernel Laden Initrd (busybox) * rootfs per nfs einbinden Startvorgang init V *
* Hardwareerkennung möglich
19.05.2008 hwsetup - Hardwareerkennung 5
Motivation (2)
speichersparend und kompakt portabel und flexibel, damit universell
einsetzbar einfache Implementierung für einfach
Erweiterbarkeit auf Standards basierend, Vermeidung
von Abhängigkeiten an Kernelpatchs oder Bibliotheken
schnelle Erkennungsgeschwindigkeit
19.05.2008 hwsetup - Hardwareerkennung 6
Aufbau Hardware
CPU <–> PCI-Bus <-> USB-Bus Geräte hängen an Bus Brücken
verbindenBusse
Baum-struktur
19.05.2008 hwsetup - Hardwareerkennung 7
Aufbau von Linux
Kernel System.map
Module modules.dep ; Abhängigkeiten modules.pcimap ; Zuordnung modules.usbmap ; Geräte-Nr. <-> Module modprobe
19.05.2008 hwsetup - Hardwareerkennung 8
Voraussetzung
Kernel >= 2.6 hotplug udev
hwsetup aus Knoppix basierend auf libkudzu
19.05.2008 hwsetup - Hardwareerkennung 9
hwsetup
Erkennen und Laden von Modulen Nutzung von Funktionsaufrufen der kudzu
Bibliothek Geräteerkennung Auflösen der PCI Gerätebezeichnung
Erstellung einiger Gerätedateien (/dev/mouse)
X System konfiguration
19.05.2008 hwsetup - Hardwareerkennung 10
libkudzu (1)
Konfiguration von Hardware (modprobe) Ausgabe in Datenbank
/etc/sysconfig/hwconfig leistungsfähige Ausnahmebehandlung Auflösung der PCI IDs
pci.ids pcitable Cards
19.05.2008 hwsetup - Hardwareerkennung 11
libkudzu (2)
Erkennung einer Vielzahl an Hardwareklassen PCI/USB/Firewire/ISAPNP/ IDE/SCSI/PCMCIA seriell/parallel/psaux/keyboards SBUS/DDC S390/VIO
19.05.2008 hwsetup - Hardwareerkennung 12
hotplug
hotplug: Hardwarewechsel im laufenden Betrieb
Module werden durch Kernel geladen Erkennung neu eingesteckter Hardware Unterstützung nicht für aller Busse
verfügbar (nur sysfs)
19.05.2008 hwsetup - Hardwareerkennung 13
udev
Konfiguration und Gerätedateihandling aus sysfs
läuft im userspace regelbasierend bietet keine Hardwareerkennung
(hwsetup/hotplugd)
19.05.2008 hwsetup - Hardwareerkennung 14
hwsetup + hotplug + udev
19.05.2008 hwsetup - Hardwareerkennung 15
Implementierung
19.05.2008 hwsetup - Hardwareerkennung 16
19.05.2008 hwsetup - Hardwareerkennung 17
Optimierungen (1)
Verzicht auf libkudzu Nachbildung von
struct device **deviceList; deviceList probeDevices(device);
Zeiger auf Funktionen probeDevice = probeDeviceXXX // XXX={PCI,USB}
erweiterbar durch weitere Geräteklassen (firewire..)
19.05.2008 hwsetup - Hardwareerkennung 18
Optimierung (2)
Repräsentation eines Gerät als Struktur
struct device {struct device* next; /* SLL */enum deviceClass type; /* type of Device */enum deviceBus bus; /* bus it's attached to */char* module; /* driver name, else NULL */char* desc; /* a description */int vendorId;int deviceId;
};
19.05.2008 hwsetup - Hardwareerkennung 19
Optimierungen (3)
weiterer Verzicht auf: X Server Konfiguration Ausgabe in Datenbank
/etc/sysconfig/hwconfig pcitable/Cards Erkennungsdatenbanken umfangreiche Ausnahmebehandlungen
(IRQ/MEM)
19.05.2008 hwsetup - Hardwareerkennung 20
Optimierungen (4)
Auflösen der Geräte IDs in Namen durch Methode getDescription(device) deviceID, vendorID -> Gerätename /usr/share/misc/pci.ids
http://pciids.sf.net/pci.db /usr/share/misc/usb.ids
http://linux-usb.sourceforge.net/usb.ids auch für Bildschirm/Grafikkarten erhältlich... für Hardwareerkennung nur optional
19.05.2008 hwsetup - Hardwareerkennung 21
Optimierungen (5)
Steuerung von Verhalten durch: Kommandozeilenparameter Konfigurationsdatei
modprobe.conf Syntax alias blacklist verbose
19.05.2008 hwsetup - Hardwareerkennung 22
Optimierungen (6)
Lokalität der Daten in RAM-Speicher Einlesen der Datei modules.*map
*={pci,usb} Einlesen der Geräte-ID in verketteten Listen Einlesen der Blacklist/Aliases aus
Konfigurationsdatei Ziel: beschleunigter Lookup
Nutzung von verketteten Listen
19.05.2008 hwsetup - Hardwareerkennung 23
19.05.2008 hwsetup - Hardwareerkennung 24
19.05.2008 hwsetup - Hardwareerkennung 25
19.05.2008 hwsetup - Hardwareerkennung 26
Quellen RedHat kudzu
http://elvis.redhat.com/kudzu
The PCI Utilities
http://mj.ucw.cz/pciutils.shtml
libusb Developers Guide
http://libusb.sourceforge.net/
“Linux Gerätetreiber”, O'Reilly
Allessandro Rubini, Jonathan Corbet
“Programmieren in C, ANSI C“, Hanser Verlag
Kernighan, Ritchie
Die Netzstarter, Diskless Clients unter Linux“, Linux Magazin 01/03
Dirk von Suchodoletz
19.05.2008 hwsetup - Hardwareerkennung 27
Zusammenfassung & Fragen
Vielen Dank für die Aufmerksamkeit