HardwareErkennung
Version 9 (dsuchod, 05/06/2007 04:32 pm)
| 1 | 1 | dsuchod | == Hardware-Erkennung auf DXS == |
|---|---|---|---|
| 2 | 1 | dsuchod | |
| 3 | 1 | dsuchod | Zentrale Komponente der automatischen Konfiguration ist eine Hardware-Erkennung. Diese übernimmt die weitgehende Einrichtung des Systems. Derzeit werden Teile des Knoppix-Mechanismus ('''hwsetup''' und ''libpci.so'') hierfür benutzt: |
| 4 | 1 | dsuchod | |
| 5 | 1 | dsuchod | * X-Server (ermitteln des notwendigen Treibermoduls für Xorg (landet innerhalb des Initialramfs in ''/etc/sysconfig/xserver'') |
| 6 | 1 | dsuchod | * Laden der Audio-Module |
| 7 | 1 | dsuchod | * Bestimmen des Plattencontrollers und angeschlossener Platten |
| 8 | 1 | dsuchod | * USB-Setup |
| 9 | 1 | dsuchod | * Cardbus-Setup |
| 10 | 1 | dsuchod | |
| 11 | 1 | dsuchod | Dateien der Hardwareerkennung innerhalb des Initramfs: |
| 12 | 1 | dsuchod | {{{ |
| 13 | 1 | dsuchod | initrd-stuff/lib |
| 14 | 1 | dsuchod | initrd-stuff/lib/libpci.so |
| 15 | 1 | dsuchod | initrd-stuff/lib/libpci.so.2 |
| 16 | 1 | dsuchod | initrd-stuff/bin |
| 17 | 1 | dsuchod | initrd-stuff/bin/hwsetup |
| 18 | 1 | dsuchod | initrd-stuff/bin/ddcprobe |
| 19 | 1 | dsuchod | initrd-stuff/usr |
| 20 | 1 | dsuchod | initrd-stuff/usr/share |
| 21 | 1 | dsuchod | initrd-stuff/usr/share/hwdata |
| 22 | 1 | dsuchod | initrd-stuff/usr/share/hwdata/MonitorsDB |
| 23 | 1 | dsuchod | initrd-stuff/usr/share/hwdata/usb.ids |
| 24 | 1 | dsuchod | initrd-stuff/usr/share/hwdata/pci.ids |
| 25 | 1 | dsuchod | initrd-stuff/usr/share/hwdata/Cards |
| 26 | 1 | dsuchod | initrd-stuff/usr/share/hwdata/pcitable |
| 27 | 1 | dsuchod | }}} |
| 28 | 1 | dsuchod | |
| 29 | 8 | dsuchod | '''hwsetup''' (Siehe hierfür [http://debian-knoppix.alioth.debian.org/sources]) bestimmt in erster Linie die zu ladenden Module. Sie werden anhand der ''pci.ids'' bzw. von ''pcitable'' erkannt. Diese Datei steht ständig aktualisiert unter [http://pciids.sourceforge.net/pci.ids] zur Verfügung. |
| 30 | 1 | dsuchod | |
| 31 | 1 | dsuchod | Das Xorg-Setup wird mittels ''pcitable'' und ''Cards'' bestimmt, wobei der Sting "Card:ATI Radeon Mobility X600" (hinter Card) zu den Einträgen in der ''Cards'' passen muss, da sonst nur der "vesa" Treiber ausgewählt wird. Auf diese Weise lässt sich auch die ''pcitable'' (kommt aus dem Redhat "hwdata" Paket, derzeit Version 0.98) mit neueren Einträgen erweitern oder spezielle Konfigurationen (abweichende Treiber) einzelner Karten in ''Cards'' angeben. Hierfür wurden zwei Dateien eingeführt: ''pcitable.local'' und ''Cards.local'' wo alle Ergänzung drin landen sollten, die noch nicht in den ''offiziellen Dateien'' enthalten sind. (Auf die Dauer wäre gut zu wissen, wo die Dateien gepflegt werden, um Updates zu bekommen und eigene Ergänzungen upstream) |
| 32 | 8 | dsuchod | |
| 33 | 8 | dsuchod | Wenn bestimmte Devices nicht in der ''pcitable'' stehen, wie bspw. "ata_piix", dann wirft das '''hwsetup''' diese auch nicht aus, womit sie nicht geladen werden: |
| 34 | 8 | dsuchod | {{{ |
| 35 | 8 | dsuchod | ... |
| 36 | 8 | dsuchod | 0x8086 0x2582 "Card:Intel 915" |
| 37 | 8 | dsuchod | 0x8086 0x2592 "Card:Intel 915" |
| 38 | 8 | dsuchod | 0x8086 0x2653 "ata_piix" "Intel Corp.|82801FBM Serial ATA Storage Controller" |
| 39 | 8 | dsuchod | 0x8086 0x2772 "Card:Intel 945" |
| 40 | 8 | dsuchod | 0x8086 0x2792 "Card:Intel 915GM" |
| 41 | 8 | dsuchod | 0x8086 0x27a2 "Card:Intel 945" |
| 42 | 8 | dsuchod | ... |
| 43 | 8 | dsuchod | }}} |
| 44 | 8 | dsuchod | Das waren die notwendigen Anpassungen für verschiedene Thinkpads, so dass die IDE-Module korrekt geladen und der X-Server richtig konfiguriert wird. |
| 45 | 4 | dsuchod | |
| 46 | 7 | dsuchod | Die Datei ''Cards'' wird von verschiedenen X11-Konfiguratoren benutzt, wobei die Version, die bei SuSE/10.2/Xorg dabei ist, ordentlich alt aussieht (die Datei ist ein Witz/Relikt, da scheint auch nix mehr zu passieren). Derzeit scheint Version 1.178 die aktuellste zu sein, die Version 1.161 aus dem o.g. Redhat Paket ist wohl älter. Leider bekommt man nicht wirklich raus, wo die Datei eigentlich gepflegt wird :-( (clever auch, dass da keiner ein Datum reinschreibt) |
| 47 | 1 | dsuchod | |
| 48 | 1 | dsuchod | Die MonitorsDB ist derzeit nicht im Einsatz ... |
| 49 | 2 | dsuchod | |
| 50 | 2 | dsuchod | === Einbau kommerzieller X-Treiber === |
| 51 | 2 | dsuchod | |
| 52 | 2 | dsuchod | Letzteres könnte der Ansatzpunkt sein, um kommerzielle X-Server für bestimmte Grafikkarten auszuwählen. Ein typischer Eintrag für eine Karte(nklasse) sieht so aus: |
| 53 | 2 | dsuchod | {{{ |
| 54 | 2 | dsuchod | NAME ATI Radeon (generic) |
| 55 | 2 | dsuchod | CHIPSET R100 |
| 56 | 2 | dsuchod | DRIVER radeon |
| 57 | 2 | dsuchod | # koennte ersetzt werden durch |
| 58 | 2 | dsuchod | NAME ATI Radeon (generic) |
| 59 | 2 | dsuchod | CHIPSET R100 |
| 60 | 2 | dsuchod | DRIVER fglrx |
| 61 | 2 | dsuchod | }}} |
| 62 | 2 | dsuchod | |
| 63 | 1 | dsuchod | Evtl. kann man diese Datei anpassen oder bei der Treiberauswahl je nach Vorhandensein "radeon" durch "fglrx" ersetzen. Ähnliches sollte auch mit "nv" und "nvidia" möglich sein. |
| 64 | 5 | dsuchod | |
| 65 | 5 | dsuchod | Frage hierbei ist, welcher Weg sinnvoller ist: Eine Liste mit Devices lokal pflegen, für die die kommerziellen Treiber zum Einsatz kommen sollen (nicht alle Karten funktionieren mit den Treibern vernünftig) oder es generell in einer der o.g. Dateien festlegen und dabei den Kartentyp möglichst genau angeben (als nicht gerade auf "generic" verweisen). |
| 66 | 6 | dsuchod | |
| 67 | 9 | dsuchod | Das Ganze ist nicht trivial, da mehrere Komponenten aus Kernel-Modulen, X-Server- und X-Client-Bibliotheken zusammenspielen müssen. Einen Überblick zur aktuell laufenden Konfiguration gibt '''glxinfo''': |
| 68 | 9 | dsuchod | {{{ |
| 69 | 9 | dsuchod | name of display: :0.0 |
| 70 | 9 | dsuchod | display: :0 screen: 0 |
| 71 | 9 | dsuchod | direct rendering: Yes |
| 72 | 9 | dsuchod | server glx vendor string: SGI |
| 73 | 9 | dsuchod | server glx version string: 1.2 |
| 74 | 9 | dsuchod | server glx extensions: |
| 75 | 9 | dsuchod | [ ... ] |
| 76 | 9 | dsuchod | client glx vendor string: SGI |
| 77 | 9 | dsuchod | client glx version string: 1.4 |
| 78 | 9 | dsuchod | client glx extensions: |
| 79 | 9 | dsuchod | [ ... ] |
| 80 | 9 | dsuchod | OpenGL vendor string: Tungsten Graphics, Inc |
| 81 | 9 | dsuchod | OpenGL renderer string: Mesa DRI Intel(R) 945GM 20050225 x86/MMX/SSE2 |
| 82 | 9 | dsuchod | OpenGL version string: 1.3 Mesa 6.5.1 |
| 83 | 9 | dsuchod | OpenGL extensions: |
| 84 | 9 | dsuchod | [ ... ] |
| 85 | 9 | dsuchod | }}} |
| 86 | 9 | dsuchod | Dieses Beispiel zeigt ein System mit Intel i945 Chipset, welches das Kernel DRI verwendet. Das ist der freundliche Fall, da alles Open Source und mit der Distro bereits zur Verfügung gestellt. Wenn man die non-GPL Treiber von ATI und NVidia einsetzt, sollte in den drei Feldern etwas anderes stehen. ATI: |
| 87 | 9 | dsuchod | {{{ |
| 88 | 9 | dsuchod | ATI |
| 89 | 9 | dsuchod | }}} |
| 90 | 9 | dsuchod | NVidia |
| 91 | 9 | dsuchod | {{{ |
| 92 | 9 | dsuchod | |
| 93 | 9 | dsuchod | }}} |
| 94 | 9 | dsuchod | ATI verwendet die Kernel-DRI-Infrastruktur, NVidia hingegen nicht. |
| 95 | 9 | dsuchod | |
| 96 | 6 | dsuchod | == Device-Zugriff == |
| 97 | 6 | dsuchod | |
| 98 | 6 | dsuchod | Nur zum Teil ist Hardware fest mit der Maschine verbunden: Mittels USB, Firewire, SCSI, ... lassen sich Geräte auch nachträglich anschliessen oder wieder abklemmen. Unabhängig davon sollte dem Benutzer des Desktops (GUI die sich direkt auf die Maschine bezieht an der er sitzt - sonst gibts noch ganz andere Probleme) Zugriffsrecht auf die Hardware erhalten (und andere bspw. remote angemeldete Benutzer nicht). |
| 99 | 6 | dsuchod | |
| 100 | 6 | dsuchod | Das Einbinden der Hardware regelt inzwischen "udev", die später möglichen Zugriffe werden von verschiedenen Diensten verwaltet. |
| 101 | 6 | dsuchod | |
| 102 | 6 | dsuchod | === SuSE10.2 === |
| 103 | 6 | dsuchod | |
| 104 | 7 | dsuchod | http://forgeftp.novell.com/resmgr/web/ ist die Homepage vom "resmgrd". Dort hat der Maintainer auch ein Bild der Zusammenhänge gezeichnet [http://forgeftp.novell.com/resmgr/web/#id2484325] |
| 105 | 6 | dsuchod | |
| 106 | 6 | dsuchod | Wie glich im ersten Satz klargestellt wird, ist '''resmgr''' heute keine Resource Manager mehr. Diese Aufgaben werden von Skripten erfüllt, die der '''resmgr''' beim Login des Nutzers aufruft. |
| 107 | 6 | dsuchod | |
| 108 | 6 | dsuchod | So sorgt ''/etc/resmgr.conf.d/99-desktop.conf'' zum Beispiel dafür, dass alle Nutzer mit "tty=:*" der Resmgr-Klasse (!= UNIX-Gruppe) "desktop" (definiert in ''/etc/resmgr.conf'') hinzugefügt werden. |
| 109 | 6 | dsuchod | |
| 110 | 6 | dsuchod | ''/etc/resmgr.conf.d/90-desktop-console.conf'' realisiert die Anbindung an PolicyKit. Der Datei ist direkt entnehmbar, welche ''/usr/bin/polkit-resmgr-*'' Skripte bei der An- oder Abmeldung ausgeführt werden. |
| 111 | 6 | dsuchod | |
| 112 | 6 | dsuchod | Ebenso verhält es sich mit ''/etc/resmgr.conf.d/91-hal-resmgr.conf'' ... |