Home NAS (Advanced) • Installing Solaris 10 on a SunFire v210 via network

Installing Solaris 10 on a SunFire v210 via network


svuxsunfirev210_1Recently a collegue of mine (over at www.raymii.org) came in possession of a Sun Ray 2 thin client set. Since these thin clients don’t use regular desktop hardware and are only able to communicate with Solaris we wanted to maintain the original experience and use real Sun hardware. Luckily for us we had a old SunFire v210 lying at work (which was about to get scrapped) so we took the server and tried installing Solaris on the server. So far no problems right? That’s where it started… but first some specs!

CPU: 2 physical 1.34GHz UltraSPARC IIIi (SPARCv9)
RAM: 4GB ECC DDR266 (2GB per CPU)
HDD: 2x 73GB SCSI (U160) 10KRPM
LAN: 4x 1Gbit
PORTS: 1x 10Mbit mgmt port, 1x serial port (DB-9), 1x RJ-45 serial console and an external SCSI (U160) interface

Currently Solaris 11 is the latest version Oracle offers. Too bad this version dropped sun4u and sun4us support so we had to fall back to Solaris 10. Luckily the Solaris 10 SPARC DVD can be freely downloaded from the Oracle website and contains a live DVD image.

The SunFire we have doesn’t have a optical drive making the live DVD partly useless. Also a 3rd party optical drive (a slimline IDE drive) will not be recognized by the server as Sun/Oracle only allows their drives to be used, so the drive I had lying around was useless as well. The OpenBoot firmware on the server cannot boot from USB leaving out the option to create a USB stick as well.

So how will it be installed?
The only thing that’s left is network boot. For this a Solaris Jumpstart server is required containing the installation software and files required for installing Solaris 10 onto other devices. Since we didn’t have another Solaris server ready we’ve found that it’s possible to use any Linux based server to function as a Jumpstart server as the kernel loads using TFTP and the Solaris installation files are served using NFSv4. The only different thing is that RARP is used instead of DHCP to retrieve an IP-address.

Server prerequisites:
Since we didn’t have another Solaris powered server available for Jumpstart purposes we wanted a regular Linux server to fill in this purpose. I’ve used a regular Ubuntu 15.10 server. For this the following software is needed to behave like a Jumpstart server:
– Bootparamd
– NFSv4
– Solaris 10 SPARC DVD

Networking setup:
In this post I will use the network naming like used in my private setup, that is:
– which is my server “server”
– which is my gateway
– which is my Sun server “sunfire”
– The MAC address of the SunFire is “00:14:4f:5d:ae:52

Preparing the Sun server part 1:
This part will consist of 2 steps, the first one about retrieving the MAC address and the second step is later in the guide for starting the installation itself (which I will not cover here). For this you will need to hook up the Sun server using the serial console. You’ll need a RJ-45 to DB-9 cable for this task. You can use any software that can communicate with serial ports like Putty or Minicom. The Sun server communicates at 9600 baud, no parity and 8 stop bits.
Once you have turned on the server and it start spewing out all it’s boot information you need to interrupt the automatic boot process once you see messages about POST. To interrupt the boot process a Control + Break can be issued. From minicom you can issue Control + A, F.
If the process is interrupted you’ll be left at the following prompt:
{0} ok
From there do:
boot net -v
This will try to boot from network which will fail now, but it will show you it’s MAC address! Write/copy it down because we will need this information later on.

Preparing the Linux server:
Now that we now the requirements for functioning as a Jumpstart server we need to install the software mentioned at Server prerequisites. The only thing that has to be downloaded manually is the Solaris 10 DVD. You can get it for free at the Oracle website (you’ll need an account and that’s free). You can get it from the URL below and the version “Oracle Solaris 10 (SPARC)” is the one you need:
Solaris 10
Once downloaded, copy it over to the server and place it in a directory you like (I’ve placed it in /root).

To install the required packages we can run the following command:
apt-get install rarpd tftpd-hpa bootparamd nfs-kernel-server

Now that the required software is installed we need to configure it. We start with RARP and open up the following config:
vim /etc/default/rarpd

Change the last line to the following, but replace em1 with the name of your NIC. Since I have multiple NIC’s I specified one directly (else it will listen on all interfaces which I didn’t want) and here we change the default TFTP directory from /tftpboot to /srv/tftp/, this is because the TFTP software uses this directory by default:
OPTS="-v -b /srv/tftp/ em1"

Now set up the NFS server, this is a simple task as we first need to mount the downloaded ISO:
mkdir -p /media/cdrom
mount -o loop /root/sol-10-u11-ga-sparc-dvd.iso /media/cdrom/

Define a share in NFS for this mount point as this mount will be used to serve the installation files to the Sun server later on. Open the following file:
vim /etc/exports

And add the following entry:
Note the IP-address, change this to the IP you’re planning to give the Sun server.

We have to change Bootparamd as well, this is the software that handles the configuration of the Sun server. Open the following file:
vim /etc/bootparams

