Debian Linux auf IBM RS/6000 44P-170

Die IBM 44P-170 ist eine Low-End-Unix-Workstation aus den 2000ern, die vor allem für CAD eingesetzt wurde. Damaliger Listenpreis: stolze 30.000 USD.

Hardware

Der Prozessor, ein IBM POWER3-II, ist auf einer Steckkarte untergebracht, die sich beim Transport gerne lockert. Der Rechner bleibt dann beim Hochfahren (was gut und gerne bis zum Erscheinen des OpenFirmware-Bildschirms 5 Minuten dauert) mit „E0…“ im 7-Segment-Display stehen.

Den Rechner gab es mit verschiedenen Grafikkarten: GXT3000P, GXT4000P, GXT4500P, GXT6000P und GXT6500P. Linux-Kernel vor Version 3.8 unterstützen davon nur GXT4500P und die GXT6000P. In Linux 3.9 kam Unterstützung für GXT4000P und GXT6500P dazu, der Patch funktioniert jedoch auch mit älteren Kernel-Versionen. 3D-Beschleunigung darf man nicht erwarten, es wird nur der Framebuffer-Modus unterstützt. Jedoch wurde in Linux 3.17 die Unterstützung für diesen Prozessortyp entfernt – nachdem sie schon einige Versionen davor nicht mehr funktioniert hat.

Sowohl unter AIX 5.3L (höhere Versionen funktionieren nicht) als auch unter Linux startet der Rechner mit diesen Grafikkarten mit einer Auflösung von 1280×1024@60Hz.

IBM hatte außerdem einige umgelabelte Grafikkarten von anderen Herstellern im Angebot, die von AIX und Linux unterstützt werden: GXT2000P (3D Labs Permedia 2), GXT110P (S3 Trio64V+), GXT120P (Matrox Millenium I), GXT130P (Matrox Millenium II) und GXT135P (Matrox G450).

Debian-Installation

Die Linux-Installation mit einer nicht unterstützten Grafikkarte ist möglich, nur etwas umständlicher: Man kann sich mit einen zweiten Rechner über die serielle Schnittstelle mit der 44P-170 verbinden. Ich habe das nicht ausprobiert, sondern mir für etwa 15€ eine GXT135P besorgt.

Sobald man weiß, welches CD-Image bootet und ob die aktuelle Grafikkarte von jeweiligen Kernel unterstützt wird, ist die Debian-Installation einfach:

Von Debian 6 zu 7 zu 8 zu 9

Die letzte funktionsfähige Debian-CD ist das Netinst-Image von Debian 6: https://cdimage.debian.org/mirror/cdimage/archive/6.0.10/powerpc/iso-cd/debian-6.0.10-powerpc-netinst.iso

Runterladen, auf CD brennen, booten.

Beim Bootprompt „install64“ wählen.  Während der unspektakulär verlaufenden Installation als Spiegelserver „archive.debian.org“ eintragen und als Bootloader „yaboot“ auswählen. Debian 6 installiert Kernel 2.6.32.

Danach auf Debian 7 upgraden: Dazu in /etc/apt/sources.list die Quellen von „squeeze“ durch die von „wheezy“ ersetzen, apt-get update && apt-get dist-upgrade. Debian 7 installiert Kernel 3.2.

Weiter zu Debian 8 – der letzte Debian-Version offizieller PowerPC64-Unterstützung: In /etc/apt/sources.list die Quellen von „wheezy“ durch die von „jessie“ ersetzen, apt-get update && apt-get dist-upgrade. Debian 8 installiert Kernel 3.9. Achtung: Dieser Kernel hängt beim Booten mit SCSI-Resets und ist damit unbrauchbar. Am Besten gleich wieder deinstallieren! Der alte Kernel 3.2 von Debian 7 funktioniert jedoch auch unter Debian 8.

Trotz Einstellung des offiziellen Debian-PowerPC-Zweiges gibt es noch neue Debian-Pakete in Debian 9 („stretch“), nur nicht mehr in „stable“, sondern nur noch in „unstable“.
Besser ist es jedoch, vom „offiziellen“ Debian auf Debian Ports auszuweichen: Dort gibt es auch im Jahr 2023 gibt’s noch Pakete für ppc64 (und auch für powerpc). Debian Ports-CD-Images gibt es hier: http://cdimage.debian.org/cdimage/ports/, die /etc/apt/sources.list sieht so aus:

deb http://ftp.ports.debian.org/debian-ports/ unstable main 
deb http://ftp.ports.debian.org/debian-ports/ unreleased main
deb-src http://ftp.debian.org/debian/ unstable main
deb [arch=all] http://ftp.debian.org/debian/ unstable main contrib non-free

Damit die funktioniert muss man sich noch die Keys von Debian Ports installieren. Also von http://ftp.de.debian.org/debian/pool/main/d/debian-ports-archive-keyring eine möglichst neue „debian-ports-archive-keyring-DATUM.deb“-Datei herunterladen und mit dpkg -i debian-ports-archive-keyring-DATUM.deb installieren.

Eigener Kernel

Da meine Workstation ursprünglich mit einer GXT4000P-Grafikkarte kam und ich die gerne benutzen möchte, habe ich mir selbst einen Kernel kompiliert aus den Quellen des Kernel 3.2 von Debian 7, ergänzt um den GXT4000P/6500P-Support-Patch. Hier das Kernel-Paket: linux-image-3.2.78_1.0.geierb~ppc64gxt_powerpc.deb

Yaboot

Beim Booten sucht die OpenFirmware auf der Festplatte nach einer PReP-Bootpartition (die wird bei der Debian-Installation automatisch angelegt) und startet, was auch immer da drin liegt.

Yaboot legt dort ein anhand von /etc/yaboot.conf konfiguriertes Binary ab, das ein simples Menü anzeigt, Kernel und Ramdisk aus /boot lädt und startet.

Die Datei /etc/yaboot.conf erinnert ein wenig an die GRUB-Konfigurationsdatei und ist größtenteils selbsterklärend. Man kann Kernelparameter eintragen, Kernelimage und initrd, usw.

Wenn /etc/yaboot.conf geändert wurde , muss ein neues Yaboot-Binary erzeugt in die PReP-Bootpartition geschrieben werden. Dazu einfach den Befehl ybin -v ausführen.

Um den Kernel laden zu können muss Yaboot das Dateisystem von /boot lesen können: Man hat die Wahl zwischen ext2, ext3 und ext4.

Was nicht geht

Sound. Sound geht nicht. Auf dem Mainboard ist ein Crystal CS4236B-Soundchip verbaut, der per ISA-Bridge angebunden ist. Der PowerPC64-Kernel unterstützt leider kein ISA – auch nicht, wenn man die Unterstützung per Patch reinzwingt und die richtigen Modul-Parameter für den Soundchip kennt (port=0x534, cport=0x538, irq=5, mpu_port=0x330, mpu_irq=9, fm_port=0x388, dma1=1, dma2=3). Ich habe es nicht geschafft, den Rechner mit einem 32-Bit-Kernel zu starten – der könnte nämlich mit ISA umgehen.

Als Abhilfe bietet sich eine PCI-Soundkarte mit Crystal CS4281-Chip an. IBM verkaufte diese für die Intellistation-Workstations als „IBM 8244 AudioPCI“. Die funktioniert sowohl unter AIX als auch Linux.

Fazit

Wenn man weiß wie es geht ist es einfach, der Weg dahin jedoch ziemlich steinig. Steinig im Sinne von zeitaufwändig: Die lange Boot-Dauer macht das Ausprobieren ziemlich nervig.