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. 


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.

Macintosh Application Environment (Failure pt 1)

It’s a rainy day, and I didn’t feel well enough to wander around outside, and check out the ‘spyware street lights’. Although that’s the latest rage at the moment along with the usual stuff.

Instead I thought it’d be fun to try some ‘undercover’ software like that time when Apple thought it would be a good idea to port the ToolBox to Unix and run it as a competitor to programs like SoftPC as people with $30,000 workstations clearly needed a virtual Macintosh.

So I spent way too much time letting my 2006 Mac Pro grind out a Solaris 2.6 install, and then using the latest Tenox dump on archive.org I installed MAE 2.0! For anyone wondering the actual serial number is: 192c4838330166201b

And after serializing the app, and running it, I get a nice kernel panic. I thought I was playing it safe by opting out of the kernel module stuff as I don’t care about reading MacOS formatted diskettes.

I guess I really need Solaris 2.4 and those weird patches.

Internet Explorer. For Unix. Really.

Meanwhile you can rest assured that Internet Explorer 5.0 loads up just fine. It is painfully slow, but there it is. I was even able to download stuff with my ‘http backdoor’ thing to vpsland. So at least that works.

Hard to imagine a time that Microsoft was going cross platform under Gates, but Internet Explorer 3/4/5 were available on MacOS & OS X, with 4&5 under Solaris and HP/UX. Then of course there was that SUN Java lawsuit and they pulled the rug out from interoptability. Although I was a Linux on SPARC user in this era, having it available on Linux would have helped a LOT, but naturally Microsoft didn’t entertain that Linux market thing as it was cancer to them. Meanwhile Chromium Edge is only a Windows / OS X thing.

I was hoping to go further, but it appears not today.

Revisiting a Solaris on Qemu install

Since I had written about it the last time, quite a bit of the emulation on Qemu has improved significantly since then.  As always you’ll need to create and prepare a disk image, and I’m using an old SUN Station 5 PROM.

qemu-system-sparc -L . -m 64 -M SS-5 -bios ss5.bin -drive file=36G.disk,bus=0,unit=0,media=disk -drive file=solaris_2.6_598_sparc.iso,bus=0,unit=6,media=cdrom -startdate “1999-04-19”

One nice thing is that now you can boot off the CD-ROM.  And you can boot Solaris 2.6 directly into single user mode to format and label the disk.  It’s very convenient.  All you need here is

boot cdrom:d

And from there you can either kick off the disk partitioning, or the installer will boot up.

Booting from Prom to CD-ROM

And now to the graphical welcome screen!


And then off to the ‘graphical’ installer.  Yes, it’s not that graphical at all.  Like before, it’s important that you don’t let it reboot on completion, you have to make changes to the system so it’ll boot up correctly, and make changes to the network config.  At least in graphical mode vi works.


It is absolutely critical that you make this change or the disk will not boot at all.

cd /a/etc
# cat >> system
set scsi_options=0x58

For networking:

And you will want a default route…

# cat > defaultrouter

Then in the file /etc/nsswitch.conf change the following:

hosts: files


hosts: files dns

Then to ‘fix’ up your /etc/resolv.conf

# cat > resolv.conf

And then I like to add the following hosts to speed up telnet…

# cat >> hosts qemunat qemudns

And then hit Control+D and it’ll reboot back to the PROM.  Now all you have to type in the PROM monitor is:

boot disk0:

And in a minute you’ll be at the login screen.

Login Window

I went ahead with CDE, and over on archive.org the old SimCity for UNIX versions are over there.  One nice thing about being able to use CD-ROM’s is that Qemu can finally auto-mount the disk images.  It’s great.


There is no license for SimCity, and after 5 minutes the city goes into a ‘meltdown’ mode.  It’s a shame that back in the day the upstart x86 Linux was largely ignored by the UNIX market.  But Qemu has come quite a bit where you can run some of this proprietary VAR software.

SUN Solaris is effectively dead.

I wanted to wait to get a more concert announcement, but apparently it’s not going to come.  In case you missed it, on Friday Oracle robo called the people working on SUN hardware & software and effectively laid them all off.

We can now dispose of any pretense that Oracle was interested in any SUN technology, or has any plans for it in the future, rather it was a poor ruse to give the impression that there was a future that Oracle was interested in, to drum up a larger settlement amount for how Google deprived them of their licensing for the Dalvik, the Java inspired VM.

