Remotely installing SGI IRIX 6.5
from a GNU/Linux install server

Last update: May 2014 // Previous updates: Dec 2011, Apr 2009, Feb 2008 // First created: Apr 2007

Davor Ocelic, docelic@spinlocksolutions.com, http://techpubs.spinlocksolutions.com/

http://techpubs.spinlocksolutions.com/irix/remote-irix-6.5-installation-from-linux.html

This is an up-to-date, works-the-first-time guide to configuring a GNU/Linux machine to become a remote install server for the Silicon Graphics IRIX 6.5 operating system.

For best results, pay attention to every step and remark throughout the guide. With GNU/Linux-based install servers for Unix, the devil is all in the details.

Introduction

To perform an IRIX 6.5 installation on a SGI MIPS machine, you will need the following:

(We will be making references to CDs throughout the Guide, but if you have the IRIX software packaged in tarballs that's fine too.)

SGI MIPS workstations

For buying SGI MIPS workstations, browse regional Ebay stores, Ian Mapleson's site, Olmos GmbH, Used Unix (3D Systems) and XS International sales, and SGI Warehouse Clearances.
Ebay offerings are cheaper, often multiple times, in comparison to "commercial" offerings.

For basic desktop play, all workstations, including old Indys, Indigos and O2 are fine. Octane and newer machines are fine for all normal computer use.
More on SGI hardware purchase advice from the irreplaceable Ian Mapleson's site (look for specific purchase advice pages).

IRIX 6.5 Foundation CDs

Foundation CDs are not freely downloadable, they need to be obtained by either:

  1. Paying for SGI Supportfolio software subscription
  2. Searching for original box packages on Ebay
  3. Buying used hardware with software included
There are no software packages containing only the Foundation CDs, so if buying from Ebay, your package will also contain the overlays. Make sure that the package on sale is a full CD set and not just an upgrade (upgrade boxes contain only the overlays, and no Foundation CDs). As a general rule of thumb, if the CD set has less than 5 CDs, it is surely not a full package. (Full package sets usually contain extra software and demos, and can have 10 or 14 CDs altogether).

IRIX 6.5 Installation Tools and Overlays CDs

For older SGI Irix workstations, such as Indy, Indigo, Indigo 2 and O2, Irix releases 6.5.21 or 6.5.22 are best.
(In fact, IRIX 6.5.22 is the last version that supports these older systems. Irix releases after 6.5.22 only work on newer workstations: Octane, Octane 2, Fuel and Tezro.)

The same rules as for the Foundation CDs apply here — to obtain the CDs, you can purchase them from SGI, find offers on Ebay, or buy used machines with software included.
If your Installation Tools and Overlays CDs are a version lower than 6.5.22, after installation SGI is offering a free upgrade to version 6.5.22, you just have to complete a free registration on the SGI Supportfolio site.

GNU/Linux installation server, the IRIX files

Copying IRIX installation files to disk

First of all, we will need copy the IRIX installation files from the original media onto the GNU/Linux install server.

The most convenient way to organize the directory structure is to decide on a particular top-level directory, and then copy each CD (or extract each tarball) into its own subdirectory.
In this guide, we will use /srv/irix/ as the toplevel directory, and represent each CD or tarball with a subdirectory named 1, 2, 3, and so on.

This naming scheme has been chosen so that the directory names would be as short as possible. This will keep the amount of text we will need to type in on the SGI machine during installation to a minimum. (We want to keep the amount of text to a minimum there because the prompts do not support GNU Readline or arrow-up, and typing is tedious and error-prone.)

Copying CDs to disk

PC CD-Rom drives usually cannot mount SGI CD-Roms which are saved in EFS filesystem and have 512-byte block size. The filesystem itself is supported by Linux, but the CD-Roms do not support the 512-byte block size.

The solution is to dd CD-Roms verbatim to the disk, without mounting. That will create .efs image files, which can then be mounted locally using mount -o loop -t efs to access the files and copy them over.

Here's the procedure that should be done for each CD:

dd if=/dev/cdrom of=efs.img   # (Don't worry about read errors at the end)
mkdir -p mnt
mount -o loop -t efs efs.img mnt
mkdir /srv/irix/X   # (X is a number starting from 1 onwards for each CD or tarball)
rsync -av mnt/ /srv/irix/X   # ("mnt/" must be written with "/" at the end -- don't forget!)
umount mnt
rm efs.img

Directory structure

After following the procedure above and copying the files, you should end up having /srv/irix/ with a series of subdirectories in it, named 1, 2, 3 etc.. Each number represents a directory containing files from one installation CD or tarball.

Personally, for clarity, instead of naming the directories 1, 2, 3 etc., I prefer to name them after the actual media names, and then make numbers be symlinks. Here's how that structure looks:

cd /srv/irix
ls -al

drwxr-xr-x 9 root root 49152 May 29 02:55 .
drwxr-xr-x 3 root root 49152 May 29 01:12 ..
drwxr-xr-x 7 root root  4096 May 29 02:56 SGI-IRIX-6.5.21-ovl1
drwxr-xr-x 7 root root  4096 May 29 02:56 SGI-IRIX-6.5.21-ovl2
drwxr-xr-x 4 root root  4096 May 29 01:18 SGI-IRIX-6.5.21-ovl3
drwxr-xr-x 4 root root  4096 May 29 02:56 SGI-IRIX-6.5.21-ovl4
drwxr-xr-x 3 root sys   4096 Feb 18  2006 SGI-IRIX-6.5-Foundation-1
drwxr-xr-x 3 root sys   4096 Feb 18  2006 SGI-IRIX-6.5-Foundation-2
lrwxrwxrwx 1 root root    26 May 29 02:50 1 -> SGI-IRIX-6.5-Foundation-1/
lrwxrwxrwx 1 root root    25 May 29 02:50 2 -> SGI-IRIX-6.5-Foundation-2
lrwxrwxrwx 1 root root    21 May 29 02:50 3 -> SGI-IRIX-6.5.21-ovl1/
lrwxrwxrwx 1 root root    21 May 29 02:50 4 -> SGI-IRIX-6.5.21-ovl2/
lrwxrwxrwx 1 root root    20 May 29 02:51 5 -> SGI-IRIX-6.5.21-ovl3
lrwxrwxrwx 1 root root    21 May 29 02:50 6 -> SGI-IRIX-6.5.21-ovl4/

To double-check your naming, "1" and "2" should be the Foundation CDs.
Directory or symlink "3" should be the first CD of the Installation Tools and Overlays, and it should contain the "stand/" and "dist/miniroot/" subdirectories, among others.
(Note that the stand/ subdirectory was added in newer IRIX 6.5 releases, older ones do not have it, and have the files directly in the root directory on the media.)

Here's an example:

ls -al 3/stand/ 3/dist/miniroot/

3/dist/miniroot/:
drwxr-xr-x 2 root root     4096 Jul 15  2003 .
drwxr-xr-x 3 root root     4096 Jul 15  2003 ..
-rwxr-xr-x 1 root root  9473792 Jul 15  2003 unix.IP19
-rwxr-xr-x 1 root root  7441972 Jul 15  2003 unix.IP20
-rwxr-xr-x 1 root root  9153624 Jul 15  2003 unix.IP21
-rwxr-xr-x 1 root root  7966808 Jul 15  2003 unix.IP22
-rwxr-xr-x 1 root root  9332176 Jul 15  2003 unix.IP25
-rwxr-xr-x 1 root root  8341712 Jul 15  2003 unix.IP26
-rwxr-xr-x 1 root root 11753200 Jul 15  2003 unix.IP27
-rwxr-xr-x 1 root root  8596592 Jul 15  2003 unix.IP28
-rwxr-xr-x 1 root root 10804368 Jul 15  2003 unix.IP30
-rwxr-xr-x 1 root root  8330648 Jul 15  2003 unix.IP32
-rwxr-xr-x 1 root root 12819040 Jul 15  2003 unix.IP35

3/stand/:
drwxr-xr-x 2 root root    4096 Jul 15  2003 .
drwxr-xr-x 7 root root    4096 May 29 02:56 ..
-rwxr-xr-x 1 root root  516752 Jul 15  2003 fx.64
-rwxr-xr-x 1 root root  274940 Jul 15  2003 fx.ARCS
-rwxr-xr-x 1 root root  987332 Jul 15  2003 ide.IP20
-rwxr-xr-x 1 root root 1974468 Jul 15  2003 ide.IP22
-rwxr-xr-x 1 root root 1028336 Jul 15  2003 ide.IP26
-rwxr-xr-x 1 root root 1686936 Jul 15  2003 ide.IP28
-rwxr-xr-x 1 root root 1598624 Jul 15  2003 ide.IP30
-rwxr-xr-x 1 root root  750032 Jul 15  2003 ide.IP32
(The fx.64 and fx.ARCS are the disk partitioning programs you will eventually use during installation. The extension .64 or no extension indicates a 64-bit variant. ARCS indicates 32-bit.)

You will surely want to repartition the disk to change partition types if you are installing over an old Irix version that used the EFS filesystem (i.e. Irix 5.x).
If you do not change the old EFS partition type, Irix 6.5 will honor the EFS setting, and then, during installation, it will require the EFS packages which do not exist in your IRIX 6.5 distribution, and prevent you from starting the installation.


GNU/Linux installation server, the configuration

Your choice of GNU/Linux distribution is not particularly important, although the Guide is based primarily around Debian GNU and/or Ubuntu.
However, do make sure that you use the exact software packages as listed here, because other (seemingly equivalent) packages have various subtle differences in behavior that IRIX clients are unable to work with.

Also, before we begin with the configuration, we need to agree on the following conventions:
Hostname Domain IP Address MAC Address Purpose / Function
cyberstation .sgi 192.168.7.2 GNU/Linux install server
boyd .sgi 192.168.7.9 08 00 98 13 ad f7 SGI IRIX workstation (being installed)

Network configuration

To solve any network problems that a MIPS PROM might have when talking to a GNU/Linux server, run the following on Linux:

echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc
echo "2048 32767" > /proc/sys/net/ipv4/ip_local_port_range
Note that the above settings are not retained over a server reboot, so you'll want to make them permanent by adding them to the system startup files such as /etc/sysctl.conf, /etc/sysctl.d/local.conf, /etc/bootmisc.sh, /etc/rc.local or similar.

DNS configuration

To successfully perform the installation, you will need a DNS server running on the GNU/Linux install host.
The DNS service will not need to be advertised anywhere nor it will conflict with any other DNS servers on your network, but it is required by the IRIX clients. IRIX clients will receive the custom-specified IP address of this DNS server, and will use it to resolve the hostname of the GNU/Linux install server into an IP.
(Numerical IP addresses do not work, you will need to use hostnames and have a working DNS.)

Here's how to install and configure one to resolve hostnames in the domain ".sgi" in just a couple lines:

echo '192.168.7.2 cyberstation.sgi' >> /etc/hosts
echo '192.168.7.9 boyd.sgi' >> /etc/hosts
apt-get install dnsmasq
invoke-rc.d dnsmasq restart
Test with:
nslookup cyberstation.sgi 192.168.7.2

Server:         192.168.7.2
Address:        192.168.7.2#53
Name:   cyberstation.sgi
Address: 192.168.7.2

Bootp configuration

(Bootp package from ftp://ftp.ntplx.net/pub/networking/bootp/)

apt-get install bootp

# Then edit /etc/inetd.conf and uncomment the bootps line and add "-d 4":
# bootps         dgram   udp     wait    root    /usr/sbin/bootpd        bootpd -i -t 120 -d 4

# Then edit /etc/bootptab to add entry for IRIX client machine:
# Fields:
# 1) Intended client machine hostname (must be hostname, not IP)
# 2) Its MAC Address (type 'printenv' in prompt on IRIX and look for 'eaddr')
# 3) Domain name (we use "sgi")
# 4) DNS name server to use
# 5) Path to Irix files (relative to TFTP root)
# 6) Sometimes it is also required to specify parameter ip= (IP address of the client machine),
#      but I did not determine in what cases specifically it happens.

boyd:ha=08009813ADF7:dn=sgi:ds=192.168.7.2:rp=/srv/irix:hd=3/stand

# And reload bootpd/inetd:
pkill bootpd
invoke-rc.d openbsd-inetd reload

TFTP configuration

(TFTP package from ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/. We cannot use tftpd included with dnsmasq as it does not support all the necessary TFTP commands)

apt-get install tftpd

# Then, edit /etc/inetd.conf to enable 'tftp' if not already enabled, and set root to /srv/irix, not to /srv/tftp:
# tftp            dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /srv/irix

pkill in.tftpd
invoke-rc.d openbsd-inetd reload

RSH configuration

(RSH server package from ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/)

apt-get install rsh-redone-server

# Edit /etc/inetd.conf to enable service "shell" (should be by default)
# shell           stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rshd

pkill in.rshd
invoke-rc.d openbsd-inetd reload

# Edit /etc/hosts.equiv and enter:
# cyberstation
# boyd
# (That's two hostnames, each in its own line)

# Add user 'guest' to the system and create ~guest/.rhosts:
adduser --disabled-password guest
echo 'boyd.sgi root' > ~guest/.rhosts

Guest user's shell configuration

(Enhanced Korn Shell package from http://mirbsd.de/mksh/)

Guest user's shell must be set to a strictly-compatible Korn shell, and I've found that mksh works. In addition to that shell, we need a wrapper for calling it, and we need to set guest user's shell to that wrapper.

apt-get install mksh
echo -e '#!/bin/sh\nexec /bin/mksh' > /usr/local/bin/kshwrap
chmod 755 /usr/local/bin/kshwrap

(Having this wrapper is a much better solution than having to replace system's /bin/sh shell with Korn shell, like some other people have advised. Replacing /bin/sh with Korn shell makes your system unbootable and causes enough problems that it's not possible to permanently have it that way. I don't remember any more why exactly is the wrapper needed instead of setting guest user's shell to /bin/mksh directly, but it must be done in this way.)

Monitoring log files on GNU/Linux install server

It is absolutely necessary to be monitoring the logs while trying to set the install server up.

tail -f /var/log/{syslog,messages,auth.log}

IRIX client

Starting the installation

Invoking the partitioner

In the Command Monitor / PROM shell, run:

bootp():fx.64 -x   (Remember, .64 for 64-bit, .ARCS for 32-bit)

If invoking the partitioner does not work

If starting fx does not work, make sure that your bootpd in /etc/inetd.conf on the GNU/Linux server has been started with the debug level "-d 4".
Then, be looking at the output of the "tail -f ..." command given above while you are invoking bootp() on the IRIX client to see whether the IRIX client is accessing the install server's bootpd at all.

If bootpd is not being accessed, make sure you don't have any firewall in place on the GNU/Linux server.
If that doesn't help, try specifying the hostname to boot from in the bootp line:

bootp()cyberstation:fx.64 -x   (Remember, .64 for 64-bit, .ARCS for 32-bit)
(Do not use the IP addresses because the bootpd service on the GNU/Linux server seems to require hostnames. If you specify an IP address, the bootpd on the Linux server will still takes that to be a hostname, and as it will not be able to resolve it, it will ignore the request with the following log line:
May 29 19:02:34 cyberstation bootpd[3044]: ignoring request for server 192.168.7.2 from client at Ethernet address 08:00:98:13:ad:f7

If it still doesn't work, email me with the following information and we'll figure it out:

  1. The bootp() line you invoked on the IRIX client
  2. The output from the logs (tail -f ... command) on the GNU/Linux server
  3. The contents of /etc/bootptab and /etc/inetd.conf

Partitioning instructions

When fx starts up, it will ask three prompts to determine which drive you want to partition:

fx: "device-name" = (dksc)
fx: ctlr# = (0)
fx: drive# = (1)
...opening dksc(0,1,0)
If you've got multiple disks, the second disk is drive# 2 and so on. You will need to run fx for each drive you have and want to partition.

fx supports hierarchical menus. To display the current partitioning layout on the disk, you can type "label", "show" and then "partitions".
A shorthand notation for this is "l", "sh", "part". To do it all at once, you can type "l/sh/part".

If you type "l", "sh", etc. and get deeper into the menu hierarchy, you can go back a level by typing ".." or multiple levels by typing "../.." etc.
If you want to interrupt the current command or prompt, press Ctrl+c.
When you are done partitioning a disk, you can partition another one by typing ".." or pressing Ctrl+c and you will be prompted for the new device name.

If your disk is not empty and you would like to perform a clean installation, you will need to erase the disk. Run "exe/seq" and accept the default options to erase it, then proceed with repartitioning.

To partition your main/root disk, choose "[r]epartition/" and "[ro]otdrive", then type "xfs", and "yes". An alternative way for the same thing is to run "[l]abel", "[c]reate", "[a]ll".
To partition an additional disk, choose "[r]epartition/" and "[o]ptiondrive", then type "xfs", and "yes".

And that should be it. Go back to the main "fx>" prompt and type "exi" to exit fx and return to the PROM Monitor.

Starting the installation

To start the installation, exit the partitioner or reboot the machine, and then either press "Esc" during boot or wait for the PROM Monitor to show back up.

In there, choose "Install system software", "Remote directory", hostname "cyberstation" and directory "/".

The installation will start and it will create a "miniroot" on the local disk by transferring the installation data from the remote server to it. Once the miniroot has been created and the client kernel loaded (a file named "unix.IP??"), the installation will continue.

If working with a new disk, the installer will ask to format the partitions and the block size (for small disks, use 512B).
Then it will ask about the hostname, the network interface ("ec0" if asked) and the IP address to configure.

Then it will ask whether you want to install the "Maintenance" (compatibility) or "Feature" (features) stream.
Choose "Feature" if you have a newer IRIX release than 6.5.22. Choose "Maintenance" if you have a version of IRIX lower than 6.5.22 and will want a free upgrade to 6.5.22m available from SGI Supportfolio.


I hope this is all. Comments welcome.

docelic-AT-spinlocksolutions.com
http://www.spinlocksolutions.com/ - Advanced Unix-based networks for commercial and education sectors.

http://techpubs.spinlocksolutions.com/