in BSD

NetBSD 3.1 on an SGI Indy

On the other end of the spectrum from my last post, I decided this evening to install NetBSD 3.1 on the SGI Indy that fellow BSD user Jeff Buan gave me a few months ago. This system would have cost an obscene amount of money back in the day (1993) but now, it’s probably worth about $10. These boxes are pretty close to as rock-bottom as you can get these days:

mainbus0 (root): SGI-IP22 [SGI, 690887b5], 1 processor
int0 at mainbus0 addr 0x1fbd9880: bus 66MHz, CPU 133MHz

Jeff had problems giving it away until I took it as a challenge 🙂

Speaking of challenges (pun intended), the last time I tried to install anything on an SGI server, the victim box was an SGI Challenge L — a 200kg fridge-sized monster that my friend Naveen had muscled from the Department of Astrophysics at U of T. It required a 220V power converter that he ended up buying from the House of 220, and a custom-soldered RS-422 serial cable to get on the console. I hoped the Indy would be easier to set up.

I booted the Indy once just to see what was on its hard disk; good ol’ IRIX 6.2, ready for zapping. Unfortunately, the external SCSI CD-ROM that I have wouldn’t power on, so I was forced to engage in the fun practice of netbooting the Indy. First things first: configure DHCPD and TFTPD to serve up the installation kernel, as follows:

  1. Save NetBSD-sgimips installation kernel netbsd-INSTALL32_IP2x.gz as /tftpboot/netbsd-sgimips, ungzipping it along the way. Fortunately my Indy is "new" enough that its PROM can actually read ELF kernels, so I didn’t have to get the ECOFF kernel.
  2. Configure DHCPD to hand out a static lease for the box with the option server-name="10.0.5.7"; (TFTP server) in its configuration.

After restarting both inetd (for tftpd) and dhcpd, it was time to break into the Indy’s PROM and tell it to boot over BOOTP. The Indy has the nicest graphical boot monitor I’ve ever seen, replete with point-and-click goodness to get to the PROM (Command Line, I think it’s called). Once at the PROM, I typed the following:

> setenv netaddr 10.0.5.150
> setenv SystemPartition bootp():

and then boot bootp():netbsd-sgimips to make it go.

It didn’t go, unfortunately. After poking about on the NetBSD website a bit more, I came across this tidbit:

Note that some older bootproms have an interesting bug in reading the kernel via TFTP. They handle the port number as a signed entity, and can thus not connect to ports >32767. You can work around this problem on the TFTP server (given that it is a NetBSD host) by using sysctl to set net.inet.ip.anonportmin and net.inet.ip.anonportmax to more suitable values.

Oh man… too funny. Insufficient bits strikes again! Given that my TFTP server is actually a FreeBSD box, I ended up having to adjust as follows:

# sysctl -a net.inet.ip.portrange.first=16384
# sysctl -a net.inet.ip.portrange.last=32767

There was only one weird hitch during the installation: sysinst demanded that I type "media options" to configure sq0. No matter what I typed (“UTP”, “10baseT”, “auto”) nothing seemed to work; I just kept getting ifconfig: SGIOCGIFMEDIA: Inappropriate ioctl for device. It turns out that "mandatory" parameter is actually the opposite; the answer is to just hit Enter (blank), because sq(5) doesn’t take any media options! I think I may just send a problem report about that issue.

And yes, in the spirit of my last journal entry, I am also authoring this one on the system in question. Go SGI! (I should note that CBC.ca once ran on an Indy, a Sun Sparcstation 2, and a Sun Enterprise E450. We might still have the Indy kicking around the storage room somewhere, in case I need spare parts…)