Now that Oracle has failed twice in suing Google, there is no longer any need to keep up the charade.

The mismanagement of SUN after the purchase by Oracle is nothing short of stupendous.  While busy chasing pie in the sky litigation, two very important and very lucrative markets were literally expunged from SUN’s portfolio as Oracle clearly has no vision or any competency.

SUN announces the ‘GRID’ in 2006 aka cloud computing

Seriously, look at this announcement from 11 years ago.  Oracle could have been a leader, although given their horrific support and business of treating customers like criminals, perhaps their incompetence is a good thing.

Hi. I’m Jonathan Schwartz, chief operating officer for Sun Microsystems. For nearly a quarter of a century, Sun Microsystems has been saying the network is the computer, and today I’m pleased to announce that Sun is launching the world’s first true computing utility. The Sun Grid is an Internet accessible compute utility that provides anyone in the United States easy access to a super computer for the affordable price of a buck per CPU hour.

So what does it mean for you? If you’re a biotech company, it means that you can plug into the Sun Grid to run complex modeling jobs and get results instantly. If you’re a startup, you can rely on Sun Grid now instead of spending your own capital to build out your own IT infrastructure. Sun Grid let’s you focus on your core competency and get to market faster. If you’re an online business that needs additional resources at peak times, why don’t you provision your own infrastructure for normal work — workloads and let Sun Grid handle the spikes? And if you’re an enterprise running at steady state, use the Sun Grid to test new products and innovations without jeopardizing production systems.

With Sun Grid, you’re not required to a commit to a long-term contract. There’s no hidden fees. You can dial up or dial down based on your own usage of your own compute resources. You don’t need to negotiate the price. You don’t need to negotiate the terms. And you don’t need to meet with a sales person or try to structure a funny finance contract. Simply go to network.com, purchase hours through PayPal with a credit card and start computing.

Today we’re throwing open the doors to the public Sun Grid and inviting everyone to try it out. There’s an interesting sample application up there right now that reads text, say, from an article on the Web and converts it into an MP3 file that you can download to your iPod. Imagine everyone in New York streaming a custom version of the Wall Street Journal to their iPod every morning. With Sun Grid, they can.

We welcome all ISVs to build and deploy software services on the Sun Grid. We’ll be publishing the API specification shortly. For developers generally, Sun Grid offers a heavyweight runtime environment for low-testing your apps across multiple horizontally clustered systems.

Now, I’m sure there’s lots of uses of the Sun Grid that we haven’t even thought of, and we can’t wait to see how it evolves. One of our founders once said, “Innovation happens elsewhere.” Well, log onto network.com and test drive today.

With Sun Grid, the network truly and finally is the computer.

Another interesting artifact of the time is that Jonathan is that he kept a blog, making SUN more accessible.  Sadly this didn’t catch on in the world of tech, where for some reason people either confine themselves to twitter, or Facebook, both platforms that they don’t own, nor can they actually control.  Instead modern CEO’s hide behind PR teams, as they have done since the advent of Public Relations (Thanks Ed!), and of course one of this many posts on the grid.

With the rise of AWS around the same time, there really could have been a far more stronger and competitive area, and as always Microsoft was totally asleep at the wheel letting Virtual Server languish with no x64 path for years to come, and a public cloud not available until 2010!

The Intel Itanium managed to kill almost all the popular RISC processors, and combined with Linux killed the majority of SYSV Unix in the world.  Just as the Itanium Linux combination upset the midrange world, AMD pushed x86_64 to the forefront upsetting the Itanium push before it even began.  In 2017 to not be on x86_64 & ARMv7 is just suicide.  Oddly enough IBM still managed to not only sell PowerPC based kit, but AIX hasn’t seen a new version since 2015 with the larger push of course going to Linux.

Open Solairs

SUN knowing that their future was imploding did the great thing of opening Solaris, Java and other great tech.  Naturally Oracle closed the door soon after buying SUN.


Naturally you’ll never see the words open over at Oracle.  To say the hacker open culture of SUN is incompatible with the litigious and highly customer toxic Oracle is an understatement.  At least this did get the OS out into the wild, with things like ZFS and Dtrace to live on, and outside of Solaris.  However even Apple was scared enough of the possibility of lawsuits from Oracle to have dumped ZFS from OS X, even though they did have it running.

