Solaris 2.1 for x86

Solaris 2.1 for x86, also known as SunOS 5.1, was Sun’s first entry into the PC market (technically it was SunSoft, a subsidiary of Sun Microsystems, who released Solaris). However, it wasn’t Sun’s first x86 operating system. In the late 1980s, Sun sold 386i workstations based on Intel 386 processors. The 386i workstations were not PC compatible and ran SunOS 4.0, a BSD UNIX derivative with many custom Sun enhancements.

In Summer of 1993, SunSoft released Solaris 2.1 for x86. At that time, Sun was not selling any x86-based systems and Solaris 2.1 targeted standard (if such a term is not a complete oxymoron) PC hardware. With a small caveat that Solaris needed a bit more than a typical PC of the era, ideally a fast 486 with 16MB RAM.

The Solaris operating system was the result of Sun’s cooperation with AT&T on the development of System V, Release 4 (SVR4). It implemented both BSD and System V programming interfaces, and on x86 there were also provisions for compatibility with XENIX applications (although it is unclear how workable to compatibility layer was).

Solaris 2.1 for x86 was distributed on CD-ROMs, not on tapes like most other UNIXes of that era. It came with a boot floppy, since bootable CD-ROMs were not yet standardized. Solaris could be also installed over the network, again with the aid of a boot floppy. Purely floppy based installation was not an option. Only SCSI CD-ROM controllers were supported because the ATAPI standard did not exist yet; however, Solaris could be installed onto standard ATA disks.

Solaris Kernel

Solaris 2.1 was a very modern UNIX system designed for both workstation and server use. Unlike traditional UNIXes, the Solaris kernel did not need to be recompiled to accommodate hardware changes; instead, loadable modules were used. At that time, only Windows NT had similar support for dynamic kernel module loading, although Solaris 2.1 for x86 was in fact released before Windows NT 3.1 (approximately May vs. July 1993).

Solaris was also moving towards multi-threading (standard on OS/2, but not most UNIX systems at the time) and SMP. The interfaces existed in the system, but were not yet fully supported.

Naturally Solaris came with a full TCP/IP stack and NFS support. The OS was heavily geared towards networked and diskless systems. On the x86 platform, fully diskless systems were problematic, but Solaris could in theory work as a diskless system on a generic PC, using a special boot floppy.

The diagnostic features in Solaris were excellent. Every version came with kadb, the Solaris kernel debugger; kadb stood for kernel adb, and adb stood for Advanced Debugger, a venerable BSD interactive debugger.

Solaris Desktop

Since Solaris was designed as a workstation operating system (typically running on Sun’s own SPARC-based workstations), it came with an advanced graphical user interface and the typical user didn’t need to spend much time outside the graphical desktop.

The Solaris 2.1 graphical environment was based on OpenWindows 3.1. The GUI was a hybrid of X11 and Sun’s older NeWS (Network extensible Window System).

This wasn’t always a happy marriage. At the time, X11 was the standard display protocol for UNIX workstations. To support NeWS, SunSoft needed a custom display server (Xnews) significantly different from the standard MIT X11 implementation, but that was a source of incompatibilities with other X11-based systems.

NeWS was Sun’s window system developed in the late 1980s and based on PostScript (not Display PostScript). The primary authors of NeWS were James Gosling (of Java fame) and David H.S. Rosenthal. NeWS was a very advanced windowing system, in many ways ahead of its time. Probably too far ahead, which caused it to be somewhat slow.

Unfortunately for Sun, NeWS never really caught on. By the time Solaris 2.1 for x86 was released, NeWS was already on the way out, being replaced by X11. NeWS in Solaris 2.1 was rather slow, reportedly in part due to the merged X11/NeWS window server (Xnews).

There was naturally excellent PostScript support in OpenWindows. SunSoft delivered much of the Solaris documentation in electronic form as a so-called AnswerBook. AnswerBooks were in many ways similar to PDFs, combining PostScript with hypertext. AnswerBooks could be easily converted to PostScript and sent to a PostScript-capable printer, or they could be viewed on-line.

OpenWindows also included multimedia support. Solaris 2.1 came with an audio playback and recording tool and a few sample audio files. Since Solaris was delivered on a CD, there was enough room for demonstration applications and data files (images and audio).

SunSoft’s windowing system also implemented ToolTalk, a system for inter-application communication (either locally or over a network).

