PowerPC Solaris on the RS/6000

The following is a guest post by PA8600/PA-RISC! Thanks for doing this incredible writeup about an ultra rare Unix!

One of the weirdest times in computing was during the mid-90s, when the major RISC
vendors all had their own plans to dominate the consumer market and eventually wipe out
Intel. This was a time that led to overpriced non-x86 systems that intended to wipe out the
PC, Windows NT being ported to non-x86 platforms, PC style hardware paired with RISC
CPUs, Apple putting the processor line from IBM servers into Macs, and Silicon Graphics
designing a game console for Nintendo. While their attempts worked wonders in the
embedded field for MIPS and the AIM alliance, quite a few of these attempts at breaking into
the mainstream were total flops.

Despite this, there were some weird products released during this period that most only assumed existed in tech magazine ads and reviews. One such product was Solaris for PowerPC. Now Solaris has existed on Intel platforms for ages and the Illumos fork has some interesting ports including a DEC Alpha port, but a forgotten official port exists for the PowerPC CPU architecture. Unlike OS/2, it’s complete and has a networking stack. It’s also perhaps one of the weirdest OSes on the PowerPC platform.

  • It’s a little-endian 32-bit PowerPC Unix and possibly the only one running in 32 bit mode. Windows NT and OS/2 (IIRC) were the other 32-bit PowerPC little-endian OSes and Linux is a 64 bit little endian OS.
  • It’s a limited access release, yet feels as polished as a released product.
  • It has a working networking stack.
  • Unlike AIX, it was designed to run on a variety of hardware with room to expand if more PPC hardware was sold. You can throw in a random 3com ISA NIC for example and it will in fact work with it.
  • It shares several things with Solaris for Intel including the installer.

I’m going to demonstrate perhaps the weirdest complete PowerPC OS on fitting hardware: the IBM RS/6000 7020 40p, also known as the Power Series 440 (6015) and by its codename “Sandalfoot”. The system is a PowerPC 601 based machine, featuring the PCI and ISA buses in an LPX style case. This is also one of the few machines that can run it. All screen captures are from a VGA2USB card as emulators cannot run anything but AIX.

What you need to run Solaris PPC

To run Solaris, the system requirements are just like that of Windows NT for PowerPC. You need a PReP machine (PowerPC Reference Platform, not to be confused with the HIV prevention pill or PrEP according to Wikipedia). Now finding a PReP machine is perhaps the hardest part of setting up Solaris for PowerPC and to understand why you need to know a bit about the history of the PowerPC platform.

One of the biggest problems with PowerPC hardware to this day has been the sheer inconsistency of how each machine boots. While Alpha machines had SRM/ARC and SPARC machines had OpenBoot, each vendor had their own way of booting a PowerPC machine despite rolling out standards.

There were essentially two different camps building PowerPC machines, IBM and Apple. IBM’s plans for universal PowerPC machines consisted of industry standard, low cost machines built around a PowerPC CPU, chipset, and lots of supporting components lifted from the PC platform along with PCI and ISA. The CHRP and PReP standards were essentially PCs with PowerPC processors in them. IBM’s plan was that you were going to replace your PC with a PowerPC machine someday. This was cemented by the fact that Windows NT was ported to the PowerPC platform, that OS/2 had an ill-fated port, and that a handful of third party Windows NT PPC machines were sold.

Apple on the other hand wanted to build Macs with PowerPC CPUs. Older Power Macs featured no PCI slots or Open Firmware, only NuBus slots carried over from classic 68k Macs. In fact much of the boot and OS code was emulated 68k code. Later on Apple would lift bits and pieces of things they enjoyed from the PowerPC standards such as Open Firmware, PCI, and even PS/2 and VGA ports on the clones. Apple’s plan was to replace the PC with the Mac, and Mac clones featured Apple style hardware on LPX motherboards. While the PCI clones featured Open Firmware, this version was designed to load the Macintosh Toolbox from ROM while “futureproofing” them by adding in the ability to boot something like Mac OS X/Rhapsody or BeOS.

Despite these similarities Macs were their own computers and were nothing like the IBM systems internally, aside from sharing the same CPU and maybe Open Firmware later on. But even Macs with Open Firmware were incapable of booting from hard disks formatted for IBM systems and vice versa. This is a common problem with installing PowerPC Linux as many installers do not check which machine they’re run on. Furthermore unlike modern day Intel Macs, PPC Macs were designed to only boot operating systems specifically written for them. They were incapable of running any OS solely written for the IBM machines.

