hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer
hwsetup - Hardwareerkennung2 Inhaltsangabe Motivation Voraussetzungen Hardware Linux Kernel und Module hwsetup und kudzu Implementierung von hwsetup Zusammenfassung
hwsetup - Hardwareerkennung3 Motivation (1) Hardwareerkennung für Diskless Client System
hwsetup - Hardwareerkennung4 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
hwsetup - Hardwareerkennung5 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
hwsetup - Hardwareerkennung6 Aufbau Hardware CPU PCI-Bus USB-Bus Geräte hängen an Bus Brücken verbinden Busse Baum- struktur
hwsetup - Hardwareerkennung7 Aufbau von Linux Kernel System.map Module modules.dep; Abhängigkeiten modules.pcimap; Zuordnung modules.usbmap; Geräte-Nr. Module modprobe
hwsetup - Hardwareerkennung8 Voraussetzung Kernel >= 2.6 hotplug udev hwsetup aus Knoppix basierend auf libkudzu
hwsetup - Hardwareerkennung9 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
hwsetup - Hardwareerkennung10 libkudzu (1) Konfiguration von Hardware (modprobe) Ausgabe in Datenbank /etc/sysconfig/hwconfig leistungsfähige Ausnahmebehandlung Auflösung der PCI IDs pci.ids pcitable Cards
hwsetup - Hardwareerkennung11 libkudzu (2) Erkennung einer Vielzahl an Hardwareklassen PCI/USB/Firewire/ISAPNP/ IDE/SCSI/PCMCIA seriell/parallel/psaux/keyboards SBUS/DDC S390/VIO
hwsetup - Hardwareerkennung12 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)
hwsetup - Hardwareerkennung13 udev Konfiguration und Gerätedateihandling aus sysfs läuft im userspace regelbasierend bietet keine Hardwareerkennung (hwsetup/hotplugd)
hwsetup - Hardwareerkennung14 hwsetup + hotplug + udev
hwsetup - Hardwareerkennung15 Implementierung
hwsetup - Hardwareerkennung16
hwsetup - Hardwareerkennung17 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..)
hwsetup - Hardwareerkennung18 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; };
hwsetup - Hardwareerkennung19 Optimierungen (3) weiterer Verzicht auf: X Server Konfiguration Ausgabe in Datenbank /etc/sysconfig/hwconfig pcitable/Cards Erkennungsdatenbanken umfangreiche Ausnahmebehandlungen (IRQ/MEM)
hwsetup - Hardwareerkennung20 Optimierungen (4) Auflösen der Geräte IDs in Namen durch Methode getDescription(device) deviceID, vendorID -> Gerätename /usr/share/misc/pci.ids /usr/share/misc/usb.ids auch für Bildschirm/Grafikkarten erhältlich... für Hardwareerkennung nur optional
hwsetup - Hardwareerkennung21 Optimierungen (5) Steuerung von Verhalten durch: Kommandozeilenparameter Konfigurationsdatei modprobe.conf Syntax alias blacklist verbose
hwsetup - Hardwareerkennung22 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
hwsetup - Hardwareerkennung23
hwsetup - Hardwareerkennung24
hwsetup - Hardwareerkennung25
hwsetup - Hardwareerkennung26 Quellen RedHat kudzu The PCI Utilities libusb Developers Guide 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
hwsetup - Hardwareerkennung27 Zusammenfassung & Fragen Vielen Dank für die Aufmerksamkeit