The other amazing bit of tech they did have was VirtualBox, which started out as a German virtualization product to bring the wonders of OS/2 to other operating systems.  VirtualBox coupled with the grid on Solaris x86_64 could have been an incredibly robust platform, but of course that was never to be.  VirtualBox is still around however, so there is that at least.

I suppose there could be a lot more said about the ultimate rise and decline of SUN.

Like Cisco and Oracle, SUN’s fortunes took a dramatic uptick in the late 1999 .com fueled gold rush, along with the parallel Y2K gold rush.

$63.4 to $3.28, source Bloomberg

It’s hard to keep on going when you lose the majority of your value in the .com crash.  SUN struggled to re-define itself, and ultimately rebranding itself as JAVA just wasn’t enough to save itself.  Amazon may have been a retailer, but it quickly gained a reputation as a competent data centre operator, where as SUN was unable to do so.

The death of the SPARC, and Solaris was inevitable, just as the 68000 & SunOS was doomed in the 1980s.  When I talk to enterprise architects on what platforms they are going to use in upcoming projects, the new portable .net is catching some attention, c# may be gaining some traction again, but nobody wants that ‘killer’ combination of Solaris+Java+Oracle.  I know plenty are already tied to it, but I don’t see anyone championing it.

I know from my own personal experience of having a signed contract with Oracle, and having them arrive on site, doing an audit, invalidating their own contract as being “not properly authorized by a ‘rogue’ salesman”, and having our prices doubled overnight, and being forced to downsize our infrastructure as our faster processors had too many cores (even though we disabled the additional cores in the BIOS), I had moved all future projects to Microsoft SQL, as a flat rate of $5,500 retail for SQL Server was a flat out bargain.  I didn’t care if Oracle was 10x as fast, I could buy 100x more MS Servers for the price of an Oracle 10g grid.

The other lesson is that even though Apple could have bought SUN, and had an enterprise market, the bottom line is that it doesn’t matter.  Just as Apple abandoned Enterprise Objects, the X-serve, the Mac Pro, and OS X Server as a real viable server platform, the truth is they make so much more money on iTunes royalties, that they are the ones quickly approaching a 1 Trillion dollar market cap.  The ironic thing is that although you need an enterprise, there is no money in servicing the enterprise, there is far far far more consumers out there.

I’ll keep links I find on this developing story


More on adding disks to Solaris

So a while back, I built some stuff for Solaris on QEMU, and stuck it in a virtual disk.  Great.  Now the fun is years later trying to use it for yet another project.

By default Solaris doesn’t magically build out the dev tree so adding a disk won’t make it magically appear in the dev tree.  Add the ‘-r’ flag when booting, and it’ll do that.  I still like the verbose boot, so from the prom it’s ‘boot disk0 -rv’

Type help for more information
ok boot disk0 -rv
Boot device: /iommu/sbus/[email protected],8400000/[email protected],8800000/[email protected],0 File and args: -rv

And away we go!

while the kernel boots I can see it see’s my second disk

sd0 at esp0: target 0 lun 0
sd0 is /[email protected],10000000/[email protected],10001000/[email protected],8400000/[email protected],8800000/[email protected],0
<Qemu2GB cyl 4090 alt 2 hd 16 sec 63>
sd1 at esp0: target 1 lun 0
sd1 is /[email protected],10000000/[email protected],10001000/[email protected],8400000/[email protected],8800000/[email protected],0
<Qemu2GB cyl 4090 alt 2 hd 16 sec 63>
sd2 at esp0: target 2 lun 0
sd2 is /[email protected],10000000/[email protected],10001000/[email protected],8400000/[email protected],8800000/[email protected],0
<Qemu2GB cyl 4090 alt 2 hd 16 sec 63>

And once it starts user processes it’ll add in the device files

Configuring the /dev directory
Configuring the /dev directory (compatibility devices)

Which is great.  But how to view the disklabel?

prtvtoc can tell us, remember that s2 is the ‘whole disk’ on SYSV.

