Nicht vergessen AIX-rpm zu aktualisieren

Kürzlich, bei der Installation von Python3 aus der AIX-Toolbox mittels YUM, sind wir auf folgende Fehlersituation gestoßen:

# yum install python3
...
--> Finished Dependency Resolution
Error: Package: python3-3.7.1-1.ppc (AIX_Toolbox)
           Requires: libssl.a(libssl.so.1.0.2)
Error: Package: python3-3.7.1-1.ppc (AIX_Toolbox)
           Requires: libcrypto.a(libcrypto.so.1.0.2)
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
#

Python3 benötigt die Version 1.0.2 von libssl.so und libcrypto.so, die beiden Libraries können aber nicht gefunden werden. Diese beiden Bibliotheken können entweder über das RPM-Paket openssl, in der passenden Version, bereitgestellt werden oder über AIX. Wenn die AIX-Toolbox verwendet wird, wird typischerweise das Paket openssl nicht installiert, sondern es werden die OpenSSL-Bibliotheken von AIX genutzt. Daher ist in unserem Fall das OpenSSLRPM-Paket nicht installiert. Die Bibliotheken werden dann über BFF Pakete des AIX Betriebssystems zur Verfügung gestellt.

Die Information, welche Libraries von AIX zur Verfügung gestellt werden, wird über das virtuelle RPM-Paket AIX-rpm bereitgestellt:

# rpm -q --provides AIX-rpm | egrep "lib(ssl|crypto)"
libcrypto.a(libcrypto.so)
libcrypto.a(libcrypto.so.0.9.8)
libcrypto.a(libcrypto.so.1.0.0)
libcrypto.a(libcrypto64.so)
libcrypto.a(libcrypto64.so.0.9.8)
libcrypto.a(libcrypto64.so.1.0.0)
libcrypto.so.0.9.7
libcrypto_compat.a(libcrypto.so)
libcrypto_compat.a(libcrypto.so.0.9.8)
libcrypto_compat.a(libcrypto64.so)
libcrypto_compat.a(libcrypto64.so.0.9.8)
libssl.a(libssl.so)
libssl.a(libssl.so.0.9.8)
libssl.a(libssl.so.1.0.0)
libssl.a(libssl64.so)
libssl.a(libssl64.so.0.9.8)
libssl.a(libssl64.so.1.0.0)
libssl3.a(libssl3.so)
libssl3.so
libssl_compat.a(libssl.so)
libssl_compat.a(libssl.so.0.9.8)
libssl_compat.a(libssl64.so)
libssl_compat.a(libssl64.so.0.9.8)
#

Die Ausgabe zeigt, das dem Paket AIX-rpm die Versionen 0.9.8 und 1.0.0 der beiden benötigten Bibliotheken bekannt sind, die benötigte Version 1.0.2 ist aber anscheinend nicht verfügbar. Wir schauen kurz in das zugehörige Archiv /usr/lib/libssl.a (bzw. /usr/lib/libcrypto.a) herein:

# ar -X any t /usr/lib/libssl.a
libssl.so
libssl.so.0.9.8
libssl.so.1.0.0
libssl.so.1.0.2
libssl.so
libssl.so.0.9.8
libssl.so.1.0.0
libssl.so.1.0.2
libssl64.so
libssl64.so.0.9.8
libssl64.so.1.0.0
#

Das Archiv stellt offensichtlich auch die Version 1.0.2 zur Verfügung. Diese Information wird aber über das RPM-Paket AIX-rpm nicht geliefert. Das liegt daran, das offensichtlich eine neuere Version von openssl.base installiert wurde, das AIX-rpm Paket aber nicht aktualisiert wurde. Das RPM-Paket hat aktuell die folgende Version:

# rpm -q AIX-rpm
AIX-rpm-7.1.5.15-6.ppc
#

Wir aktualisieren das Paket jetzt mit dem Kommando updtvpkg (update virtual package):

# updtvpkg
Please wait...
# 
# rpm -q AIX-rpm
AIX-rpm-7.1.5.30-7.ppc
#

Die Versionsnummer hat sich jetzt von 7.1.5.15-6 auf 7.1.5.30-7 geändert! Wir lassen uns erneut anzeigen, welche Libraries von AIX über AIX-rpm bereitgestellt werden:

# rpm -q --provides AIX-rpm | egrep "lib(ssl|crypto)"
libcrypto.a(libcrypto.so)
libcrypto.a(libcrypto.so.0.9.8)
libcrypto.a(libcrypto.so.1.0.0)
libcrypto.a(libcrypto.so.1.0.2)
libcrypto.a(libcrypto64.so)
libcrypto.a(libcrypto64.so.0.9.8)
libcrypto.a(libcrypto64.so.1.0.0)
libcrypto.so
libcrypto.so.0.9.7
libcrypto.so.1.0.0
libcrypto_compat.a(libcrypto.so)
libcrypto_compat.a(libcrypto.so.0.9.8)
libcrypto_compat.a(libcrypto64.so)
libcrypto_compat.a(libcrypto64.so.0.9.8)
libssl.a(libssl.so)
libssl.a(libssl.so.0.9.8)
libssl.a(libssl.so.1.0.0)
libssl.a(libssl.so.1.0.2)
libssl.a(libssl64.so)
libssl.a(libssl64.so.0.9.8)
libssl.a(libssl64.so.1.0.0)
libssl.so
libssl.so.1.0.0
libssl3.a(libssl3.so)
libssl3.so
libssl_compat.a(libssl.so)
libssl_compat.a(libssl.so.0.9.8)
libssl_compat.a(libssl64.so)
libssl_compat.a(libssl64.so.0.9.8)
#

Nach der Aktualisierung des virtuellen Pakets AIX-rpm, steht jetzt auch in der RPM-Datenbank das libssl.so und libcrypto.so auch in der Version 1.0.2 verfügbar sind.

Die Installation von Python3 verläuft jetzt erfolgreich:

# yum install python3
...
Is this ok [y/N]: y
...
Installed:
  python3.ppc 0:3.7.1-1                                                                                       

Dependency Installed:
  bzip2.ppc 0:1.0.6-3  expat.ppc 0:2.2.4-1  info.ppc 0:6.4-1  libffi.ppc 0:3.2.1-3  libstdc++.ppc 0:6.3.0-2
  ncurses.ppc 0:6.1-2

