Netinstall Solaris 8 on a Sun Ultra 1 from Raspberry Pi 3

This one was a real journey!

There are a few guides trying to explain how to perform a netinstall/netboot of Solaris 8 from linux. However, they all lacked the crucial parts of the procedure.

A few sources for this guide are:
http://znark.com/tech/solarisinstall.html
https://www.docbert.org/Solaris/Jumpstart/linux.html

Here is my go at a complete procedure. The goal is just to get the darn OS installed, you can install  fancy smancy packages later if you want.

First, acquire the Solaris 8 64bit iso from oracle/wherever.
They come as two zips:

p10356262_800_SOLARIS64_1of2.zip
p10356262_800_SOLARIS64_2of2.zip

You only need to extract p10356262_800_SOLARIS64_1of2.zip.
This will give you the following iso: sol-8-hw4-sparc-v1.iso
Put it somewhere on your RPI3.

RPI 3 Configuration

Setup the Netinstall Network

In this example, the RPI3 will have the ip 192.168.2.1 on its NIC eth0.
The Ultra 1 will have the IP 192.168.2.200

edit /etc/network/interfaces and configure eth0 like this:

iface eth0 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0

Install and Configure Software

# Install the following packages
apt-get install rarpd nfs-kernel-server bootparamd

# Start a separate terminal for more easy monitoring and run
rarpd -e -v -d eth0

# Create the directory for the installation media
mkdir -p /pub/solaris

# Mount Solaris iso
mount -o loop sol-8-hw4-sparc-v1.iso /mnt/cdrom

# Copy all the files we need for the installation
find /mnt/cdrom -depth -print | cpio -pdmu /pub/solaris

Configure NFS

Open up and edit /etc/exports and add the following

/pub/solaris/ 192.168.2.0/24(ro,no_root_squash)

The SUN machine will be called harpocrates.

# Add harpocrates to host file on the RPI 3
echo “192.168.2.200 harpocrates” >> /etc/hosts

Setup bootparams

Edit /etc/bootparams and add the following (make sure its all on one line):

harpocrates  root=192.168.2.1:/pub/solaris/Solaris_8/Tools/Boot  install=192.168.2.1:/pub/solaris/ install_config=192.168.2.1:/pub/solaris/Solaris_8/Tools/Boot/usr/sbin/install.d/install_config/ sysid_config=192.168.2.1:/pub/solaris/Solaris_8/Tools/Boot/usr/sbin/install.d/install_config/sysidcfg rootopts=:rsize=32768 boottype=:in

Configure Jumpstart

It appears that the netinstall is using a graphical dialogue for just a few questions (or at least that it what happens for me), so we need to create an answer file that jumpstart will use.
Create the jumpstart file /pub/solaris/Solaris_8/Tools/Boot/usr/sbin/install.d/install_config/harpocrates and add (adjust the disc sizes as you wish):

install_type    initial_install
system_type     standalone
cluster         SUNWCall
package         SUNWaccr        add
package         SUNWaccu        add
package         SUNWgzip add
partitioning    explicit
filesys         c0t0d0s0         512    /
filesys         c0t0d0s1        2048    /var
filesys         c0t0d0s2         all    overlap
filesys         c0t0d0s3        2048    swap
filesys         c0t0d0s4        1024    /usr
filesys         c0t0d0s5        free    /local

Edit the file /pub/solaris/Solaris_8/Tools/Boot/usr/sbin/install.d/install_config/rules.ok, we will tell it to use our jumpstart profile for the sun4u architecture:

karch sun4u                             install_begin   harpocrates     patch_finish

Edit the file /pub/solaris/Solaris_8/Tools/Boot/usr/sbin/install.d/install_config/sysidcfg adjust as you wish, however, I’m not really sure if actually used or just partially. You get to set root password at boot and the previous IP settings are kept..hmm

system_locale=sv.UTF-8
timezone=MET
terminal=sun-cmd
timeserver=localhost
root_password=m4QPOWNY
network_interface=le0 {hostname=harpocrates
                       default_route=192.168.1.1
                       ip_address=192.168.1.98
                       netmask=255.255.255.0
                       protocol_ipv6=no}

The Important but Ugly Hack

We need to add a few lines to the startup file, otherwise you will receive error when the installers tries to transition from console to graphical environment. The error appears to be about the framebuffer device (its probably too lazy figuring out how to load the required modules on its own). The error is “/sbin/startup: /dev/fbs does not exist”.

I found the solution here.
It still spits out some errors, but it works.

Edit the file /pub/solaris/Solaris_8/Tools/Boot/sbin/startup and add the snippet below the comment field:

##########
# Make sure all configuration necessary is completed in order
# to run the window system

# Fix  module shit
mkdir /tmp/linkmod
cp -f /usr/lib/devfsadm/linkmod/* /tmp/linkmod/
ls -l /tmp/linkmod
devfsadm -l /tmp/linkmod/

Start the installer

Now make sure all services are started/restarted after editing configs on your RPI3.

systemctl restart bootparamd
systemctl restart nfs-kernel-server

Now boot your Sun Ultra 1 into the “OK” prompt and run (notice the space before install):

boot net -v – install

Let it load for a while. When you hit “configured interface le0” it appears to freeze forever.
Just send a ping from your RPI3 to 192.168.2.200 and it will magically unfreeze and continue.

So, After a few minutes the  installation GUI should pop up with a loud beep.
You get to make a few decision. After setting timezone and confirm the settings a console window shows up which will run load the jumpstart profile.

Here I had loads of problems at first attempts, mainly because I tried to merge Solaris 8 CD1 and CD2 into one directory and somehow forgot to copy the CD1 product-directory at first. Got really messy. When such things happen or your nfs export is not working out you will most likely see a message like this “There is no valid Solaris product on the media /cdrom”.
It reads the .cdtoc file in /pub/solaris/ and there it finds the location to the Product directory and making sure some specific files exists there. 

So, after some hour due to really slow disc access, you’ll hopefully have a working Solaris 8 system on your Sparc Ultra 1!

Bonus: Quirks when installing additional packages after installation

Since my goal was just to the OS installed, I had to install all extra applications I wanted afterwards.
I created a Products-directory on my RPI3 containing all the contents from “Products” directory on the RPI3, then I shared this via NFS and mounted it on my Sparc.

When installing for instance, Netscape (called NSCPcom) from the share (pkgadd -d <full product directory path> NSCPcom) , the installer failed and reporting something like “Cannot open pkgadd: ERROR: class action script did not complete sucessfully”.

This is due to permission problems, there is a check script in the installer that probably does not have permissions to read your nfs mount. You can solve this quick and dirty by copying the files somewhere locally on your Sparc and then try to install it again.

Solaris SH and backspace

It is downright frustrating when you login to, for instance, Solaris 10 while you are in a hurry and keep pushing the wrong keys so your console looks like a greasy garbage dump filled with ^H^H^H^H and you just want to stangle yourself.

I shall never forget how to solve this problem by typing in this life saving coma^hmand:

stty erase <backspace key>

The command should look like this after you have hit your backspace key:

stty erase ^H

Now backspace key will function as expected, without starting bash.

To set-and-forget this on a global level:

echo stty erase <backspace key> >> /etc/profile