# prtvtoc /dev/rdsk/c0t2d0s2
* /dev/rdsk/c0t2d0s2 partition map
* Dimensions:
* 512 bytes/sector
* 63 sectors/track
* 16 tracks/cylinder
* 1008 sectors/cylinder
* 4092 cylinders
* 4090 accessible cylinders
* Flags:
* 1: unmountable
* 10: read-only
* First Sector Last
* Partition Tag Flags Sector Count Sector Mount Directory
0 2 00 0 132048 132047
1 3 01 132048 263088 395135
2 5 01 0 4122720 4122719
6 4 00 395136 3727584 4122719

So we have a 0, the 1 is ‘swap’, 2 is he whole disk, and a 6.

Running fsck can reveal that 0 is a real filesystem:

# fsck /dev/rdsk/c0t2d0s0
** /dev/rdsk/c0t2d0s0
** Last Mounted on /mnt
** Phase 1 – Check Blocks and Sizes
** Phase 2 – Check Pathnames
** Phase 3 – Check Connectivity
** Phase 4 – Check Reference Counts
** Phase 5 – Check Cyl groups
4 files, 32504 used, 29111 free (15 frags, 3637 blocks, 0.0% fragmentation)

while 6 is not.

# fsck /dev/rdsk/c0t2d0s6
** /dev/rdsk/c0t2d0s6
eg. fsck [-F ufs] -o b=# [special …]
where # is the alternate super block. SEE fsck_ufs(1M).

Sadly none of the stuff in there is ‘ready to run’ but rather built in it’s source directory.

And I wanted to make a 2GB /usr/local on another disk, so I copied my disk template file, (can use the OS, or the gnu-utils) and run format on the disk.

It was a matter of clearing out partitions, and making ONE BIG partition 0.

# format /dev/rdsk/c0t1d0s2
selecting /dev/rdsk/c0t1d0s2: data
[disk formatted]
Warning: Current Disk has mounted partitions.

disk – select a disk
type – select (define) a disk type
partition – select (define) a partition table
current – describe the current disk
format – format and analyze the disk
repair – repair a defective sector
label – write label to the disk
analyze – surface analysis
defect – defect list management
backup – search for backup labels
verify – read and display labels
save – save new disk/partition definitions
inquiry – show vendor, product and revision
volname – set 8-character volume name
format> partition

0 – change `0′ partition
1 – change `1′ partition
2 – change `2′ partition
3 – change `3′ partition
4 – change `4′ partition
5 – change `5′ partition
6 – change `6′ partition
7 – change `7′ partition
select – select a predefined table
modify – modify a predefined partition table
name – name the current table
print – display the current table
label – write partition map and label to the disk
partition> print
Volume: data
Current partition table (original):
Total disk cylinders available: 4090 + 2 (reserved cylinders)

Part Tag Flag Cylinders Size Blocks
0 alternates wm 0 – 4069 1.96GB (4070/0/0)
1 unassigned wu 0 0 (0/0/0)
2 backup wu 0 – 4089 1.97GB (4090/0/0)
3 unassigned wm 0 0 (0/0/0)
4 unassigned wm 0 0 (0/0/0)
5 unassigned wm 0 0 (0/0/0)
6 unassigned wm 0 0 (0/0/0)
7 unassigned wm 0 0 (0/0/0)

Good fun.  As always don’t forget how to mount the CD-ROM under Qemu, and add packages as needed.

I still think the quickest, and easiest way to power ‘off’ the VM is the poweroff command.

# poweroff
Apr 18 20:26:33 qemu24 poweroff: poweroffed by root
Apr 18 20:26:35 qemu24 syslogd: going down on signal 15
syncing file systems… done

Brutal, quick, and efficient.

Adding Solaris packages, under Qemu

So you know the drill, someone wants to do something with Solaris, and they’ve already installed the OS, and done a bunch of customization and whatnot, now they call up all in a panic as they copy in a binary distribution of GCC, but they can’t compile anything because they are missing values-Xa.o , or worse just about everything from the development tools.

Well I’m not sure about ancient Qemu, but 2.2 can mount the CD-ROM’s post install! … manually.

The poor guy didn’t want to re-install, but one option was to boot up the CD in single user mode, mount his disk, and copy the /cdrom path onto some partition so he could then install the packages as needed, and even better have the whole tree ready if need be.