The x86 version of Solaris 2.1 supported only 256-color graphics modes and effectively only 1024×768 resolution. For most graphics cards, the display server was entirely unaccelerated, which hurt performance. Only for 8514/A style adapters (including the S3 805 chip) there was accelerated drawing support.

Impact

Solaris 2.1 for x86 did not have a significant impact on the industry, but it was a sign of things to come. While the x86 version of Solaris 2.1 was developed separately from the SPARC version, by the time Solaris 2.4 was released, the SPARC and x86 code bases were merged. With a few exceptions, the x86 Solaris versions then tracked the SPARC releases.

In 1993, Solaris 2.x was not yet fully stabilized, and Solaris 2.1 was a bit too much for the typical PC—not unlike Windows NT 3.1. That said, the real (and successful) competitor of Solaris on the x86 platform was ultimately Linux, not Windows.

Copies of Solaris 2.1 (or anything else, really) are not available from the OS/2 Museum, sorry.

That said, Solaris 2.1 won’t install on just any old PC; it requires a supported SCSI host adapter with a CD-ROM. The list of supported NICs is not very long either, although a NIC is technically optional.

Where did you find the install discs? I’ve been looking for a few years for Solaris 2.4 x86, or a close version. I still have the computer Solaris was installed on almost 20 years ago, but the install media is obviously long gone and the Solaris installation barely runs anymore. The computer’s an IBM PS/2 Model 56 SLC3.

I got the installation CD ISO from a collector (if that’s the right term to use), on the condition that I won’t give it to anyone… though I’m sure I could help you if you needed a specific file or something like that.

But are you saying that you have a machine that still runs x86 Solaris 2.1 and has been for the last two decades?

It runs 2.4 but doesn’t boot anymore, something is corrupt. A few years before, Openwindows stopped working. Solaris x86 is difficult to come across. The discs that pop up on eBay are ridiculously priced.

Yes everything still functions on that computer. I really should get rid of it. It’s more of an oddity than anything. It would be fun to reinstall Solaris, I haven’t played with Solaris on that computer since I was little in the mid ’90s.

There was a time when SUN was giving the ISOs and boot disk images away for free… Solaris 2.1 x86 is pretty hard to get, you could not do much with it because there was vitually no software for it available. I saved my set from being dumped years ago when nobody was interested in this any more and I am pretty happy to have all the original documents.

Out of curiosity, what documentation was there beyond what’s in the on-line AnswerBook? And any chance you could provide the boot floppy images? Unlike IBM and Microsoft, Sun didn’t realize that putting images of the boot floppies (or tools to create them) on the CD would be a good idea 🙂

It’s fairly apparent that the x86 version of Solaris 2.1 was a proof of concept more than a finished product… according to my research, it was even developed separately from the SPARC edition. Solaris 2.4 was a different story.

There is the Configuration and Installation Guide, the Openwindows 3.1 User’s Guide a a bunch of really small booklets. The boot disk – I will see if it is still readable and then make up my mind – after all it is now property of Oracle.

Nice article. The referenced framebuffer is more likely the “8514/A”, which was available from ATI, for MCA and ISA bus, correct?

BTW: I’m running SunSoft Solaris 2.4 x86 on a Siemens Nixdorf PCD-4H/33, 32MB RAM, Cirrus Logic CL-GD5428 onboard graphics adapter in 1024*768 with 256 colors under OpenWindows 3.4 or CDE 1.0.2. It’s working but the CPU is close to 60% usage, handling all 2D graphics operatios because of missing acceleration for the graphics driver (XSun). Maybe better for trying the X11 drivers. Otherwise working only with the console, connected with e.g. telnet, is just fine. I think is similar with version 2.1 for x86.

2.4 is similar in terms of capabilities but I think the code base is quite different. 2.4 was built from a shared SPARC/x86 source tree where 2.1 was kind of a semi-dead-end proof of concept.

8514/A was an IBM adapter (sold as MCA only), but several compatibles existed, the most popular being ATI mach8 and mach32 chips. And yes, the mach32 was one of a few chips that existed in ISA/MCA/VLB/EISA/PCI variants.

“Unlike traditional UNIXes, the Solaris kernel did not need to be recompiled to accommodate hardware changes; instead, loadable modules were used. At that time, only Windows NT had similar support for dynamic kernel module loading, although Solaris 2.1 for x86 was in fact released before Windows NT 3.1 (approximately May vs. July 1993).”

