Installing Solaris 2.6 under QEMU

I’ve been looking at picking up a used Sun Sparcstation from eBay. It occurred to me that I’ve never installed an early version of Solaris before, so wondered if I could give it a try under QEMU since it’s emulates different hardware, including Sparc.

There’s an awesome step by step guide on Adafruit that takes you precisely each step to get Solairs installed un QEMU. You can follow the steps in their article here, so I won’t repeat all the steps here.

The key steps before you get to the install are creating a disk image:

qemu-img create -f qcow2 sparc.qcow2 9663676416

and then booting with the Solaris iso image as the cdrom and the disk image attached:

qemu-system-sparc -M SS-5 -m 128 -drive file=sparc.qcow2,bus=0,unit=0,media=disk -drive file=solaris_2.6_598_sparc.iso,bus=0,unit=2,media=cdrom,readonly=on

After this point it’s following through the steps in the install. From the openboot ok prompt, start the boot from the cd image:

boot cdrom:d -vs

-vs here boots to a single user mode where you can format the disk first, before rebooting again without the -vs option and continuing with the install. The install will not continue if it detects the qemu disk is not formatted yet.

The commands needed to initialised the disk:

drvconfig
disks
format

From the Adafruit article, here’s the params for the format you need:

Specify disk (enter its number): 0
Specify disk type (enter its number): 16
Enter number of data cylinders: 16381
...defaults are fine here...
Enter number of heads: 16
...
Enter number of data sectors/track: 63
...
Enter disk type name (remember quotes): Qemu9G

Here’s qemu booting up for the first time:

Here’s the Solaris installer starting up:

After the install had completed, here’s the rather impressive for it’s time CDE desktop:

Installing FreeBSD 11.1 on Parallels

Installing FreeBSD from an ISO in a VM is pretty easy, just follow the menu prompts, set a root password and create a new user when prompted. There’s many step by step guides such as this one if you need help.

Out of the box with a fresh install you don’t get a desktop environment installed like you typically do with Linux distros, so after the first boot there’s a few additional steps to get up and running.

First install any updates  (logon as root):

freebsd-update fetch
freebsd-update install

Next install XWindows using pkg:

pkg install xorg

You can install any of the common desktop environments on FreeBSD. To install Gnome:

pkg install gnome3

After the install completes there’s a couple of manual config steps, which are covered in this guide here.

In summary:

  • add a line to mout /proc to /etc/fstab:
proc          /proc       procfs  rw  0  0
  • edit /etc/rc.config and add the following lines:
dbus_enable="YES" hald_enable="YES"
gdm_enable="YES"
gnome_enable="YES"

During my install of Gnome I ran into an error with corrupted package during install:

After some googling and trying a few different options (pkg clean -a), a post suggested to delete the download the downloaded cached package, but didn’t say how to do that. From some searching I found what looks like the cached files at /var/cache/pkg, so a ‘rm libwmf*’ deleted the file mentioned in the error that were previously downloaded, and then kicking off ‘pkg install gnome3’ again picked back up from where it left off.

Issues fixed, gnome installed, rebooted and we’re at the Gnome desktop:

Getting status from dd when writing disk images on MacOS

dd is a pretty useful tool for creating and writing disk images from a source to a destination, for example writing disk .img files to SD Cards for your Raspberry Pi (see here, and here).

The trouble is if you’re writing images that are several GB that can run for 20mins or so, you don’t get any feedback on the progress until it’s complete. Well turns out if you send a ‘kill -INFO’ signal to the PID of the process, it will output the current status of bytes written and bytes remaining. Found this tip here.

Appending values to the end of a file from a Unix shell

Some things you do repeatedly from a *nix shell are incredibly useful and time-saving that you do them without thinking about it. Say for example you need to add a file or directory name to a file like .gitignore. On Windows you might open an editor and add the new lines to the end of the file and save it, but in a *nix shell (I imagine there’s a comparable approach maybe using something like Windows Powershell too), you can do:

echo "newfile" >> .gitignore

and you’re done.