And add the following line:
sunfire root=server:/media/cdrom/Solaris_10/Tools/Boot install=server:/media/cdrom boottype=:in

Some explanation for the above: This defines which host gets the specified NFS share. NFS4 uses relative pathnames, but I am not using this, so therefore I’ve specified the absolute path. Note that server: is the hostname of the server running the NFS service and was mentioned in my post earlier as my server is originally named "server". The name used is the hostname of your server, substitute it to the correct name!

We need to define a host entry in the hosts file as well, an additional file ethers has to be created as well since this is used by RARP:
vim /etc/hosts

Add the following entry: sunfire

Create the ethers file:
vim /etc/ethers

And add the following entry:
00:14:4f:5d:ae:52 sunfire
Replace the MAC address with the MAC of your Sun server! You can change the hostname as well, but needs to be the same everywhere!

We have to change some TFTP settings as well. There is a bug in TFTP on Ubuntu where it only listens on IPv6 but as you can see we are using IPv4 here. If we don’t change the configuration to listen on IPv4 as well you’ll get the following error in syslog:
server in.tftpd[2025]: connect: Address family not supported by protocol

So open up the TFTP configuration file:
vim /etc/default/tftpd-hpa

And change the TFTP_ADDRESS line to the following:

We have changed some configuration file so we need to restart the corresponding services:
service tftpd-hpa restart
service bootparamd restart
service nfs-kernel-server restart
service rarpd restart

The configuration of the server is now complete! One last step we need to do is to copy the netboot kernel for the Sun server. This resides on the mounted Solaris install image. By default OpenBoot will look for a kernel using TFTP when using network boot. Based on it’s IP-address it will look for a matching HEX filename. We can find out which filename that would be by running the following:
printf "%02X%02X%02X%02X" 192 168 0 230

This will result in the following (for my IP-address):

Now that we know the filename the Sun server searches on the TFTP server we can copy the proper netboot kernel to the TFTP server directory:
cp /media/cdrom/Solaris_10/Tools/Boot/platform/sun4u/inetboot /srv/tftp/C0A800E6

That’s it for the Linux server part! We’ve prepared everything we need to boot the Sun server from the network and install Solaris 10 on it!

Preparing the Sun server part 2:
Now that we have finished the “Jumpstart” server we can start installing Solaris on the Sun server. Should you have left the Sun server powered on halt the boot process (as it will still haunt for an IP-address which it will not get anymore at that point), issue a Break command by doing Control + Break or from minicom you can issue Control + A, F. If you just powered on the server again, look at the steps in part 1!

Once you are left at the following boot prompt we can start the network boot process and launch the installer:
{0} ok

To boot from network and launch the installer do:
boot net -v -- install

Not much explanation is needed here, but boot net tells OpenBoot to boot from the first network card on the Sun server. The -v switch makes the boot output verbose as this is nice to have if errors occur during the boot process. And last the -- install tells OpenBoot to start the installer from the Jumpstart server.

If the boot process succeeds you will see similar output on the console and at the end the installer will start. From there it’s a regular Solaris 10 installation that you can perform:

{0} ok boot net -v -- install
Boot device: /pci@1f,700000/network@2 File and args: -v -- install
1000 Mbps FDX Link up
Requesting Internet Address for 0:14:4f:5d:ae:52
1000 Mbps FDX Link up
Internet address is:
hostname: sunfire
domainname: (none)
Found @ ec:a8:6b:f3:88:76
root server: server (
root directory: /media/cdrom/Solaris_10/Tools/Boot
krtld: Unused kernel arguments: `install'.
module /platform/sun4u/kernel/sparcv9/unix: text at [0x1000000, 0x10af6d5] data at 0x1800000
module /platform/sun4u/kernel/sparcv9/genunix: text at [0x10af6d8, 0x1298baf] data at 0x1856740
module /platform/SUNW,Sun-Fire-V210/kernel/misc/sparcv9/platmod: text at [0x1298bb0, 0x129963f] data at 0x18ae4c0
module /platform/sun4u/kernel/cpu/sparcv9/SUNW,UltraSPARC-IIIi: text at [0x1299680, 0x12aac9f] data at 0x18aed40
SunOS Release 5.10 Version Generic_147147-26 64-bit
Copyright (c) 1983, 2013, Oracle and/or its affiliates. All rights reserved.
Ethernet address = 0:14:4f:5d:ae:52
Using default device instance data
mem = 4194304K (0x100000000)
avail mem = 3924254720
root nexus = Sun Fire V210
pseudo0 at root
pseudo0 is /pseudo
scsi_vhci0 at root
scsi_vhci0 is /scsi_vhci
ramdisk0 at root
ramdisk0 is /ramdisk-root
WARNING: Last shutdown is later than time on time-of-day chip; check date.
root on /ramdisk-root:a fstype ufs
pcisch1 at root: SAFARI 0x1e 0x600000
pcisch1 is /pci@1e,600000
PCI-device: isa@7, ebus0
ebus0 is /pci@1e,600000/isa@7
mc-us3i0 at root: SAFARI 0x0 0x0 ...
mc-us3i0 is /memory-controller@0,0
mc-us3i1 at root: SAFARI 0x1 0x0 ...
mc-us3i1 is /memory-controller@1,0
power0 at ebus0: offset 0,800
power0 is /pci@1e,600000/isa@7/power@0,800
rmc_comm0 at ebus0: offset 0,3e8
PCI-device: pmu@6, pmubus0
PCI-device: gpio@80000000, pmugpio0
pmugpio0 is /pci@1e,600000/pmu@6/gpio@80000000
pseudo-device: rmclomv0
rmclomv0 is /pseudo/rmclomv@0
Hardware watchdog enabled
pseudo-device: dld0
dld0 is /pseudo/dld@0
pcisch0 at root: SAFARI 0x1f 0x700000
pcisch0 is /pci@1f,700000
pcisch3 at root: SAFARI 0x1d 0x700000
pcisch3 is /pci@1d,700000
PCI-device: usb@a, ohci0
ohci0 is /pci@1e,600000/usb@a
su0 at ebus0: offset 0,3f8
su0 is /pci@1e,600000/isa@7/serial@0,3f8
cpu1: UltraSPARC-IIIi (portid 1 impl 0x16 ver 0x34 clock 1336 MHz)
cpu0: UltraSPARC-IIIi (portid 0 impl 0x16 ver 0x34 clock 1336 MHz)
iscsi0 at root
iscsi0 is /iscsi
pseudo-device: zfs0
zfs0 is /pseudo/zfs@0
Configuring devices.
pseudo-device: devinfo0
devinfo0 is /pseudo/devinfo@0
pcisch2 at root: SAFARI 0x1c 0x600000
pcisch2 is /pci@1c,600000
pseudo-device: pseudo1
pseudo1 is /pseudo/zconsnex@1
/pci@1c,600000/scsi@2 (glm0):
glm0 supports power management.
/pci@1c,600000/scsi@2 (glm0):
Rev. 0 Symbios 53c1010-33/66 found.
PCI-device: scsi@2, glm0
glm0 is /pci@1c,600000/scsi@2
/pci@1c,600000/scsi@2,1 (glm1):
glm1 supports power management.
/pci@1c,600000/scsi@2,1 (glm1):
Rev. 0 Symbios 53c1010-33/66 found.
PCI-device: scsi@2,1, glm1
glm1 is /pci@1c,600000/scsi@2,1
pseudo-device: fssnap0
fssnap0 is /pseudo/fssnap@0
pseudo-device: ramdisk1024
ramdisk1024 is /pseudo/ramdisk@1024
pseudo-device: winlock0
winlock0 is /pseudo/winlock@0
pseudo-device: llc10
llc10 is /pseudo/llc1@0
pseudo-device: lofi0
lofi0 is /pseudo/lofi@0
pseudo-device: fcp0
fcp0 is /pseudo/fcp@0
pseudo-device: fcsm0
fcsm0 is /pseudo/fcsm@0
pseudo-device: trapstat0
trapstat0 is /pseudo/trapstat@0
sd3 at glm0: target 0 lun 0
sd3 is /pci@1c,600000/scsi@2/sd@0,0
pseudo-device: rmcadm0
rmcadm0 is /pseudo/rmcadm@0
pseudo-device: tsalarm0
tsalarm0 is /pseudo/tsalarm@0
pseudo-device: pool0
pool0 is /pseudo/pool@0
pseudo-device: mem_cache0
mem_cache0 is /pseudo/mem_cache@0
pseudo-device: fcode0
fcode0 is /pseudo/fcode@0
su1 at ebus0: offset 0,2e8
su1 is /pci@1e,600000/isa@7/serial@0,2e8
sd4 at glm0: target 1 lun 0
sd4 is /pci@1c,600000/scsi@2/sd@1,0

Using RPC Bootparams for network configuration information.
Attempting to configure interface bge3...
Skipped interface bge3
Attempting to configure interface bge2...
Skipped interface bge2
Attempting to configure interface bge1...
Skipped interface bge1
Attempting to configure interface bge0...
Configured interface bge0
svc:/system/filesystem/local:default: WARNING: /usr/sbin/zfs mount -a failed: one or more file systems failed to mount
Setting up Java. Please wait...
Serial console, reverting to text install
Beginning system identification...
Searching for configuration file(s)...
Search complete.
Discovering additional network configuration...

Select a Language

0. English
1. Brazilian Portuguese
2. French
3. German
4. Italian
5. Japanese
6. Korean
7. Simplified Chinese
8. Spanish
9. Swedish
10. Traditional Chinese

Please make a choice (0 - 10), or press h or ? for help:


Leave a Reply

Your email address will not be published. Required fields are marked*



This site uses Akismet to reduce spam. Learn how your comment data is processed.