Even Novell’s NetWare 386 supported NLM back in 1990. On the UNIX side the first UnixWare release was a month earlier than Solaris for x86. I found no release dates for the rebranded USL derivates from Consensys and UHC. Kernel loadable modules rely on SVR4 ABI. Of course not every implementation supported dynamically linked modules reliably.

8514/A is originally the name of an IBM MCA display adapter which was required to support the 8514 CRT display’s 1024×768 resolution. 85xx numbers in general are the model numbers of early IBM PS/2 hardware, ie the 8513 and 8514 displays, the 8550 and 8570 desktop machines (PS/2 model 50 and 70), 8560 and 8580 (PS/2 models 60 and 80 tower models). Early PS/2 model 90 and 95 have 8590 and 8595 as model number, later ones use 95xx series numbers.

One can argue if 8514 was originally the name of the programming interface and video standard, or the name of the display it was intended for, but going by the entire IBM model numbering convention from that time, and my recollection as an IBM employee at that time, I’d rather say it was the name of the display unit which then became the name of the standard.

What makes the original IBM 8514/A somewhat special is it using the video expansion connector on the MCA bus (which meant it required a special MCA slot with this extra connector, and wouldn’t work in regular MCA slots), and used the standard VGA controller for all standard VGA functionality.

Clones typically do include the VGA modes so they can work as a standalone display adapter.

I think it’s pretty clear that 8514 was the monitor and 8514/A was the adapter. There are unconfirmed rumors that IBM also had ISA-based 8514/A prototypes; that makes a lot of sense because the bizarre register mapping used by 8514/A only makes sense on ISA.

There was one notable ISA clone (ATI 8514/Ultra) which did not include VGA functionality and had to be used alongside a VGA graphics card, just like the MCA set-up.

Hi Michal, yes the 8514 was the monitor and the 8514/A the adapter. Public sources often claim 8514 to be the name of the standard and suggest the adapter was named for that, but that is the wrong way around I believe.

Due to the timing of GA of the adapter its pretty likely the initial development was for an ISA adapter, but in the years the 8514/A adapter was relevant (before the XGA adapter was released), releasing an ISA variation of it would run counter IBM’s PC strategy where ISA was relegated to a few entry level PS/2 models.

Thanks for the comment on the ATI adapter, I hadn’t realized this adapter worked in a similar fashion. Did it use a VGA passthrough cable of sorts similar to VOODOO boards? MCA had those slots with the video passthrough, but that didn’t exist on ISA

@Bart:
I don’t know how that ATI card worked, but almost every VGA card I have seen has a “feature connector”. On some old cards it’s an edge connector (like on 5,25″ disk drives), but on most cards it’s an IDC connector (like on 3,5″ disk drives). That connector provides parallell digital video output (like CGA or EGA, only many more signals) so a card like the ATI card could just use some rather simple digital mux between it’s own signals and it’s DAC.

Looking a bit more into this, it must have used the feature connector indeed. The original 8514 ultra was a board fitting both MCA and ISA slots, could use the video expansion of MCA when used as MCA card, and provided an internal pass-trough connector when used in an ISA slot. From reading the hardware description, I suspect an analog pass-trough would not work.

Its kinda funny, and oh so typical at that time. I’ve been able to ‘fiddle’ with nearly every MCA adapter for PS/2 machines IBM made during the 1988-1995 timeframe, including many that were never publicly available or are quite rare, but ‘off-brand’ MCA adapters… the only ones I ever got to see and use are the 3c529 and the MCA version of the NE2000. IBM used to kindof live in its own distinct universe where everything non-IBM was not just alien, it was from a different universe!

Indeed, except for ethernet NICs (at least until very late in the PS/2 era) which is why I did get to use the 3c529 and ne2.

One of the more unusual mca adapters I got to play with (and still have but never have had a real use for beyond the curiosity factor, and the last PS/2 I owned which could use it ‘died’ over a decade ago) is the ps/2 wizard adapter, an i860 processor board with memory. It used OS/2 (upto 1.3, tho I don’t think there was official support post 1.1 or possibly 1.2) as ‘frontend’ and for I/O, but would run its own small OS and software. It got me my introduction to the Watcom C compiler which was part of the software development tools for this environment.

In case you wonder, I worked for what was at the time the PC division and later for PSP as systems engineer, mostly involved with 2nd/3rd line support and product testing, mostly related to OS/2 1.2 upto and including 4.0, CM/2 and the LAN Server and requester components, and a bit for PC DOS 5, 6 and 7. Part of that all was compatibility testing of the European NLS versions of those software products with a wide selection of IBM hardware configurations.

