orm@doc-tcpip.org

Erstellt: Mai 2000 - Letzte Modifikation: November 2002

[ Main | Local ]


Wie man unter AIX mit Devices umgeht


Wissenswertes um Devices
Ich möchte die Einstellungen eines Devices ändern
Ich möchte wissen, welche Einstellungen aktuell gelten
Was für Informationen bringt das Device mit (z.B. die Seriennummer)?
Welche Devices habe ich?
Ich will ein Device neu anlegen.
Was macht der cfgmgr?

Devices sind entweder Defined, Stopped oder Available.

Wie ist das mit Device-Classes?

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
tcpip
Klasse tape, Unterklasse scsi und Typ 4mm4gb:
$ lsdev -Cc tape -r subclass
scsi

$ lsdev -Cc tape -r type
4mm4gb

Das ist ein wenig mager, also nochmal ein Beispiel aus dem Netzwerk-Bereich:

Klasse if (Interface), Unterklasse EN (Ethernet) und Typ en (Ethernet II) oder ie3 (IEEE 802.3 Ethernet):
$ 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?

Das sieht man mit demselben Kommandos, aber mit dem Flag -P:
$ 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....

Schauen wir uns mal die Adapter an:
$ 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.

Das chdev (Change Device) Kommando

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:

Einige Beispiele:

Das lsattr (List Attributes) Kommando

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:

Das lscfg (List Configuration) Kommando

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.

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 (List Devices) Kommando

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.

Das mkdev (Make Device) Kommando

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


[ Main | Local ]

[ 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
Feedback bitte an: Orm Hager (orm@doc-tcpip.org )