SGI Indy and Debian Linux

This is an old page saved for posterity. It is no longer updated.

SGI IndyThe Silicon Graphics Indy is a MIPS based machine designed to run SGI’s own Irix but it is also supported by Linux. Some people would call installing Linux on an SGI machine heresy and indeed Irix is an excellent OS and I do have another Indy and an Indigo2 running Irix but if a Linux box is what is required, it works.

There are a few caveats though, graphics are unaccelerated under Linux
and the vino (video in, no out) board and indycam are unsupported at the moment but as this machine is to be used as a headless server this doesn’t matter.

Installation can be done via the console or alternatively using a serial terminal or a computer running a terminal emulator such as minicom. In order to boot the installation a server running TFTP and DHCP is also required.

The terminal should be connected to the Indy’s first serial port and configured as 9600 8N1 with hardware flow control off and the serial cable is wired as follows:

8
PinMini DIN

(SGI)

25
Pin

DB25
Plug

Name
4
7
GND
5
2
TD
3
3
RD
1
8
CD
7
4
DTR
Step by step guide to installing Linux on an IndyThis procedure assumes a hostname of indy, an IP address of 192.168.0.22 and a mac address of 08:00:69:08:e2:0a. Change these to reflect your system.

  • First in order to get your Indys mac address you should start the system and press ESC to get to the PROM. Select option 5 and type:printenvThe current environment variables will be listed including the mac address.
  • Install tftp server on a computer on your network if you do not have it already
  • Edit /etc/xinetd.d/tftp so you have the following:service tftp
    {
    socket_type = dgram
    wait = yes
    user = root
    log_on_success += USERID
    log_on_failure += USERID
    server = /usr/sbin/in.tftpd
    server_args = -s /tftpboot
    disable = no
    }

  • Create a directory for the boot imagemkdir /tftpboot

     

  • Copy tftpboot.img to /tftpboot
  • Install a DHCP server if you do not have one already.  

  • Add the following to your /etc/dhcpd.confhost indy {
    hardware ethernet 08:00:69:08:e2:0a;
    fixed-address 192.168.0.22;
    option host-name “indy”;
    }


  • With Kernel 2.4 there’s a problem with a bug in the Indy’s PROM where tftp doesn’t work if the port is above 32768, which is default with 2.4 but not 2.2. This can be changed with:echo 2048 32767 > /proc/sys/net/ipv4/ip_local_port_range
  • Also with 2.4 ip_no_pmtu_disc needs to be set with: echo 1> /proc/sys/net/ipv4/ip_no_pmtu_disc
  • Back to the Indy, in the PROM clear the current stored ip address:unsetenv netaddr
  • If you are using a serial console set the console to always be Serial 1: setenv console d1
  • Now you can boot the debian-installer, debootstrap with:bootp()tftpboot.img
  • Partitioning
    SGI machines have two special partitions, Partition 9 is the “SGI volhdr” and is where the kernel goes, Partition 11 is the “SGI volume” and covers the whole disk.As the SGI volhdr or volume header is where the kernel will go so we need to make sure it is big enough, the standard Irix volume header is only 2Mb which is not enough. I made this partition
    74 sectors to err on the side of caution and allow room for the future.fdisk will automatically create partitions 9 and 11 for you but for some reason I had to create the swap partition first as it would not let me add another partition after the root even though there was room. I then deleted automatically generated partitions 9 & 11 and created my root partition. The volhdr partition was again recreated automatically but at too small a size so I deleted it and manually created it to fill up the first 74 sectors.

    My partition table ended up looking like this:

    Disk /dev/sda (SGI disk label): 4 heads, 108 sectors, 4792 cylinders
    Units = cylinders of 432 * 512 bytes
    
    ----- partitions -----
    Pt#    Device  Info     Start       End   Sectors  Id  System
     1: /dev/sda1  boot        75      4602   1956096  83  Linux native
     2: /dev/sda2  swap      4603      4791     81648  82  Linux swap
     9: /dev/sda3               0        74     32400   0  SGI volhdr
    11: /dev/sda4               0      4791   2070144   6  SGI volume
    ----- Bootinfo -----
    Bootfile: /unix
    ----- Directory Entries -----
     0: sgilabel   sector    4 size     512
     1: sash       sector    5 size  140800
     2: linux      sector  280 size 2031824
  • Once you have written the new partition table to disk you can install the base system over the network by following the Debian installer prompts.
  • Once the base system has been installed you will be given instructions to set the PROM so Linux will load automatically, these are:setenv OSLoader linux
    setenv SystemPartition scsi(0)disk(X)rdisk(0)partition(8) where X is the scsi id of the disk you installed to

    You should then set your root partition with:

    setenv OSLoadPartition /dev/sda1

    where /dev/sda1 is the disk you installed to

  • Once the system has rebooted you will be asked to a few questions and the installation will complete.
  • That’s it, have fun!
Last modified: 21 July 2012