27
19.05.2008 hwsetup - Hardwareerkennung 1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

Embed Size (px)

Citation preview

Page 1: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 1

Hardwareerkennung und Konfiguration

betreut duch Dirk von Suchodoletz

Martin Bauer

Page 2: 19.05.2008hwsetup - Hardwareerkennung1 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

Page 3: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 3

Motivation (1)

Hardwareerkennung für Diskless Client System

Page 4: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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

Page 5: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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

Page 6: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 6

Aufbau Hardware

CPU <–> PCI-Bus <-> USB-Bus Geräte hängen an Bus Brücken

verbindenBusse

Baum-struktur

Page 7: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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

Page 8: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 8

Voraussetzung

Kernel >= 2.6 hotplug udev

hwsetup aus Knoppix basierend auf libkudzu

Page 9: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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

Page 10: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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

Page 11: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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

Page 12: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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)

Page 13: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 13

udev

Konfiguration und Gerätedateihandling aus sysfs

läuft im userspace regelbasierend bietet keine Hardwareerkennung

(hwsetup/hotplugd)

Page 14: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 14

hwsetup + hotplug + udev

Page 15: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 15

Implementierung

Page 16: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 16

Page 17: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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..)

Page 18: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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;

};

Page 19: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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)

Page 20: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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

Page 21: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 21

Optimierungen (5)

Steuerung von Verhalten durch: Kommandozeilenparameter Konfigurationsdatei

modprobe.conf Syntax alias blacklist verbose

Page 22: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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

Page 23: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 23

Page 24: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 24

Page 25: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 25

Page 26: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

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

Page 27: 19.05.2008hwsetup - Hardwareerkennung1 Hardwareerkennung und Konfiguration betreut duch Dirk von Suchodoletz Martin Bauer

19.05.2008 hwsetup - Hardwareerkennung 27

Zusammenfassung & Fragen

Vielen Dank für die Aufmerksamkeit