Dependency Updated:
  readline.ppc 0:7.0-5                                                                                        

Complete!
#

Daher bei Updates von BFF Paketen die Aktualisierung von AIX-rpm nicht vergessen!

MDS Report schnell auf der Kommandozeile anzeigen

Viele AIX und Power System Administratoren nutzen Microcode Discovery Services, um die Versionsstände von Adapter Firmware und System Firmware regelmäßig zu überprüfen. Dabei sind in der Regel die folgenden Schritte notwendig:

– Herunterladen des aktuellen Catalog Files catalog.mic.

– Ausführen von Inventory Scout zur Erzeugung des Microcode Upload Files.

– Upload des Microcoad Upload Files nach IBM http://www14.software.ibm.com/support/customercare/mds/mds

Dabei wird in vielen Fällen der Upload über einen Browser durchgeführt. Die Auswertung bekommt man dann im Browser in Form einer HTML-Ausgabe. Alternativ kann man aber auch den Upload z.B. mit Hilfe von curl durchführen und als Resultat die Daten im JSON-Format anfordern.

$ curl -F "mdsData=@ms01-vio1.mup;type=multipart/form" -F "format=json" -H "Expect:" http://www14.software.ibm.com/support/customercare/mds/mds -o ms01-vio1.mup

Im zurück gelieferten JSON-File stehen alle Informationen, die ansonsten im Browser angezeigt werden.