The confusion between PPC machines has also caused a forum question to pop up, “how can I install PowerPC Windows on my Mac?” Even today the new OpenPower/PowerNV machines use a different bootloader than IBM’s hardware and completely lack Open Firmware.

Anyhow IBM built several different generations of PowerPC UNIX machines under several brand names including RS/6000, pSeries, and Power. Nearly all of them (aside from the Linux models) will run AIX, and later ones will run IBM i as well. Not just any PowerPC IBM hardware will run the OSes designed for PReP hardware however.

To run these old PReP OSes you’re looking at a very specific set of machines from the 1994-95 period, many with no characteristic diagnostic display most RS/6000 machines have. To run PowerPC Solaris much of the same applies here. You need a RS/6000 40p, or 7248 43p (not the later 140 and 150 with the display). The rare PPC Thinkpads and Personal Computer Power Series machines will run Solaris as well. It’s also compatible with the PowerStack machines from Motorola and one BetaArchive user had luck running it on a VME board. These machines are hard to find and unemulated as of writing, though the firmware files exist for the 40p at least and some efforts have been made in QEMU.

Mine features a PowerPC 601 CPU, 192mb of RAM (the max), a Weitek P9100 video card (branded as the IBM S15 IIRC), and a non-IBM 3com NIC. The 3com NIC has issues with the system as during boot if the NIC is connected to the network the system will refuse to boot fully and will either freeze or BSOD (in NT). The NIC is also not supported on AIX as well, and will eventually need to be replaced.

Curiously, not only is the IBM 40p/7020/6015 not listed in the HCL but the NIC it uses is. It’s well known that the Sandalfoot systems were used for early PReP OS development and it makes sense. Unlike the RS/6000 model 250, the 40p features PCI and ISA busses along with the same 601 CPU early PowerPC machines had. 

Installation

To install PowerPC Solaris, you first need to make a boot floppy. This isn’t uncommon with PReP operating systems. PowerPC Windows NT also requires a boot floppy for the ARC loader. The difference here is that there are two boot floppies; one for Motorola machines and one for IBM machines. Even on PowerPC this wasn’t terribly unusual, both the Moto Powerstack and Apple Network Server computers required custom AIX install media as well and Windows NT had specific HALs for each PPC machine.

On the Motorola PowerStack machines you need the same firmware used to install AIX instead of the ARC firmware for NT. On the IBM machines it’s vastly easier, you just need to make the floppy and shove it in. You then press the power switch and you’ll end up dumped to an Open Firmware prompt. As these IBM machines did not have Open Firmware, the bootloader loads Open Firmware from the floppy or hard disk every time you boot the machine. Keep in mind even the system management services are floppy loaded on these machines.

You then run into the first big hurdle to installing the OS, “disk” and “net” are mapped to very specific devices and if the SCSI IDs of these are different it will not boot. If the CD drive is not at ID 3 and the HDD is not at ID 6 the commands will not work. You will need to set an environment variable and tell it to boot from these disks manually for the first install.

Booting the OS is similar to booting it on a Sun, but the installer resembles that of the Intel version. The first thing that happens is you wait for the slow 2 speed CD drive to load the OS as the screen turns Open Firmware white. You will need to set the terminal type, and then then video and mouse input before X will load. The video options are limited to the S3 864/928, the Weitek P9000 and P9100, and Moto’s Cirrus Logic GD5434. Notice how the Power Series 440 (6015)/RS6k 7020 40p is referred to by its codename “Sandalfoot”.

Once you enter this in Solaris will boot load X it does on a Sun or Intel box, and the installer will be exactly the same. This phase is very uneventful as the slow CD drive copies files to the hard disk. I didn’t take a lot of screenshots of this part because you can get the same experience with QEMU or an old SPARCStation. You set the network info, you partition the HDD, you choose what you want, and you sit back as it installs.

Then you’ll be dropped at the Open Firmware bootloader and you’ll enter the right commands to make it boot if “boot disk” doesn’t automatically boot the OS.

The installation is not complete however. The next step is to swap CDs and install the GUI. A default install will drop you at a command line, with the second disk you can install OpenWindows and CDE and get a full working desktop. Login, switch CDs, change to the correct directory, and run the installer.

