Linux
aus AS400wiki, der freien Wissensdatenbank
Über das Betriebssystem Linux muss an dieser Stelle nicht viel geschrieben werden. Hier geht es um Linux auf AS/400, iSeries oder System i - Installation, Tücken, Besonderheiten und Betrieb.
Diese Seiten sind im Aufbau, das Thema ist komplex und nicht in 5 Minuten erledigt. Arbeite mit!
Hinweis: Bevor Du gleich anfängst mit der Partitionierung, lies den Artikel erst komplett durch. Je nach AS/400-Modell sind eventuell IPLs nötig.
Inhaltsverzeichnis |
Installation
Voraussetzungen
System
Zunächst einmal ist zu prüfen, ob das AS/400-Modell auch Linux unterstützt. Generell gilt: CISC-Maschinen können kein Linux! Zumindest wird es nicht von IBM unterstützt, und niemand hat bisher eine erfolgreiche Installation geschafft. Das liegt an Besonderheiten der Hardware, und viele nötige Informationen sind nicht dokumentiert. Und betrachtet man die relativ geringe Leistung dieser Hardware, dürfte auch langwieriges Basteln nicht sinnvoll erscheinen, jeder billige PC ist besser :)
Also ist eine RISC-AS/400 mit 64Bit POWER nötig. Einige kleinere Modelle wie 150, 170, 250, einige 6xxer und 7xxer fallen auch raus. Die Maschine muss LPAR unterstützen, und V5R1 ist von Vorteil.
Multi-CPU ist empfehlenswert bei den 2xx und 8xxern, da diese LPAR mit shared CPUs nicht mit Linux können. Generelle Erfahrungen sagen: ab dem POWER5 ist das Laufenlassen von OS/400 und Linux auf einem Prozessor brauchbar flott. Bis zum POWER4 ist es nicht empfehlenswert, da die CPU ständig das Speichermodell wechseln muss.
Letztlich ist zu entscheiden, ob die Partition gehostet werden soll (Virtual-I/O, die Primärpartition übernimmt Ressourcenverwaltung wie Steckkarten und Plattenplatz) oder mit Direct-I/O laufen soll (über die Partitionierung müssen BUS-Systeme, Steckkarten und Platten exklusiv zugewiesen sein). Erste Methode ist aus Performancegründen vorzuziehen.
Speicher
Die Linuxpartition sollte mindestens 64MB RAM kriegen, mehr kann nicht schaden. RISC-Programme benötigen mehr RAM und Plattenplatz als i386-Programme, dies sollte auch bei der Auslegung des Plattenplatzes bedacht werden.
Software
Es muss nicht gleich eine teure Enterpreis-Servervariante einer Linux-Distribution sein, viele unterstützen auch in einer kostenlosen Variante mit dem PPC-Zweig auch die AS/400. Ich verwende in den folgenden Beispielen RedHat 7.1, da ich diese CDs grade greifbar habe. Die gezeigten OS/400-Bildschirme stammen von V5R1M0 bzw V5R3M0. Eventuell sieht es auf Deinem Release etwas anders aus.
Console-Benutzer im DST
Etwas verzwickt ist der Konsolen-Benutzer. Für die grundlegende Installation wird eine virtuelle Konsole über die primäre AS/400-Partition verwendet. Hierzu braucht es einen eigenen DST-Benutzer mit dem Recht für diese virtuelle Konsole. Je nach OS/400-Release (z.B. V5R1) musst Du das System erst manuell starten, damit Du einen eigenen Konsolenbenutzer anlegen kannst... danke IBM :) Wenn Du physischen Zugriff auf das System hast, kannst Du auch im laufenden Betrieb den Modus auf "manuell" stellen (eventuell Schlüssel nötig) und mit der Funktion 21 das DST aufrufen.
Starte also die DST und wähle aus:
5. Work with DST environment
3. Service tools user profiles
Lege nun einen neuen Benutzer mit beliebigem Namen und Kennwort an. Nun kannst Du mit der Auswahl 7 (change privileges) das Recht vergeben, eine Partitionskonsole zu verwenden. Dies ist die Option 2 (grant) für "partition remote panel key xxxxxxxx 01" (Zahl je nach Partitionsnummer). Vergib für Notfälle auch andere Partitionsrechte.
sonstiges
Es sollte Zugriff auf das SST vorhanden sein, sowie das Recht, eine Partition etc. anzulegen.
Vorbereitung
Partition für Linux erstellen
Wir brauchen eine Partition für Linux. Diese wird im SST erstellt. Melde Dich also als QSECOFR oder Benutzer mit ähnlichen Rechten im OS/400 an und starte die System Service Tools mit
STRSST
Melde Dich nun mit einem SST-Kennwort an - obacht, das sind eigene Kennworte, die nichts mit dem OS/400-Kennwort zu tun haben; ausserdem wird Gross/Kleinschreibung unterschieden. Das Standardkennwort vom QSECOFR dort ist "QSECOFR". Notfalls kann man mit CHGDSTPWD das Kennwort zurücksetzen.
Wähle nun im Menu "System Service Tools (SST)" den folgenden Menupunkt aus:
5. Work with system partitions
Das System zeigt in einem neuen Menu an, wie viele Partitionen bisher erstellt sind. Hier könntest Du prüfen, ob für Dein Vorhaben genug Ressourcen (RAM, CPU) vorhanden sind, in dem Du
1. Display partition information
auswählst und darunter mit der Auswahl "Display partition processing configuration" einen Blick werfen.
Falls Du bisher keine weiteren Partitionen auf der AS/400 hast, dürften alle Ressourcen wie CPU und RAM der einzigen Partition zugeordnet sein, daher müssen wir von dieser erst ein wenig Ressourcen entfernen. Vorsicht: Eventuell ist ein IPL des Systems nötig, um die CPU-Ressourcen freizuschaufeln!
3. Work with partition configuration
Du siehst einen Eintrag für die PRIMARY-Partition; hier kannst Du mit Option 2 (change partition processing resources) die Ressourcen verändern. Beispiel vorher:
Change Partition Processing Resources
System: BERTHA
Type changes, press Enter.
Partition identifier and name . . . . . . . . : 0 PRIMARY
Current / available number of processors . . . : 4 / 0
New number of processors . . . . . . . . . . . . 4
Use shared processor pool . . . . . . . . . . . 2 1=Yes, 2=No
Current / available size of main storage (MB) : 2048 / 0
New size of main storage (MB) . . . . . . . . . 2048
Current / available interactive feature . . . : 100 / 0 %
New interactive feature . . . . . . . . . . . . 100 %
Wir ändern nun die Anzahl "New number of processors" ab von 4 auf 3 (so dass wir eine CPU für Linux frei haben), sowie "New size of main storage (MB)" von 2048 auf 1024 - jede Partition hat dann ein GB RAM. Drücke die Eingabetaste, und der SLIC zeigt die neuen Werte samt zugehörigen I/O-Ressourcen zur Bestätigung an.
Auf älteren Systemen muss zum Entfernen von CPU-Ressourcen an der primären Partition das System neu gestartet werden. Im Bildschirm "Work with Partition Configuration" wird das durch ein "<" rechts vom Partition-Namen angezeigt, sowie durch die Meldung "< Indicates partition IPL may be required". Auch beim Verlassen des SST wird dezent hingewiesen, dass man zum Freischaufeln der Ressourcen doch bitte F10 drücken solle. Prüfe vorher, dass kein Benutzer angemeldet ist ;-)
Nachdem Du den eventuell nötigen IPL durchgeführt hast, kann eine neue Partition angelegt werden. Wechsle dazu wieder ins SST und arbeite mit den Partitionen.
Um eine neue Partition anzulegen, verwendest Du
5. Create a new partition
Nun musst Du angeben, ob die Partition OS/400 oder ein Gast-Betriebssystem betreiben soll. Wähle also aus
2. Guest
Es erscheint folgender Bildschirm, in dem Du die grundlegenden Ressourcen für die Partition angeben musst:
Create New Partition
System: BERTHA
Complete blanks, press Enter.
Partition identifier and name . . . . . . . . . 2 ______
Number of available system processors . . . . : 1
Number of partition processors . . . . . . . . . ___
Use shared processor pool . . . . . . . . . . . 2 1=Yes, 2=No
Size of available system main storage (MB) . . : 4096
Size of partition main storage (MB) . . . . . . ______
Der Partition identifier ist eine vom System vorgegebene Nummer, die man belassen sollte. Gib rechts daneben einen sinnvollen Namen ein, z.B. LINUX. Dann gibst Du an, wieviele CPUs für diese Partition reserviert werden sollen. Je nach System kannst Du darunter auch angeben, ob die Prozessoren shared (geteilt) verwendet werden sollen oder nicht. In ersterem Fall kann man auch Bruchteile eines Prozessors für eine Partition verwenden, ansonsten kann man nur ganze Prozessoren einer Partition zuweisen. In unserem Beispiel haben wir nur eine CPU frei, also tragen wir bei "Number of partition processors" auch 1 ein. Je nach Modell ist es - wie bereits angesprochen - möglich, eine CPU für mehrere LPARs gleichzeitig zu nutzen. Dann kannst Du bei "Use shared processor pool" eine 1 eingeben und einen Bruchteil von CPUs angeben. Dies verwenden wir in diesem Beispiel nicht.
Nun gibst Du noch an, wieviel des verfügbaren RAM der Partition zugewiesen werden soll, wir verwenden die noch freien 1024MB.
Im folgenden Bildschirm "Select Communication options" kannst Du angeben, ob die neue Partition über ein internes Virtuelles LAN mit anderen Partitionen kommunizieren dürfen soll. Schön ist es zum Beispiel, von der Primären Partition auf die neue Partition z.B. per FTP oder TELNET zuzugreifen. Trage also unter der "0" in diesem Bildschirm eine 1 ein, so dass der SLIC eine virtuelle Netzwerkverbindung schaltet.
Select Communication Options
System: BERTHA
Partition identifier . . . . . . . . . . . . . : 1
Partition name . . . . . . . . . . . . . . . . : LINUX
Type changes, press Enter.
1=Yes 2=No
-------------------Virtual LAN Identifiers-------------------
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
Zuletzt folgt der Bildschirm "Confirm New Partition", in dem Deine Angaben zusammengefasst werden. Drücke Datenfreigabe, dann wird die Partition erstellt.
Nun kannst Du die SST erst einmal verlassen. Eventuell ist auf älteren Systemen ein weiterer IPL nötig!
Speicher für gehostete Linux-Partition erstellen
Die gehostete Linux-Partition braucht Plattenspeicher. Dieser wird von der primären OS400-Partition als Datei gehostet und liegt in der Regel unter /QFPNNWSSTG im IFS. Wir erstellen als Beispiel eine 10GB-Datei, die der Linux-Partition als Festplatte nämlicher Größe dargestellt wird:
CRTNWSSTG NWSSTG(LINUX1) NWSSIZE(10000) FORMAT(*OPEN)
Damit wird ein Speicherbereich namens LINUX1 mit 10000 MB Größe ohne Formatierung erstellt. Das dauert je nach System schon eine Weile, da eine Menge Platten-I/O stattfinden wird - die Datei wird komplett neu mit Nullen geschrieben. Starte diesen Prozess, wenn nicht zu viel Benutzer auf dem System arbeiten, oder lasse das Erstellen der Datei(en) per Jobscheduler im Batch laufen. Dies ist eine gute Vorbereitung, denn die LPAR muss dafür noch nicht existieren.
Installationsdateien bereit stellen
Idealerweise brennt man eine CD oder DVD mit dem Image der Distribution und legt dieses entweder ins Laufwerk ein oder verwendet einen Image-Katalog (ab V5R2).
Nach dem Einlegen der Scheibe sollte OS/400 diese erkennen. Prüfen kann man dies am einfachsten mit
WRKLNK OBJ('/qopt')
Damit wird Dir das IFS-Verzeichnis /QOPT angezeigt. Mit Auswahl 5 sieht man unter /QOPT für jede verfügbare optische Scheibe einen Eintrag mit derem Namen. Wenn wir also zum Beispiel eine RedHat-CD eingelegt haben, sollte ein Verzeichnis
RED_HAT
erscheinen.
Mit der Auswahl 5 wiederum davor siehst Du den Inhalt. Wir suchen nun das Boot-Image für die iSeries-PPC-Distribution, die heisst zum Beispiel ISERIES64 (bei SuSE) oder VMLINUX im Ordner /PPC/ISERIES (bei RedHat).
Netzwerk-Server-Beschreibung erstellen
Die Partition wird auf der OS400-Seite von einer so genannten Netzwerk-Server-Beschreibung gesteuert. Wir geben hier einige grundlegende Parameter an, die auch gleich den ersten Boot für die Installation steuern.
Diese NWSD wird so erstellt (Befehl prompten, passt ja nicht in eine Zeile):
CRTNWSD NWSD(linux) RSRCNAME(*none) TYPE(*guest) ONLINE(*NO) PARTITION(LINUX)
CODEPAGE(850) IPLSRC(*STMF)
IPLSTMF('/QOPT/RED_HAT/PPC/ISERIES/VMLINUX') IPLPARM(*NONE)
Wichtig sind folgende Parameter:
- TYPE(*GUEST) - Angabe für eine gehostete Partition
- PARTITION(LINUX) - Name der Partition wie im SST erstellt
- IPLSRC(*STMF) - Wir booten aus einer Datei im Dateisystem
- IPLSTMF(...) - Pfad und Datei des Installations-Images (abhängig von der Distribution, siehe oben)
- IPLPARM(...) - Sehr wichtig, damit später direkt über VNC weiter installiert werden kann (z.B. bei SuSE)
Bei einer SLES8 sehen die Parameter IPLSTMF() und IPLPARM() z.B. so aus:
IPLSTMF('/QOPT/SU800.001/ISERIES64')
IPLPARM('vnc=1 vnc_password=geheim')
Speicherbereich hinzufügen
Damit die Linux-Partition den von uns erstellten Speicherbereich als Festplatte sieht und nutzen kann, muss dieser mit der Netwerkserver-Beschreibung verbunden werden:
WRKNWSSTG
zeigt eine Liste aller Netzwerkserver-Speicherbereiche an. Mit der Auswahl 10 kannst Du vor einem Speicherbereich (wir dürften derzeit nur einen haben, wenn Du keine xSeries-Server an der AS/400 angebunden hast) auswählen, dass Du diesen mit einer NWSD verbinden willst. Gib nun den Namen des NWSD an:
NWS-Speicherber.verb. hinzuf. (ADDNWSSTGL)
Auswahl eingeben und Eingabetaste drücken.
NWS-Speicherbereich . . . . . . > LINUX1 Name
Netzwerk-Server Beschreibung . . linux Name
Nach dem der NWS erstellt ist, und ein Speicherbereich diesem zugeordnet wurde, kann die Partition gestartet werden:
WRKCFGSTS CFGTYPE(*NWS)
Du siehst eine Liste der Netzwerk-Server. Mit der Auswahl 1 kannst Du unsere Linux-Partition aktivieren. Wenn alles korrekt eingerichtet ist, dürfte das CD-Laufwerk nach einigen Sekunden anfangen zu blinken, auch wenn die OS/400-Sitzung noch eine Weile gesperrt ist.
Jetzt brauchen wir eine Konsole, damit wir was vom Linux sehen. Dies geht über eine so genannte virtuelle Konsole, die OS/400 anbietet. Dafür müssen wir eine Telnet-Sitzung auf den Port 2301 der AS/400-IP-Adresse (!) öffnen. Starte also eine DOS-Box auf dem PC (oder eine shell, falls man kein Windows verwendet):
telnet 1.2.3.4 2301
(1.2.3.4 ist die IP-Adresse der AS/400) Übrigens - das Programm PuTTY ist für diese Zwecke sehr geeignet, da es eine bessere Terminal-Emulation bietet als das telnet.exe
Es erscheint eine Liste der Guest-Partitionen, vermutlich nur ein Eintrag mit unserer Linux-Partition. Wähle diese Partition durch die Eingabe der Nummer aus; danach melde Dich mit dem im DST angelegten Benutzer an.
Es erscheinen nun die Konsolmeldungen der Linux-Installation, folge den Angaben.
Nach der Installation
Wenn Dein Linux installiert ist, musst Du das Linux herunterfahren und den NWSD umkonfigurieren, damit er von der virtuellen Festplatte startet, nicht mehr vom CD-Image. Hänge dazu den NWSD ab und ändere dann folgende Parameter:
IPLSRC(*NWSSTG)
IPLPARM('root=/dev/hda1')
Letzterer kann abweichen, je nach Linux-Kernel!
Probleme
CPDB1AD
Gast-Partition mit Linux lässt sich nicht starten? Der QSYSOPR erhält eine Meldung mit obiger Nummer und dem Ursachencode 8? Lösung: Auf einigen älteren Maschinen muss für die Verwendung von Linux das Prozessor-Multitasking abgeschaltet werden:
CHGSYSVAL SYSVAL(QPRCMLTTSK) VALUE('0')
Danach ist ein IPL fällig!