I see, the PS/2 Wizard was marketed as an “application accelerator”. It really sounds very much like how today’s graphics cards can be used for computing.

Now I’m really curious though: Watcom C was the i860 compiler? Or the OS/2 part? I know Watcom had x86 and S/360 compilers, also did some work on PowerPC and Alpha AXP in the mid-1990s, but I never heard of other targets being supported.

Your comment made me curious and look into this some more. As it turns out I still have the boxed software, through no floppy drive to image it (and no idea if the floppies are still readable), and hence the included documentation.

Looking at what it contains shows my memory being wrong, while I did get to use the Watcom compiler during that time, that was not for the I860 but for the x86 side. The actual compiler contained in the I860 software development toolkit is the Metaware High C compiler. Additionally a macro assembler, linker, scalar library and of course a C runtime library are included. The toolkit runs on Intel’s APX runtime environment.

Sorry for the confusion.

The I860 is a general purpose CPU with a somewhat MIPS like RISC core. What made it rather unusual for a microprocessor from that era is its vector unit, which allowed for SIMD like operations. Also it allowed for parallel execution of certain instructions, and had some interesting floating point instructions.

Writing software for it was difficult at the time because of the instruction ordering requirements (no out of order execution and no branch prediction, and deep pipelines) and combined modes. Compilers have advanced a lot since that time, and probably would make this a lot easier today. This difficulty is likely why it saw little use as general purpose CPU, and was mostly used as an ‘application accelerator’ for cases where there was a lot to gain from using its vector unit or fast double precision floating point processing.

Another piece of documentation I turn out to still have is AT&T’s SYSTEM V application binary interface Intel I860 Processor Supplement, together with the SYSTEM V application binary interface documentation, this supplement describes the ABI for a SVR4 implementation running on a system using the I860 as its main CPU.

So, technically the I860, and by extension the PS/2 Wizard adapter is quite a bit more than an application accelerator.

If its of any use for satisfying your curiosity, I can scan select pages from the documentation.

Btw, thanks for maintaining this blog, its quite nice to read about this part of computing history, which I was quite part of, but have forgotten so many things about over the last quarter century.

OK, so the i860 compiler was Metaware High C, that makes sense. IBM also used High C for early development of OS/2 for PowerPC for example. I’m interested in the Watcom compiler though, which version was it? I’ve long been unsuccessfully trying to get hold of 16-bit Watcom C 8.x or older (6.0, 7.0, 8.0/8.5).

Another interesting feature of the i860 was paging compatible with the Pentium, including 4M pages I believe. The older RISC CPUs definitely needed relatively smart compilers, and writing assembler code by hand was not trivial.

Oh, and the disks are highly likely to be readable. Just last week I made images of ~200 5.25″ HD floppies from 1988-1992, and I think the total was about 2 bad sectors in non-data areas.

I no longer have the DOS compiler I’m afraid, I was actually a bit surprised I still have the I860 development toolkit as almost all software and hardware I had from before ~2005 is no longer in my possession after moving a few times. I kept the wizard adapter for its curiosity value, but very little else is left.

The software is on 1.44mb 3.5″ floppies, as all machines capable of using it were equipped with a 3.5″ floppy drive.

At any rate, I’d need an option disk for the card and a PS/2 model 80 with sufficient memory to run OS/2 1.2 or 1.3 to do anything useful with the card and software, but trying to image the floppies is a good idea anyway, and usb floppy drives aren’t exactly expensive.

I’d have a Model 80 with 8MB RAM, but the floppy drive is extremely flaky and the SCSI controller isn’t too cooperative either. I think the old PS/2s suffer from the fact that they were early products of SMD technology and all the kinks weren’t worked out yet. Happens every time new manufacturing tech is introduced.

@Bart van Leeuwen
Actually the pass-through functionality of the 8514/A was later reproduced by 3dfx with the Voodoo1 and Voodoo2. Basically your existing 2D graphics chip would be used for regular 2D acceleration, and when it needed to ‘switch’ to 3D acceleration, it would change video output to the Voodoo instead.

Of course since this was on the PCI bus, passthrough VGA connectors were used and it wasn’t as elegant as Microchannel since Intel never had the wisdom or thought it was necessary to have video pass-through on the bus itself.

Floppy diskette drives are everywhere… I think it’s fairly important to dump and preserve old software like that, else it gets forgotten forever. I’ve already rescued a bunch of stuff that other people needed and nobody else was coming along to preserve…