Once this is done, simply type in reboot and once you login you’ll be at a desktop that looks exactly like a Solaris 2.5.1 install on any other platform with one difference. There is literally zero third party software, and for years there was literally zero way of making software for it. You’re stuck with a stock OS and whatever utilities Solaris 2.5.1 came with. You’ll want to use OpenWindows as well, CDE is vastly slower on the 601 CPU (but not as slow as AIX 4.3 for example). The platform directory also tells you what IBM machines it can run on, and all the RS/6000s are titled PPS. The 6015 is the 40p, the 6040 and 6042 are the ThinkPad models 830 and 850, the 6050/70 are the Personal Computer Power Series variants of the 7248 43p, and the PowerStacks are pretty self-explanatory.

The Compiler Problem (and solutions)

For the longest time Solaris for PowerPC was neglected among those who happened to own a PReP machine for one reason: it lacked a compiler. A compiler is perhaps the most important part of any operating system as it allows one to write code for it. As was the case with UNIX operating systems from the time, the compiler was sold separately. With any UNIX that was widely distributed this wasn’t too much of an issue, as GCC or other third party compilers existed for the platform. Furthermore most compilers for these commercial UNIX operating systems ended up dumped online.

Solaris for PowerPC lacked both of these for ages due to the obscurity and rarity of the port. But in 2018 Tenox dug up the official compiler, yet this remained unnoticed for a while. This led to someone else experimenting with cross compilation on Solaris, and managing to compile PowerPC Solaris software. They then released a port of GCC for Solaris 2.5.1 for PowerPC while posting instructions on how to compile it.

To use GCC for Solaris, you need to unzip the compiler, add it to the path, and then symlink a few files that GCC ends up looking for. This is discussed in the BetaArchive thread about this, but I’ll quote it here.

$ ls -l /opt/ppc-gcc/lib/gcc-lib/powerpcle-sun-solaris2/2.95/
total 13224
-rwxr-xr-x   1 bin      bin      5157747 Feb 16 10:30 cc1
-rwxr-xr-x   1 bin      bin       404074 Feb 16 10:30 collect2
-rwxr-xr-x   1 bin      bin       453525 Feb 16 10:30 cpp
-rw-r--r--   1 bin      bin         1932 Feb 16 10:30 ecrti.o
-rw-r--r--   1 bin      bin         1749 Feb 16 10:30 ecrtn.o
drwxr-xr-x   3 bin      bin         1024 Feb 16 10:29 include
-rw-r--r--   1 bin      bin       673012 Feb 16 10:30 libgcc.a
drwxr-xr-x   2 bin      bin          512 Feb 16 10:30 nof
-rw-r--r--   1 bin      bin         4212 Feb 16 10:30 scrt0.o
-rw-r--r--   1 bin      bin         1360 Feb 16 10:30 scrti.o
-rw-r--r--   1 bin      bin         1104 Feb 16 10:30 scrtn.o
-rw-r--r--   1 bin      bin         7868 Feb 16 10:30 specs
lrwxrwxrwx   1 root     other         24 Feb 22 21:35 values-Xa.o -> /usr/ccs/lib/values-Xa.o
lrwxrwxrwx   1 root     other         24 Feb 22 21:36 values-Xc.o -> /usr/ccs/lib/values-Xc.o
lrwxrwxrwx   1 root     other         24 Feb 22 21:36 values-Xs.o -> /usr/ccs/lib/values-Xs.o
lrwxrwxrwx   1 root     other         24 Feb 22 21:36 values-Xt.o -> /usr/ccs/lib/values-Xt.o
lrwxrwxrwx   1 root     other         26 Feb 22 21:37 values-xpg4.o -> /usr/ccs/lib/values-xpg4.o
$

Once you do this, you can now compile C code at least with GCC. This means that Solaris for the PowerPC platform now is a usable operating system, aside from the fact it has no precompiled software whatsoever. Even Windows NT for PowerPC has more software for it. Software can now be compiled using GCC or the original compiler, and cross compiled with GCC on a non-PPC box. Using the cross compiler lets you compile more basics for compiling PPC Solaris code as well such as make. In this screenshot you can also see me compiling a basic “endian test” code example to demonstrate the little endianness of the PowerPC port.

