Install NetBSD 5.1 sgimips sur Indy R4000

Il y a quelques mois déjà, un généreux collègue m’a refilé un tas de machines bizarres à des fins ludiques comme celle de réussir à installer un OS récent dessus. Dans mon inventaire des machines exotiques j’ai donc:

Ce billet concerne l’installation de NetBSD 5.1 (la dernière), sur une SGI Indy. Coté exotisme on est comblé :)

Indy

>> hinv
System: IP22
Processor: 100 Mhz R4000, with FPU
Primary I-cache size: 8 Kbytes
Primary D-cache size: 8 Kbytes
Secondary cache size: 1024 Kbytes
Memory size: 64 Mbytes
Graphics: Indy 8-bit
SCSI Disk: scsi(0)disk(1)
SCSI Disk: scsi(0)disk(2)
Audio: Iris Audio Processor: version A2 revision 4.1.0

Préparation

Pour commencer, impossible d’y brancher un écran à moins d’avoir un connecteur vidéo DB13W3, la machine est pourvue de deux ports série mini din 8 et elle démarre dessus quand il n’y a pas de clavier branché. Très bien, mais si comme moi on a pas de cable Mini DIN 8 vers série (9 ou 25 broches) alors il faut sortir les bobines de fil et s’en faire un, le grand Internet fourmille de doc à ce sujet, moi j’ai trouvé ce schéma très parlant (s/mac/indy):

Mini din 8 - DB9

On se connecte donc et on tombe sur le bios (qui n’a rien à envier à nos bios x86 de 2011), on en profite pour récupérer l’adresse ethernet de la machine:

System Maintenance Menu
1) Start System
2) Install System Software
3) Run Diagnostics
4) Recover System
5) Enter Command Monitor
Option? 5
>>> printenv eaddr
eaddr=08:00:69:06:f4:9b

Let’s go

Je suppose que vous savez configurer un serveur tftp/dhcp/nfs. Moi j’ai fait ça sur une machine Debian sauf le serveur dhcp qui est mon routeur FreeBSD:

sudo apt-get install tftpd-hpa bsdtar nfs-kernel-server
mkdir ~/indy
wget ftp://ftp.fr.netbsd.org/pub/NetBSD/NetBSD-5.1/sgimips/installation/netboot/diskimage.tgz
wget ftp://ftp.fr.netbsd.org/pub/NetBSD/NetBSD-5.1/sgimips/binary/sets/kern-GENERIC32_IP2x.tgz
bsdtar xvzf kern-GENERIC32_IP2x.tgz
(sudo mkdir root; cd root; sudo bsdtar xvzpf ../diskimage.tgz)
#/etc/default/tftpd-hpa
TFTP_DIRECTORY = "/home/phil/indy"
#/etc/exports (gruiiik gruiiik)
/home/phil/indy/root/ 192.168.31.0/24(rw,no_subtree_check,all_squash,anonuid=0,anongid=0)
sudo exportfs -r
#dhcpd.conf
host indy {
hardware ethernet 08:00:69:06:f4:9b;
fixed-address 192.168.31.8;
option tftp-server-name "192.168.31.3"; # le serveur tftp (debian)
next-server 192.168.31.3;               # le serveur nfs (debian)
filename "netbsd";                      # le nom du kernel à loader en tftp
option root-path "/home/phil/indy/root";# path racine nfs
}

On retourne configurer notre bios de l’indy:

>> setenv SystemPartition bootp():
>> setenv netaddr 192.168.31.8
>> boot

Mince ça ne marche pas, on fouille partout sur internet pour trouver des infos, puis on finit par lancer un tcpdump pour voir que c’est au niveau tftp que ça coince. Ensuite on lit la doc d’install NetBSD et on y trouve ceci:

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.  For example:
# sysctl -w net.inet.ip.anonportmin=16384
# sysctl -w net.inet.ip.anonportmax=32767

Pour faire la même chose avec linux:

echo "16384 32767" | sudo tee /proc/sys/net/ipv4/ip_local_port_range

Installation

L’installation de NetBSD se passe sans problème. Sauf à la fin où il faut se mettre dans un shell pour taper ces quelques commandes, sans quoi on ne pourra pas démarrer sur le disque

cd /usr/mdec
./sgivol -w boot /usr/mdec/ip2xboot sd0
# => yes
reboot

On reboot sur le disque

Tout est dans la doc d’install, et ça marche(tm). Moi par exemple j’ai installé NetBSD sur le premier disque (sd0):

>> setenv systempartition scsi(0)disk(1)rdisk(0)partition(8)
>> setenv osloadpartition scsi(0)disk(1)rdisk(0)partition(8)
>> setenv osloadfilename netbsd
>> setenv osloadoptions auto
>> setenv osloader boot

Pour les curieux, voyez le dmesg de la machine.

À vous de compiler tout et n’importe quoi, juste pour le plaisir de dire “Hey mec, c’est pas portable ton code là !” :-)