Hallo Joachim, Am Montag, 10. Juni 2002 22:46 schriebst du:
Hallo Hartmut,
da PM,
Warum? Das macht doch keinen Sinn: erstens kann jetzt nur ich antworten und zweitens haben die anderen Listenmitglieder nichts mehr davon. Ich nehme mir die Freigheit und schreibe meine Antwort wieder an die Liste - jetzt wo ich mir soviel Mühe gegeben habe das "gut" zu erklären sollen wenigstens auch noch andere was davon haben.
gleich in TOFU. Vielen Dank für Deine Info, vielleicht frag' ich dann doch wieder lieber die Liste ;-)). (weil eigentlich bin ich Architekt).
Ich übersetz das jetzt mal in "ich hab deine Antwort nicht verstanden". Korrekt? Kein Problem. Ich kommentier's nochmal.
Viele Grüsse aus dem südlichen Stuttgart
Joachim
On Mon, 10 Jun 2002, Hartmut Meyer wrote:
Hallo,
Am Montag, 10. Juni 2002 20:37 schrieb Joachim Kieferle:
On Mon, 10 Jun 2002, Adalbert Michelic wrote:
* On Mon, 10 Jun 2002 at 19:09 +0200, Joachim Kieferle wrote:
+++++++++++++ snip ++++++++++++++
aus /var/log/warn:
Jun 10 08:32:35 plato kernel: hde: dma_intr: status=0x51 { DriveReady SeekComplete Error } Jun 10 08:32:35 plato kernel: hde: dma_intr: error=0x40 { UncorrectableError }, LBAsect=132077840, sector=48234536 Jun 10 08:32:35 plato kernel: end_request: I/O error, dev 21:06 (hde),
^^^^^
Das Device, das Probleme macht, hat major 0x21 und minor 0x06 - hde6.
Schon wieder etwas gelernt. 06 bedeutet offensichtlich die Partition 6, aber was bedeutet "major 0x21" (dann muss ich beim nächsten mal nicht mehr die Liste befragen ;-)?
Mit 0x.. wird eine hexadezimale Zahl (du erinnerst dich noch an den Matheunterricht?), also eine Zahl, deren einzelne Stellen zur Basis 16 gestellt sind 0x21 = 2*16^1 + 1*16^0 in dezimale (das was wir gewohnt sind) Schreibweise übersetzt entspricht das 33 33 = 3*10^1 + 3*10^0 Das "^" steht für "hoch". Rechne mal nach - vielleicht verstehst du es dann (aber vielleicht war es ja auch gar nicht der Teil meiner Antwort, die sdu nicht verstanden hast).
Falls du nicht im Kopf rechnen kannst oder willst (siehe "man bc")
linux:~ # bc -ql ibase=16 21 33
mit "bc" kannst du die Rechnerei dem Computer überlassen. Dabei wird nach dem Start von bc zunächst mit "ibase=16" festgelegt, dass die Eingaben als Zahlen in hexadezimaler (Basis 16) interpretiert werden sollen. Mit "obase=10" könnte man noch sagen, dass die Ausgabe in dezimaler Schreibweise geschehen soll, aber da das eh die Vorgabe ist kann man sich das sparen. Dann gibt man "21" ein und bestätigt die Eingabe mit Enter. bc rechnet dann die 21 (hexadezimal) in 33 (dezimal) um.
21 in hexadezimaler Schreibweise ist also 33 in dezimaler Schreibweise.
Jetzt ein Blick in /usr/src/linux/Documentation/devices.txt
In dieser Datei findest du eine Auflistung der Device Major und Minor Nummern. Das geht jetzt etwas weit, aber über diese Nummern werden vom Kernel die einzelnen Geräte identifiziert bzw. Treibern zugeordnet. Wenn du mal einen Blick in das Verzeichnis /dev wifst siehst du vielleicht was ich meine: user@linux:~> ls -l /dev/hde6 brw-rw---- 1 root disk 33, 6 Mär 23 20:47 /dev/hde6 Du siehst zum einen ganz vorne, als erstes Zeichen ein "b" -> bei dieser Datei handelt es sich um eine Geräte-Datei (device file) eines "b"lockorientierten Geräts (im Unterschied zu einem zeichenorientierten ("c"haracter device) Gerät, welches mit einem "c" in der ersten Spaltze markiert würde. Die zwei Zahlen nach root und disk, also 33 und 6 sind die Major und Minor Device (Geräte) Nummern. Und diese 33 haben wir oben aus der hexadezimalen Schreibweise abgeleitet. Die 6 hattest du dir schon selbst erklärt als die Partitionsnummer (bei anderen Gerätetypen kann mit der Minor-Nummer etwas völlig anderes gemeint sein. Prinzipiell wird über die Major-Device Nummer der benötigte Treiber festgelegt (du willst etwas von /dev/hde6 kopieren - der Kernel schaut sich die Gerätedatei an und sieht anhand der Major-Nummer und des "b", dass es sich um ein IDE Gerät, Festplatte oder CD-ROM, handeln muss und weiß dann, mit welchem Treiber er adrauf zugreifen kann), während die Minor Nummer nur vom Treiber selbst ausgewertet wird. Im Falle des IDE-Treibers ist es dann so, dass er weiß, welche Partition angesprochen werden soll. In der Datei /usr/src/linux/Documentation/devices.txt wird lediglich dokumentiert, wie der Kernel bzw. die Treiber anhand der Major und Minor Nummern ermitteln was zu tun ist.
--- schnipp -----
33 char Specialix serial card - alternate devices
Zum Vergleich: hamu@felix:~> ls -l /dev/cux6 crw-rw---- 1 root uucp 33, 6 Mär 23 20:47 /dev/cux Man achte auf das "c" (für Character Device) in der ersten Spalte. Nicht verwirren lassen: es gibt _keinerlei_ inahltlichen Zusammenhang zwischen dem block- und zeicheorientierten Gerät der gleichen Major-Nummer!
0 = /dev/cux0 Callout device for ttyX0 1 = /dev/cux1 Callout device for ttyX1 ... block Third IDE hard disk/CD-ROM interface
Bei dir ging es um eine Festplatte (das wusstest du schon von Anfang an). Da Festplatten blockorientierte Geräte sind (Daten können nur Blockweise ausgelesen werden, nicht Byte für Byte - selbst wenn du nur ein Byte lesen möchtest muss du dir vom Gerät mindestens einen Block geben lassen) musst du also nach dem Block Device schauen und nicht nach dem Character Device.
0 = /dev/hde Master: whole disk (or CD-ROM) 64 = /dev/hdf Slave: whole disk (or CD-ROM)
Partitions are handled the same way as for the first interface (see major number 3).
--- schnapp -----
Alles klar? (dass es sich um ein blockorientiertes Gerät handelt ergibt sich aus dem Kontext)
Besser? Schöne Grüße aus Bremen hartmut
participants (1)
-
Hartmut Meyer