The only problem is that there’s going to be little interest until someone makes a PReP machine emulator. PReP hardware is very hard to come by on the used market these days and while in the early 2000s it might have been easy to find something like a specific RS6k, but judging by the eBay listings there were a lot more MCA, CHRP, and even later PReP models (like the 43p-140) than there are early PReP machines in circulation. QEMU can emulate the 40p somewhat, but right now its 40p emulation is less like an actual 40p and more like something to please AIX. It definitely has the novelty of being a “little-endian PowerPC Unix” however.

27 thoughts on “PowerPC Solaris on the RS/6000

  1. Articles like this are why I love this site.

    At work in the mid 1990s, had a base model 40P that was a freebie after buying a number of 500 series RS/6000s. It was a rather nice little workstation once the RAM was upgraded.

  2. Anything interesting that can be run on the late 43P-140? I bought it because it was cheap and I had hopes of running NT on it (it’s PReP but with OpenFirmware, similar to the Motorola PowerStack).

    • The 43p 140 is capable of running AIX 4.3 quite well, along with 5.1. 4.3 is quite fast on it compared to the model 40p as it has a vastly faster 604 cpu. Unlike the 7248 it cannot run NT4 or Solaris, though it seems like NT4 support was planned at one time.

    • On that note, I think that it would be really useful to compile a list of machines that can run NT. I have been trying to find a suitable machine for quite some time now, but they are quite rare and also expensive where I live. I guess there are a few more than the official HCL lists as they were released after the release of NT 4.0 (or 3.51)?

    • It did partially. But you never could boot Windows NT on it. As of version 5.0 they removed PReP and tell you to use the 40p option instead.

      • 40p is a PReP machine. The problem is that it doesn’t emulate the little endian mode. Some other PPC machines do, so it might be possible, but no one was interested enough to implement it.

  3. This install “process” is likely one reason why PPC desktops didn’t catch on. By 1993, OS installs were already at the point of “insert disk 1 and start computer”, not this mess. PReP obviously went nowhere and CHRP was too-little too-late. Ironically the only successful PPC desktop landed up being the Power Mac despite not being “standard”. It managed to run classic MacOS, BeOS, LinuxPPC, and Darwin/OS X with little drama at that.

    Doing some digging, it appears that FirmWorks got a machine to boot MacOS and Windows NT.

    http://www.firmworks.com/www/chrp.htm

    Anyone know what machine that was, or where one would get NT HAL/ARC loaders for such beasts?

    • There was in fact a CHRP version of MacOS and the idea later on was that Mac clones were going to run it instead of being locked solely to Tanzania or similar Apple boards. This was killed of course when Steve Jobs came back and declared Apple was now a Facebook machine company. Still the ROM in RAM concept persisted into the New World mac machines.

      One website did get access to a Starmax that was CHRP based and while they never photographed the machine, they did write about what it was like to use it.

      https://www.macobserver.com/features/starmax.shtml

      “Let it not be said that the Motorola engineers lacked a sense of humor. When we first started up the StarMax 6000 we were greeted with a sort of anti-DOS screen. This was a white screen with black letters that gave boot information at the same time as a very Windows-like start-up trill graced the speakers. This was a very chilling moment for everyone at Webintosh Labs that quickly erupted into gales of laughter. For those of us with heart conditions, the friendly, smiling, happy Welcome To Mac OS screen soon took over and from there on out it was nothing but the usual Mac OS that we all know and love.”

      Furthermore Apple apparently was stalling the release of CHRP systems, and System 7.6.1 was the “last” version specifically modified for this.

  4. I had some RISC powerhouses once, like the POWER 275, SGI Octane R12K 300MHz, and a dinky little Sun Blade 100 (loud).

    One thing I never figured out is have you managed to get them to do anything productive once you’ve got them up and running? After around 2 years the cool factor went away and I sold them for a Powermac G5 and a PS3.

    I’d love to have a good excuse to have something like a Sparcstation around.

    • My uni was a BIG Sun shop. Solaris and SPARC everywhere on campus. Most notable is that they ran an AFS cluster of Sun Ultra machines that masqueraded as just another computer lab. Anyone could walk in, sit down, and log into the machines with their accounts. They also had a sgi Onyx2 that I never saw do anything more than run a few 3D demos in IRIX.

      The problem with these machines is that any software made for them was usually an expensive hardware locked specialty application (think CAD or engineering/modeling). You are basically limited to open source software at this point, which kinda ruins the fun. The most I ever ran on the Sun hardware at school was bog standard servers like SQL, HTTP, and FTP. I have always wondered what folks did for basic productivity applications on these UNIX workstations. Sun had WABI if you wanted real MS Office and Apple offered MAE to run Mac apps on a few platforms, but what did people cram those gigantic X11 desktops with otherwise? I don’t see people banging out memos in emacs and formatting it with TeX! (yeah I know there are some diehards out there, but realistically?)

      The only old *NIX workstation I really would want is a VAXstation of some sort, mostly because I learned VAX assembly in college.

      • Office applications I used on Sun machines around the turn of the century: StarOffice, Adobe FrameMaker. Yes, apart from that it was a commercial CAD-like tool and open source stuff!

      • In ’93 I sysadmined at a place where the secretaries used emacs and TeX! They did computational fluid dynamics. The user manual was all TeX with lots of embedded postscript color graphics.

        We had SGI Irix 4 & 5 (our software was on the cover of one of their brochures), SunOS, Solaris 2.2, Solborne, Sun3, Sun4 VME, Intergraph, VAX, intel i860 cube, HP 700, HP 800, AIX & RS/6000, Alpha. Tektronix 88000, Apollo DN10000, a deskside Cray, a NeXT cube.

        Mostly it was Sun Sparc 1, 2, 10 running SunOS and SGI indigo. We had early SGI Indys that ran Mosaic and an Onyx w/ 4 cpus. I think the RS/6000 had the most RAM at 64MB.

        I had to compile & install most of the GNU suite + LaTeX on most of them.

    • Some old professional software usually ends up cracked or dumped online (FlexLM is notoriously weak). IRIX is the UNIX most famous for this due to the use of SGI machines for 3d work and the fact that warez groups saw SGI machines as “cool” back in the day.

      Solaris SPARC, AIX, and HP-UX have pirated software available in various amounts as well, while Tru64 is literally a desolate wasteland aside from Open Genera (which 9 times out of 10 does not want to work and nobody who got it working even remembers how). I doubt there’s much for SCO or x86 Solaris.

      All of these platforms do have compilers of some sort, along with GCC ports.

  5. I was with one of the few companies that released software for Windows NT PPC for the PPC launch. We ported PhotoMorph and were part of IBM’s big kick off. I was looking through my files but sadly do not have any copies of PhotoMorph NT. I had a IBM PowerPC Thinkpad that ran NT, It was a slick little beast. It ran Office, PhotoMorph, Doom, and that was it.

  6. Thanks for this nice post!

    Of course the best way would be a port of some other compiler as given here for the known and widespread GCC.

    The referenced, compressed TAR contains something interesting. Maybe somebody with (real or emulated) hardware could get running the C 4.0 or C++ 4.1 compiler with these information. I lack any kind of hardware and time. Let’s take a look at the ppc specific lines:

    $ cat ./teamware/license_dir/license.dat | grep ppc | awk ‘{print $1″ “$2” “$3” “$4” “$5” “$6” (…) “$(NF-1)” “$NF}’
    FEATURE proworks.teamware.ppc suntechd 1.000 01-jan-0 0 (…) sun.com” ANY
    INCREMENT procompiler.c.ppc suntechd 4.000 01-jan-0 0 (…) sun.com” ANY
    INCREMENT procompiler.cc.ppc suntechd 4.100 01-jan-0 0 (…) sun.com” ANY
    INCREMENT proworks.tools.ppc suntechd 3.000 01-jan-0 0 (…) sun.com” ANY
    INCREMENT proworks.common.ppc suntechd 0.000 01-jan-0 0 (…) sun.com” ANY
    INCREMENT proworks.mpmt.ppc suntechd 1.000 01-jan-0 0 (…) sun.com” ANY

    These F/I lines looking as if these are from an early release of Sun WorkShop 4.0. Field #2 is the product name all suffixed with “.ppc” (platform) with features/increments for TeamWare SCM, C, C++, IDE and tools (dmake etc), license mgr (FlexLM), iMPact (multi-proc/multi-threading). Field #5 represents the date of expiration for F/I, but the string “01-jan-0” is also the placeholder of “never expires”. Field #6 stands for count of RTU’s, “0” stating unlimited. The field next to last containing the domain where the compiler has to be running under (looks like some SUN-internal license). ANYbody from ANYhost can use the feature/increment.

    Cheers.

Leave a Reply