orm@doc-tcpip.org | Erstellt: Mai 2000 - Letzte Modifikation: November 2002 |
Devices sind entweder Defined, Stopped oder Available.
Alle Einheiten haben einen logischen Device-Namen. Weiterhin hat jede Einheit einen Typ (z.B. 4mm4gb), gehört einer Klasse (z.B. tape) an, die meist noch unterteilt ist in Unterklassen (subclasses, z.B. scsi). Hier zwei Beispiele:
Alle Klassen von auf diesem System konfigurierten Einheiten:$ lsdev -C -r class adapter aio bus cdrom disk diskette gxme if keyboard lft logical_volume lvm memory mouse planar processor pty rcm sys tape tcpipKlasse tape, Unterklasse scsi und Typ 4mm4gb:
$ lsdev -Cc tape -r subclass scsi $ lsdev -Cc tape -r type 4mm4gbDas ist ein wenig mager, also nochmal ein Beispiel aus dem Netzwerk-Bereich:
$ lsdev -Cc if -r subclass EN LO TR $ lsdev -Cc if -s EN -r type en ie3 $Was ist jetzt mit diesem System ohne weitere Software möglich?
$ lsdev -P -r class adapter aio bus cdrom disk diskette drawer gxme if ipsec keyboard lft logical_volume lvm memory mouse planar printer processor pty rcm rwoptical swap sys tablet tape tcpip tty $Das ist schon deutlich mehr....
$ lsdev -Pc adapter -r subclass isa_sio pci pseudo $Drei Unterklassen...
$ lsdev -Pc adapter -s pci -r type 14101800 22100020 33531188 3353c088 3353c188 3353c288 3353c388 ncr810 ncr825 sym875 $Jedes Linux oder FreeBSD würde darüber lachen.
Ist das Kommando, mit dem man die Eigenschaften eines Devices ändern kann. Dabei wird das Device entweder über seinen logischen Namen (z.B. rmt0) oder über eine eindeutige Kombination aus Klasse, Subklasse, Typ und Verbindungsstelle angesprochen. Weiterhin gibt es 3 Möglichkeiten, die Änderungen zu charakterisieren: Nur in der Datenbank (ODM), nur vorläufig (also nur das Device als solches ändern, aber die Datenbank unverändert lassen und die Kombination von beiden: Device und Datenbank entsprechend ändern.
Normalerweise ändert das chdev-Kommando das Device direkt und ändert den Eintrag in der Datenbank. Bestimmte Änderungen können nicht in jedem Zustand (Defined, Available oder Stopped) durchgeführt werden.
Die Schalter des Kommandos:-l Name: ist der Device Logical Name. Bezieht sich auf die Customized Devices Objektklasse, deren Eigenschaften geändert werden sollen.
-P: hier wird nur die Datenbank geändert (die Änderung zieht also erst zum nächsten Reboot). Zum Beispiel: Ändern eines benutzten Devices.
-T: eine vorläufige Änderung wird am Device durchgeführt, ohne in der Datenbank etwas einzutragen. Wenn ein Device "Defined" ist, dann kann man Änderungen nur in der Datenbank durchführen (klingt logisch).
-a attribut[=wert]: so gibt man das Attribut an, das man sehen oder ändern möchte. Man kann mehrere Attribute auflisten, die Paare werden in Hochkommas eingeschloßen und durch Blanks getrennt.
-f file: ermöglicht einlesen eines vorbereiteten Files mit Flags.
-q: Unterdrückt Ausgaben nach STDOUT und STDERR.
Einige Beispiele:
Zeigt die vorhandenen Attribute eines Devices an sowie die eingestellten Werte, wenn es sich um veränderbare Eigenschaften handelt.
Das lsattr-Kommando greift auf die ODM zu. Das ist ein wichtiger Punkt: Ich sehe nicht das Device direkt, wie mit den anderen Unix-Kommandos (netstat, ifconfig etc.). Ich sehe nur das, was in der ODM festgeschrieben ist. Das muß nicht der wirkliche, aktuelle Stand sein!! Dazu gibt es hier ein Beispiel.
Das Kommando erwartet als Eingabe entweder den logischen Namen des Devices oder eine eindeutige Kombination aus Class, Subclass und Type (wenn man vordefinierte Devices abfragen möchte).
Eines der folgenden Flags muß man mitangeben:-D zeigt die Default-Einstellungen für dieses Device.
# lsattr -Dl tok0 -a rx_que_size rx_que_size 32 HARDWARE RECEIVE queue size True
-E zeigt die aktuellen Einstellungen; man muß einen logischen Device-Namen angeben.
-R zeigt die möglichen Werte für Einstellungen (also für ein Attribut) an.
# lsattr -Rl tok0 -a rx_que_size 32...160 (+1)
-F Format man kann ein eigenes Format der Ausgabe definieren. Man gibt die Header-Namen in der gewünschten Reihenfolge durch Blanks getrennt an.
-O zeigt alle Werte in einer Zeile mit : als Trenner.
# lsattr -El en0 -O #mtu:remmtu:netaddr:state:arp:netmask:security:authority:broadcast:netaddr6:alias6:prefixlen:alias4:rfc1323:tcp_nodelay:tcp_sendspace:tcp_recvspace:tcp_mssdflt 1500:576:192.168.1.4:down:on:255.255.255.0:none:::::::::::
-H zeigt eine Header-Zeile.
-a attribute fragt gezielt einzelne Attribute ab.
# lsattr -El tok0 -a rx_que_size rx_que_size 64 HARDWARE RECEIVE queue size True
-c class -s subclass -t type : Die Flags -c, -s und -t geben wie gehabt die Klasse, die Sub-Klasse und den Typ der Einheit an. Damit ist eine Einheit hinreichend bestimmt, und ich kann auch so abfragen:
# lsattr -E -c adapter -s pci -t 22100020 busio Bus I/O address False busintr Bus interrupt level False intr_priority 3 Interrupt priority False tx_que_size 64 TRANSMIT queue size True rx_que_size 32 RECEIVE queue size True full_duplex no Full duplex True use_alt_addr no Enable ALTERNATE ETHERNET address True alt_addr 0x000000000000 ALTERNATE ETHERNET address TrueDiese Information finde ich z.B. in der ODM:
# odmget CuDv |grep -p ent0 CuDv: name = "ent0" status = 1 chgstatus = 0 ddins = "pci/kentdd" location = "04-B0" parent = "bus0" connwhere = "96" PdDvLn = "adapter/pci/22100020" <=====
Wenn eine Einheit auf dem System konfiguriert wird, also entweder beim Booten oder bei einem cfgmgr-Lauf, dann wird, soweit möglich, die in der Firmware des Devices untergebrachte Information (Seriennummer, FRU Nummer etc.) ausgelesen und in der Objektklasse CuVPD (Customized Vital Product Data) eingelesen. Teilweise ist das nicht möglich, dann kann man die Information meist direkt von der Einheit erhalten. Das Ganze ist stark hardwareabhängig - einmal von der Hardware des Devices wie auch von der Architektur des Systemes, ob es Microchannel, ISA oder PCI basiert ist - das zeigt bootinfo -t: mca, rspc und chrp).
Um diese Information abzufragen dient der Befehl lscfg.
In der CuVPD ist es möglich, manual Einträge vorzunehmen. Das geschieht mit Service-Tools, die Einträge werden dann mit ME (Manual Entry) gekennzeichnet.
-l
zeigt die wichtigsten Einträge zu diesem logischen Device.
Die Information in der CuVPD Objektklasse wird dabei nicht ausgewertet.
$ lscfg -l tok0 DEVICE LOCATION DESCRIPTION tok0 04-05 IBM PCI Tokenring Adapter (14101800)
-v
zeigt die Information aus der CuVPD Objektklasse.
$ lscfg -vl tok0 DEVICE LOCATION DESCRIPTION tok0 04-05 IBM PCI Tokenring Adapter (14101800) Loadable Microcode Level.......WW18CB Part Number.................055H8985 EC Level....................00D51237 Serial Number...............00C56U6M FRU Number..................004H8098 Manufacturer................IBM982 Network Address.............0004AC631458 Displayable Message.........IBM PCI Token-Ring Adapter (14101800)
-p
zeigt die von der Plattform (rsps, chps) abhängigen Informationen an.
-r
zeigt die direkt vom Device erfragte Information an.
Das r steht für residual.
Führt man das lscfg-Kommando ohne Flags aus, dann bekommt man alle Einheiten auf diesem System gelistet, und zwar mit dem Eltern-Device:
$ lscfg INSTALLED RESOURCE LIST The following resources are installed on the machine. +/- = Added or deleted from Resource List. * = Diagnostic support not available. Model Architecture: rspc Model Implementation: Uni-Processor, PCI bus * sys0 00-00 System Object + sysplanar0 00-00 System Planar * bus0 00-00 PCI Bus * bus1 04-A0 ISA Bus + siota0 01-A0 Tablet Adapter + ppa0 01-B0 Standard I/O Parallel Port Adapter + sa0 01-C0 Standard I/O Serial Port 1 + sa1 01-D0 Standard I/O Serial Port 2 + paud0 01-E0 Ultimedia Integrated Audio + sioka0 01-F0 Keyboard Adapter + kbd0 01-F0-00-00 PS/2 keyboard + sioma0 01-G0 Mouse Adapter + mouse0 01-G0-00-00 3 button mouse + fda0 01-H0 Standard I/O Diskette Adapter + fd0 01-H0-00-00 Diskette Drive * pmc0 01-I0 Power Management Controller + ent0 04-B0 IBM PCI Ethernet Adapter (22100020) + scsi0 04-C0 Wide SCSI I/O Controller + hdisk0 04-C0-00-2,0 16 Bit SCSI Disk Drive (4500 MB) + cd0 04-C0-00-3,0 SCSI Multimedia CD-ROM Drive (650 MB) + rmt0 04-C0-00-4,0 4.0 GB 4mm Tape Drive + hdisk1 04-C0-00-5,0 16 Bit SCSI Disk Drive (4500 MB) * bus2 04-D0 PCI Bus + tok0 04-05 IBM PCI Tokenring Adapter (14101800) + iga0 04-01 GXT110P Graphics Adapter + mem0 00-00 Memory + proc0 00-00 Processor + L2cache0 00-00 L2 Cache $Der Location-Code zeigt, wo die Devices physikalisch angeschloßen sind. So finde ich im System 2 PCI-Bus Einheiten (bus0 und bus2). An den bus2 sind z.b. der Ethernet-adapter und der SCSI-Controller angeschloßen (ent0 und scsi0). Am Controller scsi0 hängen nun wiederum 2 Hard-Disks, ein Tape und ein CD-ROM. Die Device Major/Minor Number gibt die SCSI ID des Devices.
Das lsdev-Kommando befragt die ODM, klar. Es gibt zwei fundamentale Arten: Man kann die vordefinierten Einheiten (predefined Devices) befragen (mit dem Flag -P) oder die konfigurierten Einheiten (customized Devices) anzeigen (mit dem Flag -C).
Das Kommando ermöglicht es also, einerseits alle ohne weitere Software lauffähigen Einheiten zu sehen, und andererseits kann man die konfigurierten Einheiten sehen.
-C
zeigt alle auf diesem System konfigurierten Geräte an. Gibt
den logischen Namen, den Status und eine kurze Typ-Beschreibung aus.
$ lsdev -C sys0 Available 00-00 System Object sysplanar0 Available 00-00 System Planar bus0 Available 00-00 PCI Bus bus1 Available 04-A0 ISA Bus ... et0 Defined IEEE 802.3 Ethernet Network Interface et1 Defined IEEE 802.3 Ethernet Network Interface lo0 Available Loopback Network Interface tr0 Available Token Ring Network Interface ... ent0 Available 04-B0 IBM PCI Ethernet Adapter (22100020) ent1 Available 04-04 IBM PCI Ethernet Adapter (22100020) en0 Stopped Standard Ethernet Network Interface en1 Defined Standard Ethernet Network Interface
-S
ermöglicht es, die Ausgabe von lsdev -C nach dem Status der
Einheit einzuschränken. Es gibt 3 Zustände: Defined, Available, Stopped.
Für diese Zustände gelten folgende Aliase: d, D, 0 - a, A, 1 und s, S, 2.
$ lsdev -C -S s en0 Stopped Standard Ethernet Network Interface
-P
zeigt alle vorkonfigurierten Einheiten. Ein solches Gerät kann also
einfach an die Maschine angeschloßen werden und per cfgmgr zum Leben
erweckt werden.
$ lsdev -P ... if ca CA 370 Parallel Channel Network Interface if cti CTI Configured Tunnel Interface if en EN Standard Ethernet Network Interface if fi FI FDDI Network Interface if ie3 EN IEEE 802.3 Ethernet Network Interface if lo LO Loopback Network Interface if sl SL Serial Line Network Interface if so SO Serial Optical Network Interface if tr TR Token Ring Network Interface if xt XT X.25 Network Interface ...
-F
man kan ein eigenes Format angeben, mit den Dingen, die man Interessant
findet.
$ lsdev -C -F 'name subclass type' sys0 node rspc sysplanar0 sys sysplanar_rspc bus0 sys pci bus1 pci isa ... inet0 TCPIP inet et0 EN ie3 et1 EN ie3 lo0 LO lo tr0 TR tr ... ent0 pci 22100020 ent1 pci 22100020 en0 EN en en1 EN en
-H
zeigt eine Zeile mit Überschriften.
-r
mit diesem Flag kann man die Klassen der Objekte abfragen.
Wenn man also wissen möchte, wieviele Subklassen es in der
Klasse tape gibt, die auf diesem System konfiguriert sind:
$ lsdev -Cc tape -r subclass scsioder auch:
$ lsdev -Cc bus bus0 Available 00-00 PCI Bus bus1 Available 04-A0 ISA Bus bus2 Available 04-D0 PCI Bus $ lsdev -Cc bus -r subclass pci sys $ lsdev -Cc bus -r type isa pci $
Mit mkdev kann man ein schon definiertes Device aktivieren (also von
Defined nach Available setzen). Dazu gibt man den logischen Device-Namen mit dem
-l Flag an. Das Device muß natürlich vorher im lsdev -Cc [Klasse, z.b. adapter]
als Defined gestanden haben:
mkdev -l ent0
Das Device ist danach Available und kann benutzt werden. Im Fall des ent0 ändert sich dabei nur der Status Eintrag in der ODM Klasse CuAt:
CuDv: name = "ent0" status = 0 ===> nach mkdev 1! chgstatus = 0 ddins = "pci/kentdd" location = "04-B0" parent = "bus0" connwhere = "96" PdDvLn = "adapter/pci/22100020"
Man kann auch ein Device völlig neu definieren, also unter Angabe der Device Klasse, des Typs, der Subklasse, des Verbindungspunktes und des logischen Device Namens der Elterndevices.
Das geht so (am Beispiel eines Ethernet Adapters):
Aus der PdDv (die Predefinde Devices):
PdDv: type = "22100020" class = "adapter" subclass = "pci" prefix = "ent" devid = "0x22100020" base = 0 has_vpd = 1 detectable = 1 chgstatus = 0 bus_ext = 0 fru = 3 led = 1858 setno = 27 msgno = 46 catalog = "devices_ent.cat" DvDr = "pci/kentdd" Define = "/usr/lib/methods/define_rspc" Configure = "/usr/lib/methods/cfgkent" Change = "/usr/lib/methods/chgent" Unconfigure = "/usr/lib/methods/ucfgcommo" Undefine = "/usr/lib/methods/undefine" Start = "" Stop = "" inventory_only = 0 uniquetype = "adapter/pci/22100020"
Das Kommando müßte dann soetwas sein:
mkdev -l ent4 -c adapter -t 22100020 -s "pci" -w 16 -p bus0
Wobei ich ein Problem mit der Location habe...
# mkdev -c adapter -p bus2 -t 22100020 -s "pci" -w "16" -l ent4 Method error (/usr/lib/methods/define_rspc): 0514-022 The specified connection is not valid.
Ich erfahre, daß das mkdev Kommando auf einer PCI Architektur nicht so funktioniert wie auf einer MCA Architektur, man das Beispiel also so vergessen kann - Pech.
Abfrage der einzelnen Daten:
Wo sind alle Geräte der Klasse "adapter" angeschloßen? # lsdev -Cc adapter -r connwhere 128 16 176 24 IBM0005ffffffff IBM0017ffffffff IBM0019ffffffff PNP0303ffffffff PNP0401ffffffff PNP05011 PNP05012 PNP0700ffffffff PNP0F03ffffffff Wo ist das Device "ent1" angeschloßen? # lsdev -Cl ent1 -F connwhere 16 Was ist das Device "ent1" für ein Type? # lsdev -Cl ent1 -F type 22100020 Was ist das Eltern-Devices? # lsdev -Cl ent1 -F parent bus2 Zu welcher Unterklasse gehört das Device? # lsdev -Cl ent1 -F subclass pci
[ Allgemein | UNIX | AIX | TCP-IP | TCP | ROUTING | DNS | NTP | NFS | FreeBSD | Linux | RPi | SMTP | Tracing | GPS | LW ]
Copyright 2001-2021 by Orm Hager - Es gilt die GPL