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