Mit einem kleinen Skript lässt sich das JSON-File relativ leicht in lesbarer ASCII-Form darstellen. Dazu haben wir das Skript mds_report in unserem Download-Bereich (https://powercampus.de/download) zur Verfügung gestellt. Als Argument erwartet das Skript ein Microcode Upload File, hier eine Beispiel-Ausgabe:

$ mds_report ms01-vio1.mup
ms01-vio1.mup upload microcode upload file to IBM ... uploaded

Microcode by Host

ms01-vio1
IP Addr: X.X.X.X
Model: 8205-E6D   Serial: XXXXXX
Microcode catalog: 2020.07.30

DEVICES          INSTALLED        LATEST           RECOMMEND   PKGNAME
system           AL770_126        AL770_126        None        8231-E1D; 8231-E2D; 8246-L1D; 8246-L1T; 8246-L2D; 8246-L2T; 8202-E4D; 8205-E6D; 8268-E1D; 8493-SV6 HV16 System Firmware
sissas0          0422003f         0422003f         None        PCI Express x8 Ext Dual-x4 3Gb SAS RAID Adapter (CCIN: 574E)
ent0,1,2,3       10080180         10240310         Update      4-Port Gigabit Ethernet PCI-Express Adapter
ent4,5,6,7       0400401800007    0400401800009    Update      PCIe2 2-Port 10GbE SFP+Copper or 10GbE SR Adapter
fcs0,1,2,3       210301           210313           Update      PCIe2 4-Port 8Gb Fibre Channel Adapter, FC 5729
fcs4,5,6,7       0320080270       0325080271       Update      8Gb PCIe2 Low Profile 4-Port FC Adapter
hdisk0,1         37343138         37343139         Update      Savvio 15K.3 146/300GB SAS Disk Drive
cd0              RA65             RA65             None        SATA DVD-RAM Drive RMBO0140512

Microcode by Type

IMPACT        SEVERITY    RELDATE       LATEST           PKGNAME
Security      SPE         2018.05.27    AL770_126        8231-E1D; 8231-E2D; 8246-L1D; 8246-L1T; 8246-L2D; 8246-L2T; 8202-E4D; 8205-E6D; 8268-E1D; 8493-SV6 HV16 System Firmware
Usability     ATT         2013.06.06    0422003f         PCI Express x8 Ext Dual-x4 3Gb SAS RAID Adapter (CCIN: 574E)
Usability     ATT         2019.06.20    10240310         4-Port Gigabit Ethernet PCI-Express Adapter
Usability     ATT         2016.11.14    0400401800009    PCIe2 2-Port 10GbE SFP+Copper or 10GbE SR Adapter
Usability     ATT         2019.06.17    210313           PCIe2 4-Port 8Gb Fibre Channel Adapter, FC 5729
Usability     ATT         2020.01.28    0325080271       8Gb PCIe2 Low Profile 4-Port FC Adapter
Function      ATT         2019.04.30    37343139         Savvio 15K.3 146/300GB SAS Disk Drive
New           NEW         2014.10.24    RA65             SATA DVD-RAM Drive RMBO0140512
$

Die Ausgabe lehnt sich stark an die Ausgabe im Browser an. Im ersten Abschnitt „Microcode by Host“ werden die Update Empfehlungen für die System Firmware und Adapter Firmware ausgegeben. Im zweiten Abschnitt „Microcode by Type“ werden Impact und Severity, sowie das Release Date der letzten verfügbaren Firmware Version ausgegeben.

Ist der Zugriff ins Internet nur über einen Proxy möglich, dann kann der Proxy über das Argument -x angegeben werden, wie im folgenden Beispiel gezeigt:

$ mds_report -x http://10.0.0.217:1234 ms07-vio1.mup
ms07-vio1.mup upload microcode upload file to IBM ... uploaded

Microcode by Host

ms07-vio1
IP Addr: X.X.X.X
Model: 8408-44E   Serial: XXXXXXX
Microcode catalog: 2020.07.30

DEVICES          INSTALLED        LATEST           RECOMMEND   PKGNAME
system           SV860_138        SV860_215        Update      8247-21L, 8247-22L, 8247-42L, 8284-21A, 8284-22A, 8286-41A, 8286-42A, 8408-44E, 8408-E8E, 5148-21L, 5148-22L - system-v860.60
sissas0          15511800         19512900         Update      PCIe3 RAID SAS Adapter Quad-port 6Gb x8...
ses0,1,2,3       1D0B             1D0B             None        SAS Enclosure Services for Power 8 4U High Function DASD backplane 8408-E8E
pdisk0,1         37363135         37363142         Update      BP5XX15KHDD 15KRPM 73/146/300/600GB SAS Disk Drive
fcs0,1           00010000020025201919  00012000040025700015  Update      PCIe2 2-Port 16Gb FC Adapter
fcs2,3,4,5       0320080270       0325080271       Update      8Gb PCIe2 Low Profile 4-Port FC Adapter

Microcode by Type

IMPACT        SEVERITY    RELDATE       LATEST           PKGNAME
Security      HIPER       2020.03.04    SV860_215        8247-21L, 8247-22L, 8247-42L, 8284-21A, 8284-22A, 8286-41A, 8286-42A, 8408-44E, 8408-E8E, 5148-21L, 5148-22L - system-v860.60
Availability  ATT         2020.02.25    19512900         PCIe3 RAID SAS Adapter Quad-port 6Gb x8...
New           NEW         2015.06.03    1D0B             SAS Enclosure Services for Power 8 4U High Function DASD backplane 8408-E8E
Function      ATT         2020.04.16    37363142         BP5XX15KHDD 15KRPM 73/146/300/600GB SAS Disk Drive
Usability     ATT         2020.02.18    00012000040025700015  PCIe2 2-Port 16Gb FC Adapter
Usability     ATT         2020.01.28    0325080271       8Gb PCIe2 Low Profile 4-Port FC Adapter
$

Möchte man das Skript häufiger verwenden, dann sollte man den Proxy in das Skript selbst eintragen, hierzu gibt es die Variable PROXY, die man dann wie folgt setzen kann:

$ grep ^PROXY mds_report
PROXY="http://10.0.0.217:1234"
$

Die Angabe eines Proxies über die Option -x ist dann nicht mehr notwendig.

Wird das Skript als root auf einem AIX-System ausgeführt, wird automatisch die Proxy-Konfiguration von ESA (Electronic Service Agent) übernommen.

Benötigt man die URLs für den Download der Firmware sollte man die Option -u (show download URLs) verwenden. Die Links für die Firmware Versionen werden dann am Ende der Ausgabe aufgelistet, hier ein Beispiel:

$ mds_report -u ms03-vio1.mup
/appdata/daten/fk450/aix/mds/virt-aix23-vio1.mup upload microcode upload file to IBM ... uploaded

Microcode by Host

ms03-vio1
IP Addr: X.X.X.X
Model: 9009-22A   Serial: XXXXXXX
Microcode catalog: 2020.07.30

DEVICES          INSTALLED        LATEST           RECOMMEND   PKGNAME
system           VL910_144        VL940_050        Update      9008-22L; 9009-22A; 9009-41A; 9009-42A; 9223-22H; and 9223-42H-system
sissas0          19511400         19512900         Update      PCIe3 RAID SAS Adapter Quad-port 6Gb x8...
pdisk0           36383035         36383035         None        AL14SE 600/1200/1800 GB 4K Hard Disk Drive
pdisk1,2         41374B30         41374B30         None        Ultrastar C15K600-5xx
fcs0,1,2,3,4,5,6,7  00011000040041500005  00012000040025700015  Update      PCIe3 4-Port 16Gb FC Adapter

Microcode by Type

IMPACT        SEVERITY    RELDATE       LATEST           PKGNAME
Availability  SPE         2020.05.21    VL940_050        9008-22L; 9009-22A; 9009-41A; 9009-42A; 9223-22H; and 9223-42H-system
Availability  ATT         2020.02.25    19512900         PCIe3 RAID SAS Adapter Quad-port 6Gb x8...
Data          HIPER       2016.12.01    36383035         AL14SE 600/1200/1800 GB 4K Hard Disk Drive
Function      ATT         2015.08.18    41374B30         Ultrastar C15K600-5xx
Usability     ATT         2020.02.18    00012000040025700015  PCIe3 4-Port 16Gb FC Adapter

Downloads

http://www.ibm.com/support/fixcentral/quickorder?product=ibm/power/900922A&release=all&platform=all&function=fixId&includeSupersedes=0&source=fc&fixids=01VL940_050_027
http://www.ibm.com/support/fixcentral/quickorder?product=ibm/io&release=all&platform=all&function=fixId&includeSupersedes=0&source=fc&fixids=40145679_20200224110413_GRP
http://www.ibm.com/support/fixcentral/quickorder?product=ibm/io&release=all&platform=all&function=fixId&includeSupersedes=0&source=fc&fixids=1354333840_20161130155709_GRP
http://www.ibm.com/support/fixcentral/quickorder?product=ibm/io&release=all&platform=all&function=fixId&includeSupersedes=0&source=fc&fixids=1448849004_20150813164908_GRP
http://www.ibm.com/support/fixcentral/quickorder?product=ibm/io&release=all&platform=all&function=fixId&includeSupersedes=0&source=fc&fixids=427029183_20200213134040_GRP
$

Ein Lauf des Skripts dauert in der Regel unter 1 Sekunde!

Wir haben das Skript unter AIX, Linux und MacOS getestet. Unter MacOS gibt es in der Regel keine ksh93. Dafür unterstützt aber die installierte ksh alle notwendigen Features die vom Skript mds_report benötigt werden. Tauscht man den Interpreter in der ersten Zeile des Skripts gegen ksh aus, dann läuft das Skript auch auf einem Mac.

Eine gute Beschreibung zu Inventory Scout und MDS findet man hier: http://gibsonnet.net/blog/cgaix/html/MDS%20reports.html (Chris Gibson)

Wie man Inventory Scout automatisieren kann, findet man in unserem Artikel Automatisierung von Inventory Scout

 

nmon_printer: schneller Blick in NMON-Dateien

Viele Administratoren setzen NMON zum Sammeln von Performance-Daten auf AIX-Systemen ein. Die gesammelten Daten können dann z.B. mit dem NMON-Analyzer graphisch visualisiert werden. Alternativ kann man natürlich auch njmon einsetzen. Manchmal möchte man einen schnellen Blick in eine NMON-Datei noch auf dem AIX-System werfen. Das geht natürlich mit grep, awk , und anderen Standard UNIX Utilities. Es muss aber immer erst die passende Kommandozeile überlegt und eingetippt werden und die Ausgabe ist dann auch nicht immer sehr übersichtlich.

Für einen solchen schnellen Blick in eine NMON-Datei haben wir in umserem Download Bereich das Skript nmon_printer zur Verfügung gestellt. Mit dem nmon_printer kann man zunächst einmal auflisten welche Daten grundsätzlich in der NMON-Datei gesammelt wurden:

$ nmon_printer -l aix01_200718.nmon
CPU_ALL -     CPU Total aix01
CPU01 -       CPU 1 aix01
CPU02 -       CPU 2 aix01
CPU03 -       CPU 3 aix01
CPU04 -       CPU 4 aix01
CPU05 -       CPU 5 aix01
CPU06 -       CPU 6 aix01
CPU07 -       CPU 7 aix01
CPU08 -       CPU 8 aix01
MEM -         Memory aix01
MEMNEW -      Memory New aix01
MEMUSE -      Memory Use aix01
PAGE -        Paging aix01
...
$

Zum Anzeigen der Datensätze gibt man neben dem NMON File noch den gewünschten darzustellenden Datensatz an, Groß- oder Klein-Schreibung spielt dabei keine Rolle. Hier eine Beispiel für CPU_ALL:

$ nmon_printer aix01_200718.nmon cpu_all
  CPU_ALL             Timestamp  User%  Sys%  Wait%  Idle%  Busy  PhysicalCPUs 
  CPU_ALL  00:05:15 17-JUL-2020    1.2   3.0    0.1   95.7   4.2              8
  CPU_ALL  00:10:15 17-JUL-2020    1.3   2.7    0.0   96.0   3.9              8
  CPU_ALL  00:15:15 17-JUL-2020    1.0   2.3    0.1   96.7   3.3              8
  CPU_ALL  00:20:16 17-JUL-2020    5.1   3.0    0.1   91.8   8.2              8
  CPU_ALL  00:25:16 17-JUL-2020    1.2   2.7    0.0   96.0   3.9              8
  CPU_ALL  00:30:16 17-JUL-2020    1.1  17.5    0.1   81.3  18.5              8
  CPU_ALL  00:35:16 17-JUL-2020    1.1   5.8    0.0   93.1   6.9              8
...
$

In manchen Fällen hat ein Datensatz soviel Felder, das die Zeilen umgebrochen werden und die Ausgabe dann etwas unübersichtlich wird. Der Datensatz LPAR hat z.B. 23 Felder! Für solche Fälle, oder falls man nur an bestimmten Feldern interessiert ist, kann man mit der Option ‚-f‚ die gewünschten Felder angeben. Dabei kann man entweder die gewünschten Felder durch Komma getrennt angeben:

$ nmon_printer -f 0,1,2,13,14,15 aix01_200718.nmon lpar
  LPAR             Timestamp  PhysicalCPU  EC_User%  EC_Sys%  EC_Wait%
  LPAR  00:05:15 17-JUL-2020        0.037      1.23     2.95      0.00
  LPAR  00:10:15 17-JUL-2020        0.034      1.28     2.66      0.00
  LPAR  00:15:15 17-JUL-2020        0.029      1.03     2.25      0.00
  LPAR  00:20:16 17-JUL-2020        0.064      5.14     3.01      0.00
  LPAR  00:25:16 17-JUL-2020        0.035      1.21     2.69      0.00
  LPAR  00:30:16 17-JUL-2020        0.150      1.08    17.46      0.02
  LPAR  00:35:16 17-JUL-2020        0.063      1.13     5.77      0.00
  LPAR  00:40:16 17-JUL-2020        0.030      1.13     2.24      0.00
  LPAR  00:45:16 17-JUL-2020        0.030      1.06     2.34      0.00
...
$

Oder man kann auch Bereiche angeben (z.B. 0-2 oder 13-15):

$ nmon_printer -f 1,5-7 aix01_200718.nmon ioadapt
             Timestamp  fcs1_read-KB/s  fcs1_write-KB/s  fcs1_xfer-tps
  00:05:15 17-JUL-2020             0.0             27.3            3.0
  00:10:15 17-JUL-2020             0.0              0.0            2.6
  00:15:15 17-JUL-2020             0.0             13.6            2.8
  00:20:16 17-JUL-2020             0.0             13.6            2.3
  00:25:16 17-JUL-2020             0.0             13.7            2.3
  00:30:16 17-JUL-2020            27.3           4982.5           89.4
  00:35:16 17-JUL-2020            13.7             27.3            4.1
  00:40:16 17-JUL-2020             0.0             13.6            2.6
  00:45:16 17-JUL-2020             0.0             13.6            2.6
...
$

Die Zählung der Felder beginnt jeweils bei 0.

AIX Lifecycle ermitteln

Wie oft haben Sie schon den Lifecycle (Start allgemeine Verfügbarkeit und Ende des Supports) für AIX, VIOS, PowerHA oder HMC über Google gesucht?

Diese Informationen lassen sich mit Hilfe des IBM FLRT APIs (https://www14.software.ibm.com/webapp/set2/flrt/sas?page=jsonapi) auch leicht über die Kommandozeile herausfinden. Dazu braucht man lediglich:

  • eine direkte Internet Anbindung oder Anbindung über einen HTTP Proxy
  • eine installierte Version von curl

Eine Übersicht sämtlicher AIX-Versionen bekommt man dann mit Hilfe des folgenden curl-Aufrufs:

$ curl "https://www14.software.ibm.com/support/customercare/flrt/liteTable?prodKey=aix&format=json"
{"results": [
{
"input": "7200-04-02",
"inputurl": "http://www.ibm.com/support/fixcentral/aix/quickorder?fixids=U887468&function=fixId&includeRequisites=1&includeSupersedes=0&release=7.2&source=flrt",
"ga": "2020.05.15",
"eosps": "2022.11.30"
},
{
"input": "7200-04-01",
"inputurl": "http://www.ibm.com/support/fixcentral/aix/quickorder?fixids=U886355&function=fixId&includeRequisites=1&includeSupersedes=0&release=7.2&source=flrt",
"ga": "2019.11.15",
"eosps": "2022.11.30"
},
...

Die Ausgabe erfolgt im JSON-Format und ist im Beispiel stark gekürzt.

Wir haben das ganze in ein kleines Shell-Skript verpackt (show_life_cycle) und in unserem Dowload-Bereich zur Verfügung gestellt (https://powercampus.de/download).

Hier ein Beispiellauf des Skriptes ohne Argumente:

$ show_life_cycle 
VERSION          GA          EOSPS       UPDATE           UPGRADE
7200-04-02       2020.05.15  2022.11.30  -                -
7200-04-01       2019.11.15  2022.11.30  -                -
7200-04-00       2019.11.15  2022.11.30  7200-04-01       -
7200-03-04       2020.02.14  2021.09.30  -                7200-04-01
7200-03-03       2019.05.10  2021.09.30  7200-03-04       7200-04-01 
7200-03-02       2018.11.16  2021.09.30  7200-03-04       7200-04-01
...

Es werden alle AIX Versionen aufgelistet. Über ein Argument können aber auch andere Produkte zur Darstellung ausgewählt werden, z.B. RHEL-Versionen, SLES-Versionen, VIOS-Versionen, HMC-Versionen, PowerHA-Versionen und sogar HMC-Modelle oder Power Systeme. Eine vollständige Liste findet man unter https://www14.software.ibm.com/webapp/set2/flrt/doc?page=prodTable. Hier als Beispiel eine Auflistung der RHEL-Versionen:

$ show_life_cycle rhel
VERSION          GA          EOSPS       UPDATE           UPGRADE
8.0              2019.05.07  NA          -                -
7.7              2019.08.06  NA          -                -
7.6              2018.10.30  NA          7.7              -
7.5              2018.04.10  NA          7.7              -
7.4              2017.07.31  NA          7.7              -
7.3              2016.11.03  NA          7.7              -
7.2              2015.11.19  NA          7.7              -
7.1              2015.03.05  NA          7.7              -
7.0              2014.06.10  2015.03.05  7.7              -
6.10             2018.06.19  NA          -                7.6
6.9              2017.03.21  NA          6.10             7.6
6.8              2016.05.10  NA          6.10             7.6
6.7              2015.07.22  NA          6.10             7.6
6.6              2014.10.14  NA          6.10             7.6
6.5              2013.11.21  2014.10.14  6.10             7.6
...

Die Ausgaben sind in einigen Fällen sehr lang. Über ein weiteres Argument kann man einen Prefix der gewünschten Versionen angeben, hier gezeigt am Beispiel von PowerHA 7.2.2:

$ show_life_cycle hacmp 7.2.2
VERSION          GA          EOSPS       UPDATE           UPGRADE
7.2.2.4          2020.05.28  2021.04.30  -                7.2.3.2
7.2.2.3          2019.09.13  2021.04.30  -                7.2.3.2
7.2.2.2          2018.11.30  2021.04.30  7.2.2.3          7.2.3.2
7.2.2.1          2018.06.29  2021.04.30  7.2.2.3          7.2.3.2
7.2.2            2017.12.15  2021.04.30  7.2.2.3          7.2.3.2
$

Ist nur eine Anbindung über einen Proxy verfügbar, dann gibt es die folgenden Möglichkeiten:

1. Der HTTP-Proxy wird über die Option ‚-p‚ angegeben, z.B.:

$ show_life_cycle -p http://10.0.0.3:8000 hmc V9
VERSION          GA          EOSPS       UPDATE           UPGRADE
V9 R1 M941       2020.05.22  2021.04.30  -                -
V9 R1 M940       2019.11.22  2021.04.30  -                -
V9 R1 M931       2019.09.11  2021.04.30  -                -
V9 R1 M930       2019.05.17  2021.04.30  V9 R1 M931       -
V9 R1 M921       2018.11.16  2021.04.30  V9 R1 M931       -
V9 R1 M920       2018.08.17  2021.04.30  V9 R1 M931       -
V9 R1 M911       2018.05.25  2021.04.30  V9 R1 M931       -
V9 R1 M910       2018.03.20  2021.04.30  V9 R1 M931       -
$

2. Der HTTP-Proxy wird direkt im Skript gesetzt, Shell-Variable PROXY:

$ grep ^PROXY show_life_cycle 
PROXY="http://10.0.0.3:8000"
$

3. Wird das Skript unter AIX als root ausgeführt, wird automatisch die Proxy Konfiguration des Electronic Service Agents (ESA) übernommen. Kann durch Verwenden der Kommandozeilen-Option ‚-p‚ oder Setzen der Variablen PROXY überschrieben werden.

Das Skript sollte auf jedem UNIX-System mit einer Korn-Shell laufen (auch MacOS). Damit ist die Suche über Google für Life-Cycle Daten nicht mehr erforderlich.

Zum Thema Inventory Scout haben wir neben einem Artikel Automatisierung von Inventory Scout ebenfalls ein Skript zum Download verfügbar!

Automatisierung von Inventory Scout

Sie verwenden bisher Inventory Scout noch gar nicht oder nur gelegentlich manuell? Sie wollen Inventory Scout automatisiert auf allen Systemen laufen lassen, mit möglichst wenig Aufwand?

Dann sollten Sie sich unseren Artikel Automatisierung von Inventory Scout in der Rubrik Artikel / AIX anschauen. Dort wird anschaulich beschrieben welche Schritte nötig sind, um Inventory Scout automatisiert auf Systemen ablaufen zu lassen. Im Download-Bereich haben wir das Skript run_invscout zur Verfügung gestellt, das im Artikel beschrieben ist. Das Skript erlaubt von einem NIM-Server aus, mit nur einem Aufruf das aktuellste catalog.mic File von IBM herunterzuladen, auf beliebig viele NIM-Clients zu kopieren, auf den NIM-Clients einen Lauf von Inventory Scout zu starten und dann anschließend die Microcode Survey Upload Files von den NIM-Clients einzusammeln. Als letztes werden die Upload Files nach IBM MDS hochgeladen zur Analyse.

SUMA Proxy-Konfiguration

Um SUMA mit Proxy zu konfigurieren gibt es im Web eine Reihe von Dokumenten. Einige der älteren Dokumente beschreiben noch die Konfiguration von Proxies über Attribute von SUMA:

# suma -c -a HTTP_PROXY=http://10.0.0.1:49000
0500-019 The -a flag entry HTTP_PROXY=http://10.0.0.1:49000 is not valid. (main, /usr/sbin/suma [767])
0500-009 An error occurred attempting to save configuration settings. (main, /usr/sbin/suma [768])
# suma -c -a HTTPS_PROXY=https://10.0.0.1:49000
0500-019 The -a flag entry HTTPS_PROXY=https://10.0.0.1:49000 is not valid. (main, /usr/sbin/suma [767])
0500-009 An error occurred attempting to save configuration settings. (main, /usr/sbin/suma [768])
# suma -c -a HELLO=world
0500-019 The -a flag entry HELLO=world is not valid. (main, /usr/sbin/suma [767])
0500-009 An error occurred attempting to save configuration settings. (main, /usr/sbin/suma [768])
#

Leider werden die Attribute HTTP_PROXY und HTTPS_PROXY von SUMA nicht mehr unterstützt. Dies ist auch in der Manual Page von SUMA dokumentiert!

# man suma
...
HTTP_PROXY and HTTPS_PROXY
     Proxy server and port to use for the HTTP or HTTPS transfers. The SUMA command shares
     the proxy connectivity settings with the Electronic Service Agent\u2122. The HTTP or HTTPS
     proxy service configuration can be set up through the SMIT Create/Change Service
     Configuration menus (use fastpath smitty srv_conn) that allow the server
     specifications such as IP address, port number, and an optional user ID and password.
     SUMA no longer supports the settings of the HTTP_PROXY and HTTPS_PROXY parameters.

Die Proxy Konfiguration wird von ESA (Electronic Service Agent) übernommen. D.h. aber auch das Proxies über ESA konfiguriert werden müssen. Hierzu muss das Fileset bos.ecc_client.rte installiert sein. Dieses sollte aber installiert sein, da es ein Prerequisite für bos.suma ist.

Konfiguriert werden, können die Proxies entweder mittels SMIT oder über die Kommandozeile. Wir zeigen zunächst die Variante über die Kommandozeile:

# /usr/ecc/bin/config_conn_path -c PRIMARY -y HTTP_PROXY -t YES -a 10.0.0.1 -x 49000
###########################################################

Testing HTTP Proxy Service Configuration

Performing HTTP Proxy Connectivity Test ... SUCCESS
#

Die IP-Adresse des Proxy wird mit der Option ‚–a‚ angegeben, die Port-Nummer mit der Option ‚–x‚. Wenn ein Benutzer zur Authentifizierung notwendig ist, kann dieser mit der Option ‚–u‚ angegeben werden (das Passwort wird interaktiv abgefragt). Die Option ‚–t YES‚ sorgt dafür, das unmittelbar ein Verbindungs-Test gemacht wird, der hier erfolgreich war.

Neben der primären Verbindung (PRIMARY), können optional auch noch eine sekundäre (SECONDARY) und tertiäre (TERTIARY) Verbindung konfiguriert werden. Die aktuelle Konfiguration, z.B. für die primäre Verbindung kann man sich wie folgt anschauen:

# /usr/ecc/bin/config_conn_path -d PRIMARY
#type:ttyport:modem_type:primary_location:secondary_location:prefix:host:port:userid
HTTP_PROXY::::::10.0.0.1:49000:
#

Das Schlüsselwort ‚PRIMARY‚ kann mit ‚p‚ abgekürzt werden.

Ein Verbindungs-Test kann jederzeit mittels Option ‚–t YES‚ oder ‚–t y‚ gestartet werden:

# /usr/ecc/bin/config_conn_path -c p -t y
###########################################################

Testing HTTP Proxy Service Configuration

Performing HTTP Proxy Connectivity Test ... SUCCESS
#

Alternativ kann man auch SMIT verwenden:

# smitty configure_primary
…
                       Create/Change Primary Service Configuration

Type or select values in entry fields.
Press Enter AFTER making all desired changes.


                                                        [Entry Fields]
  Connection type                                    [HTTP_Proxy]                     +
  Test service configuration                         [No]                             +

  If type is DIRECT_INTERNET, no entry required.

  If type is HTTP_PROXY,
          IP address                                 [10.0.0.1]
          Port number                                [49000]                            #
          Authentication user ID                     []
          Authentication password requested interact
  ively.


F1=Help               F2=Refresh            F3=Cancel             F4=List
F5=Reset              F6=Command            F7=Edit               F8=Image
F9=Shell              F10=Exit              Enter=Do

Ein kleiner Test zeigt, das SUMA mit den konfigurierten Proxies funktioniert:

# suma -x -a DisplayName=Test -a Action=Preview -a RqType=Latest
**************************************** (main, /usr/sbin/suma [990])
Performing preview download. (main, /usr/sbin/suma [991])
**************************************** (main, /usr/sbin/suma [992])
Partition id was unassigned; will attempt to assign it.
Partition id assigned value 6
Download SUCCEEDED: /export/nim/suma/installp/ppc/U861910.bff (main, /usr/sbin/suma [1048])
Download SUCCEEDED: /export/nim/suma/installp/ppc/U861907.bff (main, /usr/sbin/suma [1048])
Download SUCCEEDED: /export/nim/suma/installp/ppc/U861904.bff (main, /usr/sbin/suma [1048])
…
Total bytes of updates downloaded: 899671552 (main, /usr/sbin/suma [1048])
Summary: (main, /usr/sbin/suma [1048])
        367 downloaded (main, /usr/sbin/suma [1048])
        0 failed (main, /usr/sbin/suma [1048])
        34 skipped (main, /usr/sbin/suma [1048])
DEBUG: Closing file handles (SUMA::Messenger, /usr/suma/lib/SUMA/Messenger.pm [401])
#

AIX: Probleme mit Run-Time Linking

Vermutlich hat schon jeder einmal Probleme mit AIX und Run-Time Linking gehabt. Z.B. wenn ein Programm beim Aufruf mit dem folgenden Fehler abbricht:

$ progXY
exec(): 0509-036 Cannot load program progXY because of the following errors:
        0509-150   Dependent module libXXX.a(shr.o) could not be loaded.
        0509-022 Cannot load module libXXX.a(shr.o).
        0509-026 System error: A file or directory in the path name does not exist.
$

In unserem Artikel AIX und Run-Time Linking erklären wir die Abläufe beim Run-Time Linking, sowie mögliche Fehler. Wir zeigen wie man ausführbare Programme und Bibliotheken mit dem Kommando dump untersucht. Außerdem wird die Bedeutung der Variablen LIBPATH und LD_LIBRARY_PATH für das dynamische Linking erklärt.

WWPN von FC-Ports in der Open Firmware

 

Der folgende Beitrag beschäftigt sich mit WWPN von FC-Ports in der Open Firmware.

Port- und Node-WWN von FC-Ports lassen sich über die Open Firmware sehr leicht herausfinden, auch wenn das ioinfo Kommando bei neuer POWER9 Firmware nicht mehr verfügbar ist. Der Hardware-Aufbau eines POWER-Systems ist in der Open Firmware in Form eines Device Baums verfügbar. Hardware-Komponenten, wie PCI-Bridges, Prozessoren oder PCI-Karten werden als Device Knoten in diesem Baum abgebildet.

Mit dem Kommando „dev /“ kann man, beginnend mit dem Root-Knoten („/“ oder Slash), auf die Device-Knoten zugreifen:

0 > dev /  ok
0 >

In dem Device Baum kann man sich mit den Kommandos dev, ls und pwd ähnlich wie im Unix Dateisystem bewegen. Ein ls auf dem Root-Knoten zeigt alle verfügbaren Device Knoten (sowie einige „Package-Knoten“, auf die hier nicht eingegangen werden soll).

Durch Einrücken der Device Knoten wird die Hierarchie im Device Baum dargestellt:

0 > ls 
0000020939c0: /ibm,serial
000002094ae8: /chosen
000002094d60: /packages
000002094e58:   /disassembler
...0000020af578: /cpus
0000020b5200:   /PowerPC,POWER7@0
...
0000020ba640: /memory@0
...
00000226cad0: /pci@800000020000120
00000229d750:   /pci@0
0000022a0018:     /pci@2
0000022a28e0:       /ethernet@0
0000022b4a28:       /ethernet@0,1
0000022c6b70:     /pci@4
0000022c9438:       /ethernet@0
0000022db580:       /ethernet@0,1
000002277fd8: /pci@800000020000121
0000022ed7d0:   /fibre-channel@0
0000023026e0:     /fp
000002303240:     /disk
000002304de0:     /tape
000002306270:   /fibre-channel@0,1
00000231b180:     /fp
00000231bce0:     /disk
00000231d880:     /tape
...
ok
0 >

In der Beispiel-Ausgabe sind 2 FC-Ports zu sehen. Beide FC-Ports sind Söhne des Device Knotens pci@800000020000121, welcher direkt unter dem Root Knoten / zu finden ist.

Mit dem Kommando „dev /pci@800000020000121“ navigieren wir zunächst in diesen Knoten und lassen uns dann die Unter- oder Sohn-Knoten mittels „ls“ anzeigen:

0 > dev /pci@800000020000121  ok
0 > ls
0000022ed7d0: /fibre-channel@0
0000023026e0:   /fp
000002303240:   /disk
000002304de0:   /tape
000002306270: /fibre-channel@0,1
00000231b180:   /fp
00000231bce0:   /disk
00000231d880:   /tape
ok
0 >

Wir bewegen uns als nächstes in den Device Knoten des ersten FC-Ports fibre-channel@0.

Mit dem Kommando „pwd“ überprüfen wir kurz die Position im Device Baum und schauen uns mit „ls“ anschließend die verfügbaren Unter-Knoten an:

0 > dev fibre-channel@0  ok
0 > pwd /pci@800000020000121/fibre-channel@0 ok
0 > ls
0000023026e0: /fp
000002303240: /disk
000002304de0: /tape
ok
0 >

Jeder Device Knoten besitzt eine Anzahl von Eigenschaften (Properties), welche von der Art der unterliegenden Hardware-Komponente abhängen.

Die Eigenschaften eines Device Knoten lassen sich mit dem Kommando „.properties“ anzeigen lassen (der Kommando-Name beginnt mit einem „.„):

0 > .properties
ibm,loc-code            U5802.001.008C110-P1-C2-T1
vendor-id               000010df
device-id               0000f100
...
name                    fibre-channel
...
manufacturer            456d756c 657800
copyright               436f7079 72696768 74202863 29203230 30302d32 30313220 456d756c 657800
device_type             fcp
model                   10N9824
...
port-wwn                10000000 c9b12345
node-wwn                20000000 c9b12345
...
ok
0 >

Neben dem Location-Code wird die Port-WWN (port-wwn) und die Node-WWN (node-wwn) angezeigt.

Wer mehr über den Aufbau von WWNs wissen möchte, verweisen wir gerne auf den Beitrag: Zahlen: FC World Wide Names (WWNs)

Man kann natürlich auf dem gleichen Weg auch die MAC-Adresse eines Ethernet-Ports herausfinden. Mit „dev ..“ kann man sich im Device Baum eine Ebene nach oben bewegen, ganz wie in einem Unix Filesystem. Man kann aber auch abkürzen und gleich ganz nach oben gehen, was wir hier im folgenden tun, um uns dann noch einmal alle verfügbaren Device Knoten anzeigen zu lassen:

0 > dev /  ok
0 > ls 
...
00000226cad0: /pci@800000020000120
00000229d750:   /pci@0
0000022a0018:     /pci@2
0000022a28e0:       /ethernet@0
0000022b4a28:       /ethernet@0,1
0000022c6b70:     /pci@4
0000022c9438:       /ethernet@0
0000022db580:       /ethernet@0,1
...
ok
0 >

Wir suchen uns als Beispiel den Device Knoten /pci@800000020000120/pci@0/pci@2/ethernet@0,1 aus und lassen uns wiederum die Eigenschaften anzeigen:

0 > dev /pci@800000020000124/pci@0/pci@2/ethernet@0,1  ok
0 > pwd /pci@800000020000124/pci@0/pci@2/ethernet@0,1 ok
0 > .properties
ibm,loc-code            U5802.001.008C110-P1-C4-T2
vendor-id               00008086
device-id               000010bc
...
name                    ethernet
...
device_type             network
...
max-frame-size          00000800
address-bits            00000030
local-mac-address       00145eea 1234
mac-address             00145eea 1234
...
0 >

Die MAC-Adresse ist hier über die Eigenschaft mac-address verfügbar.

Möchte man den Device Baum verlassen, so geht dies mit dem Kommando „device-end„:

0 > device-end  ok
0 >

Wir hoffen dieser Beitrag über WWPN von FC-Ports in der Open Firmware war sowohl hilfreich als auch informativ.

Fehler: 0509-022 Cannot load module

Kürzlich haben wir auf einigen unserer Systeme yum aus der AIX Toolbox (www.ibm.com/support/pages/aix-toolbox-linux-applications-overview) installiert. Bisher hatten wir RPM-Pakete von Perzl (www.perzl.org) installiert. Bei dem Umstieg auf yum wurden einige RPMs mit Versionen aus der AIX Toolbox aktualisiert. Bei einigen der RPMs gab es in Folge Probleme mit dynamischen Bibliotheken.

Wir behandeln im folgenden eines der Probleme, das bei dem Programm curl aufgetreten ist:

$ curl
exec(): 0509-036 Cannot load program curl because of the following errors:
        0509-022 Cannot load module /opt/freeware/lib/libcurl.a(libcurl.so.4).
        0509-150   Dependent module /opt/freeware/lib/libcrypto.a(libcrypto.so) could not be loaded.
        0509-152   Member libcrypto.so is not found in archive 
        0509-022 Cannot load module curl.
        0509-150   Dependent module /opt/freeware/lib/libcurl.a(libcurl.so.4) could not be loaded.
        0509-022 Cannot load module .
$

Vor der Installation der RPM-Pakete hatte curl noch funktioniert. Das Kommando ldd zum Auflisten dynamischer Abhängigkeiten liefert eine ähnliche Fehlermeldung:

$ ldd /usr/bin/curl
/usr/bin/curl needs:
         /usr/lib/libc.a(shr.o)
         /opt/freeware/lib/libcurl.a(libcurl.so.4)
         /opt/freeware/lib/libz.a(libz.so.1)
         /unix
         /usr/lib/libcrypt.a(shr.o)
         /opt/freeware/lib/libcrypto.a(libcrypto.so)
ar: 0707-109 Member name libcrypto.so does not exist.
dump: /tmp/tmpdir31457524/extract/libcrypto.so: 0654-106 Cannot open the specified file.
         /opt/freeware/lib/libssl.a(libssl.so)
ar: 0707-109 Member name libssl.so does not exist.
dump: /tmp/tmpdir31457524/extract/libssl.so: 0654-106 Cannot open the specified file.
$

Die Datei /opt/freeware/lib/libcrypto.a ist ein Archiv und die Fehlermeldung sagt das in diesem Archiv das Shared Object libcrypto.so nicht existiert. Das lässt sich mit dem Kommando ar leicht überprüfen:

$ ar -X any tv /opt/freeware/lib/libcrypto.a
rwxr-xr-x     0/0     3036810 Apr 08 18:46 2014 libcrypto.so.1.0.1
rwxr-xr-x     0/0     3510308 Apr 08 18:41 2014 libcrypto.so.1.0.1
rw-r--r--     0/0     2012251 Apr 08 18:46 2014 libcrypto.so.0.9.7
rw-r--r--     0/0     2491620 Apr 08 18:46 2014 libcrypto.so.0.9.8
rwxr-xr-x     0/0     2921492 Apr 08 18:46 2014 libcrypto.so.1.0.0
rw-r--r--     0/0     2382757 Apr 08 18:46 2014 libcrypto.so.0.9.7
rw-r--r--     0/0     2923920 Apr 08 18:46 2014 libcrypto.so.0.9.8
rwxr-xr-x     0/0     3381316 Apr 08 18:46 2014 libcrypto.so.1.0.0
$

(Die Option „-X any“ sorgt dafür das sowohl 32– als auch 64-bit Objekte angezeigt werden)

Die Shared Library libcrypto.so befindet sich offensichtlich nicht in dem Archiv! Das Archiv gehört zum OpenSSL-Paket von Perzl:

$ rpm -qf /opt/freeware/lib/libcrypto.a
openssl-1.0.1g-1.ppc
$

Das OpenSSL Paket ist auch die Ursache für die Probleme beim Aufruf von curl und eventuell auch anderen Programmen. Bei den Paketen von Perzl gibt es ein OpenSSL-Paket, welches OpenSSL unterhalb von /opt/freeware zur Verfügung stellt. Die IBM Pakete aus der AIX Toolbox verwenden aber das vom Betriebssystem kommende OpenSSL unter /usr/lib. In der AIX Toolbox gibt es daher kein OpenSSL RPM Paket. Das OpenSSL-Paket von Perzl sollte entfernt werden.

# rpm –e openssl
#

Hat man RPM-Pakete (Perzl), die von OpenSSL abhängig sind, schlägt das Entfernen des OpenSSL RPMs natürlich fehl:

# rpm -e openssl
error: Failed dependencies:
            openssl >= 0.9.8 is needed by (installed) openldap-2.4.23-0.3.ppc
#

In diesem Fall gibt es 2 Möglichkeiten: entweder man deinstalliert das abhängige Paket ebenfalls, oder man aktualisiert das Paket mit einer Version aus der AIX Toolbox. Wir zeigen hier kurz den zweiten Fall:

# yum update openldap
AIX_Toolbox                                                                                   | 2.9 kB  00:00:00    
AIX_Toolbox_71                                                                                | 2.9 kB  00:00:00    
AIX_Toolbox_noarch                                                                            | 2.9 kB  00:00:00    
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package openldap.ppc 0:2.4.23-0.3 will be updated
---> Package openldap.ppc 0:2.4.46-1 will be an update
...

Is this ok [y/N]: y

...

Updated:

  openldap.ppc 0:2.4.46-1                                                                                           

Complete!
#

Anschließend kann das OpenSSL RPM deinstalliert werden:

# rpm -e openssl
#

Nun lässt sich auch curl wieder ohne Problem starten:

$ curl
curl: try 'curl --help' or 'curl --manual' for more information
$

Fazit: Beim Wechseln auf die AIX Toolbox sollte ein eventuell vorhandenes OpenSSL RPM deinstalliert werden!