But the better thing is to just mount the CD, install the package and be done with it right?

I’ve only tested this with Solaris 2.6…

While booting up single user mode from the CD (boot disk2:d -s) I noticed this line in the mount table:

/cdrom             (/devices/[email protected],e0000000/[email protected],e0001000/[email protected],400000/[email protected],800000/[email protected],0:a):       0 blocks        0 files

So I thought I’d try to mount that once the copy was done.  The first thing I did was make a symbolic link as that name is a little hard to type, and I didn’t want to remember that path after this day.

mkdir /cdrom
cd /dev
ln -s /devices/[email protected],e0000000/[email protected],e0001000/[email protected],400000/[email protected],800000/[email protected],0:a jr0

this gives me a /dev/jr0 linking to where the Solaris 2.6 install path was.

# mount -oro /dev/jr0 /mnt
mount: /dev/jr0 is not this fstype.

Well that was disappointing.  Could I even read the CD?

# head -1 /dev/jr0
CD-ROM Disc for SunOS Solaris Installation

Ok, so it must be the file-system type.  The ‘bootable’ partition on the CD contains a SYSV filesystem, as it’s a “live CD”..

mount -o ro /dev/dsk/c0t2d0s1 /mnt

# ls /mnt
a dev kernel opt reconfigure usr
bin devices lib platform sbin var
cdrom etc mnt proc tmp

You can even fsck it!

# fsck /dev/dsk/c0t2d0s1
** /dev/dsk/c0t2d0s1 (NO WRITE)
** Last Mounted on /tmp/MntDev.12554
** Phase 1 – Check Blocks and Sizes
** Phase 2 – Check Pathnames
** Phase 3 – Check Connectivity
** Phase 4 – Check Reference Counts
** Phase 5 – Check Cyl groups
2445 files, 19114 used, 4873 free (17 frags, 1214 blocks, 0.0% fragmentation)

But the part of the CD-ROM that we want, with all the packages uses a different file-system, and with a bit of hunting I found the right string:

mount -F hsfs -r /dev/jr0 /cdrom

Now we can manually add in the missing packages!

# mount -F hsfs -r /dev/jr0 /cdrom
# ls /cdrom
Copyright Solaris_2.6

We just have to point the pkgadd command to where the CD-ROM is mounted.  In my case I just had to type in:

pkgadd -d /cdrom/Solaris_2.6/Product/

And then I got the “interactive” mode showing off all 471 packages.  Don’t just slam the enter key or you’ll start installing everything.  Hit control-d and then we can manually add them in.

<RETURN> for more choices, <CTRL-D> to stop display:^D

Select package(s) you wish to process (or ‘all’ to process
all packages). (default: all) [?,??,q]:

And in this case, the packages I wanted were:


With those installed, now I can see the object files I wanted:

# find / -name ‘*.o’ -print

Wasn’t that great?  Nobody had to re-install, no disk space is wasted, and now if other packages are needed, it’ll be easy to add them.

Sad day for people who signed onto SUN’s virtualization strategies.

From slashdot, Oracle to stop developing SUN virtualization technologies.  In a way I’m surprised this didn’t happen sooner, as chasing after VMWare isn’t part of Larry’s strategy to take over the world with databases.

How long does the SPARC have left to live?

Or Solaris for that matter?

—edit seems they are going to keep VirtualBOX afterall!



Going forward, Oracle’s desktop portfolio investments will be focused on continued development and new enhancements to both Oracle Secure Global Desktop and Oracle VM VirtualBox software.

Solaris 9 x86 on VMware

(Note this is a guest post from Tenox)

Despite having an unofficial and experimental support for some time now I was not able to install Solaris 9 on VMware Workstation. I have recently upgraded to Workstation 9.0 and Lorenzo Gatti send me a link to complete Solaris 9 x86 u5 media kit so I had an excuse to retry.

After several tries I have determined that the easiest route is to boot and install from cd1 instead of the install disk. Also make sure to select VESA driver instead of standard VGA to get a decent resolution. VMware tools won’t install but it’s not a big deal. Apart from that everything else including networking works out of the box.


Just as a final note Solaris 9 is now 10 years old, time flies fast!

I have also installed Solaris 8 in a similar manner. Unfortunately it doesn’t have VESA drivers so all I could get is 640×480.