SGI/IRIX
Hardware
Octane:
- IP30, Single 400 MHz R12000 CPU
- 1 GB RAM (fully populated)
- Odyssey Graphics (V8)
- 173 GB Fujitsu Disk (SCSI ID 1)
- Monitor: Dell 2007FP using 13W3-VGA converter
- Vertical: 56 Hz - 76 Hz (except 1600 x 1200: 60 Hz only)
- Horizontal: 30 kHz - 81 kHz
- SGI can drive 1024 x 768 / 75 Hz
Can use last IRIX version (6.5.30, released 2006-08).
See here for information on DAT drives that can play audio.
Disk Partitions
- 0: root filesystem
- 1: swap
- ...
- 6: usr filesystem
- 7: entire usable portion, excluding volume header
- 8: volume header
- 9: non-SCSI bad block list
- 10: entire disk, including volume header
- ...
- 15: XFS log
From PROM:
- SystemPartition=xio(0)pci(15)scsi(0)disck(1)rdisk(0)partition(8)
Command Monitor ARCS (PROM)
Some commands (See full list here):
- help
- init
- hinv
- printenv
- setenv
- unsetenv
- passwd
- boot -f bootp()...
- or just bootp()...
Note:
- Set keyboard variable: keybd, eg "US" or "GB".
- Previous line: CTRL-P
- Disk specification: dksc(0,1,0)/file (for SCSI controller 0, unit 1, partition 0)
The "ping" command does not use ICMP echo, rather obsolete echo (7/udp), eg:
09:37:49.278482 IP 0.0.0.0.3152 > 10.0.0.1.echo: UDP, length 64 09:37:49.278674 IP 10.0.0.1.echo > 10.0.0.2.3152: UDP, length 64
The IP "0.0.0.0" is used if the netaddr PROM variable is not set.
Network installation
In this procedure, we will use a BOOTP server to tell the SGI's PROM where to find in the Installation tools via TFTP. The installation tool itself obtains the full installation via RSH. These services are provided by a docker instance; this was running on Fedora 35.
- Ensure no other BOOTP or DHCP servers are running on the network
- Services are highly insecure, so recommend running for short time on isolated network
- For this example:
- sgi : 10.0.0.2
- lin-docker : 10.0.0.1
To monitor traffic, this tcpdump command is useful:
tcpdump -i any -v -nn "portrange 67-69 or port 514 or port 7"
CD Images
See here for list of SGI CD numbers. EFS CD images can be converted with efs2tar or download the tar archives.
Create structure installation, eg:
mkdir /home/user/irix cd /home/user/irix
Download and extract tar archives to suitable subdirectories:
- 812-0818-030 IRIX 6.5.30 Installation Tools and Overlays (1 of 3) : inst
- 812-0819-030 IRIX 6.5.30 Overlays (2 of 3) : overlays2
- 812-0817-030 IRIX 6.5.30 Overlays : overlays3
- 812-0759-002 IRIX 6.5 Foundation 1 : found1
- 812-0760-002 IRIX 6.5 Foundation 2 : found2
Common prerequisites for other packages:
- 812-0766-003 IRIX 6.5 Development Libraries : dev_libs
- 812-0757-004 IRIX Development Foundation 1.3 : dev_found
Optional, but recommended:
- 812-0774-002 ONC3/NFS Version 3 for IRIX 6.2, 6.2, 6.4 and 6.5 : nfs
- 812-0877-030 IRIX 6.5 Applications August 2006 : apps
- 812-1180-030 IRIX 6.5 Complementary Applications August 2006 : capps
Freeware (Feb 2003):
- 812-0773-019 Freeware 1 : fware1
- autoconf
- apache2
- bash
- curl
- 812-0964-019 Freeware 2 : fware2
- gcc
- 812-1085-019 Freeware 3 : fware3
- make
- md5
- openssh
- postgresql
- 812-1137-019 Freeware 4 : fware4
- samba
- teTeX
- zfig
- zip
SGI
Esc to enter SGI Command Monitor (PROM) and note the MAC address:
printenv eaddr
The BOOTP server does not to respond unless an IP is set to match what it has for the client:
setenv netaddr 10.0.0.2
Docker Setup
This docker image provides the services:
- echo (7/udp)
- For response to PROM's "ping"; not used during installation
- bootps (67/udp)
- Privides BOOTP response, gives out an IP and points to TFTP sever
- tftp (69/udp)
- Allows the transfer of initial installer tools
- shell (514/tcp)
- Used by Inst to transfer the majority of data
Download this docker image and check:
docker pull nickpgsmith/irix-install docker images
Create a bootptab file in /home/user/irix:
sgi:ha=0800690b9e1f:sa=10.0.0.1:ds=10.0.0.1:rp=/data
where ha is the Ethernet address of the SGI, sa is the IP of the TFTP server, ds is the IP of the DNS server.
Start Docker image (as root):
docker run --name irix --network host --add-host sgi:10.0.0.2 --volume /home/user/irix:/data:ro,Z -it nickpgsmith/irix-install
Ensure firewall is not blocking:
firewall-cmd --add-port="7/udp" firewall-cmd --add-port="67/udp" firewall-cmd --add-port="69/udp" firewall-cmd --add-port="514/tcp"
or:
systemctl stop firewalld
Can boot standalone shell with any of:
boot -f bootp()lin-docker:/inst/dist/sa(sash64) boot -f bootp()lin-docker:inst/dist/sa(sash64) bootp():/inst/dist/sa(sash64) bootp():inst/dist/sa(sash64)
NOTE: It seems like replacing the hostname ("lin-docker") with the IP does not work.
Disk Labelling
The disk needs to have an SGI label and partition structure. Invoke disk partitioner with either:
boot -f bootp():inst/stand/fx.64 --x bootp():inst/stand/fx.64 -x
Accept defaults for disk: dksc(0,1,0)
fx: "device-name" = (dksc) fx: ctlr# = (0) fx: drive# = (1) ...opening dksc(0,1,0)
To show current partitions:
- /label/show/partitions
Partition root drive (for OS installation) with defaults:
- /label/create/all
By default, 128 MB of swap is allocated as partition 1. To change, use:
- /repartition/resize
A non-root disk can be partitioned:
- /repartition/optiondrive
Erase disk and check surface for bad blocks (slow):
- /exercise/sequential
- modifier = “wr-c”, enter start and number of blocks
Exit:
- /exit
See also here
Installation
(Graphical):
- Select "Install System Software"
- Select "Remote Directory"
- For "remote host" enter the hostname of the install server (lin-docker)
- For "remote directory" enter the sub-directory from the /home/user/irix base where the stand-alone shell (sa) is located (inst/dist)
This is equivalent to the command:
xio(0)pci(15)multi(0)network(0)bootp()lin-docker:inst/dist/sa(sash64)
(From PROM Command Prompt):
bootp():inst/dist/miniroot/unix.IP30
Installer will present:
- If there is a newly partitioned disk, a report of no realroot will be seen:
- Confirm create new file system on /dev/dsk/realroot
- Choose 4096 bytes blocksize for disks ~> 4 GB
- Enter hostname, IP, Netmask
- Inst 4.1 Main Menu (Inst> prompt)
- For nonclean disks: 13/11/y/yes
- Change hostname and IP: 13/12 and 13/13
NOTE: >Inst uses rsh (not TFTP) so subsequent paths are relative to / not /data
- Open Source: 2
- Choose location (/data is the mount point within docker)
- lin-docker:/data/inst/dist
- Confirm network address
- Choose feature stream (2)
- lin-docker:/data/inst/dist
- Continue to add additional disks from RSH root:
- lin-docker:/data/overlays2/dist
- lin-docker:/data/overlays3/dist
- lin-docker:/data/found1/dist
- lin-docker:/data/found2/dist
- lin-docker:/data/nfs/dist
- lin-docker:/data/apps/dist
- lin-docker:/data/capps/dist
- lin-docker:/data/apps/dev_libs
- lin-docker:/data/capps/dev_found
- Return to >Inst (11)
keep * install standard install eoe.sw.ipv6 install eoe.man.ipv6 install eoe.man.ipv6_rn
Check for conflicts; will report: java2_plugin.sw.mozilla_freeware and inventor_dev.sq.base
(because Development Foundation is not installed here) and remove: conflicts conflicts 1a 2a
Start installation:
go
After transfer over the network, Requickstart ELF files:
quit
and confirm restart into the new OS installation
EZsetup Post-installation
Login with EZsetup account Step 1:
- Improve Security: disable or set passwords for accounts: root, lp, nuucp, EZsetup, demos, OutOfBox, guest
- Enable/disable Java/JavaScript
- Turn off NIS
- Use shadow password file
- Require passwords
- Disable Visual Login
- Disable privilege users (leaving only root)
- Protect new users' files
- Disable remote X
- Disable IP forwarding
- Disable OOTB WebServer
Step 2:
- Setup networking (DHCP/static)
Step 3:
- Add new user(s) (home directory in /usr/people)
Step 4:
- Web Config
- Desktop setup
License Server
Install Flexlm from Overlays 3 disk:
- license_eoe.sw.flexlm_server
- license_eoe.sw.flexlm_utils
- license_eoe.sw.license_eoe
- license_eoe.man.flexlm_server
Edit /var/flexlm/license.dat (see here for format)
SERVER robin ANY FEATURE cc sgifd 7.000 1-jan-0 0 ACE61A24A73E99462ECC HOSTID=ANY vendor_info="C <=128 CPU" ISSUER="Hax Force, Inc." FEATURE cpp sgifd 7.000 1-jan-0 0 8CE65AB48DDCD394E6E1 HOSTID=ANY vendor_info="C++ <=128 CPU" ISSUER="Hax Force, Inc." FEATURE f77 sgifd 7.000 1-jan-0 0 ACC63A346C444B7C99A7 HOSTID=ANY vendor_info="F77 <=128 CPU" ISSUER="Hax Force, Inc." ck=0 FEATURE f90 sgifd 7.000 1-jan-0 0 4C66BA143C7230ED9230 HOSTID=ANY vendor_info="F90 <=128 CPU" ISSUER="Hax Force, Inc." ck=42 FEATURE auto_pp sgifd 7.000 1-jan-0 0 8C862A14661D81BA12EB HOSTID=ANY vendor_info="APO <=128 CPU" ISSUER="Hax Force, Inc." FEATURE WorkShop sgifd 2.000 1-jan-0 0 6C16DAD49AC3AF2388D3 HOSTID=ANY vendor_info="PRODEV WORKSHOP" ISSUER="Hax Force, Inc." ck=73
chkconfig flexlm start
Further Post-installation
Static IP address:
- hostname in: /etc/sys_id
- add IP/hostname in: /etc/hosts
- /etc/resolv.conf
- /etc/nsswitch.conf
chkconfig autoconfig_ipaddress off chkconfig routed off chkconfig esp off; rm -rf /0esp
Default route (or static routes in general) in: /etc/config/static-route.options
$ROUTE $QUIET add net default 192.168.1.1
Turn on IPv6:
systune ip6_enable 1
(need to install eoe.sw.ipv6 / eoe.man.ipv6 / eoe.man.ipv6_rn)
Improve TCP sequence number obscurity:
systune tcpiss_md5 1
IP Aliases (multiple IPs): /etc/config/ipaliases.options
ef0 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255 chkconfig ipaliases on
Time:
- Add server to /etc/ntp.conf
chkconfig ntp on echo "TZ=Europe/London" >> /etc/TIMEZONE
- Turn off legacy services:
chkconfig timed off chkconfig timeslave off
- Move /usr/people to /home
- Change UID/GID to match Linux (1000/1000)
XServer configuration:
- /var/X11/xdm/Xservers
Syslog Messages:
- /var/adm/SYSLOG
CDE:
chkconfig xdm off chkconfig dtlogin on
More Software
Check software installed:
versions
Graphical tool:
swmgr
Command line tool:
inst -f somepath/dist
>Inst install standard >Inst remove > ... >Inst conflicts 1a 1b
Install the default subsystems:
>inst go
Install everything:
>inst all
Install bash (/usr/gnu/bin/bash) from Foundation 2 disk:
- gnu.sw.bash
- gnu.man.bash
- gnu.base.gnu_base
- gnu.sw.lib_readline
install SSH Server from Foundation 3 disk:
install sysadm_xvm install sysadm_base install sysadm_cluster.sw.client install eoe.sw.xvm install sysadm_xvm.sw.client install eoe.sw.xfsrt install eoe.books install eoe.sw.xlv install eoe.sw.xlvplex install license_eoe install license_dev install eoe.sw.uucpeoe.sw.ipv6 install eoe.sw.quotas install eoe.sw.ipv6 install eoe.sw.imagetools install eoe.sw.netman install eoe.sw.pam install eoe.sw.pam_dev install eoe.sw.terminfo
Development and Compilers
The prerequisites should have been installed:
- Foundation 1
- Foundation 2
- Overlays 1
- Overlays 2
- Overlays 3
- Development Libraries
- Development Foundation
- License entries required in license.dat, but flexlm does not need to run.
Plus one or all of the compilers:
- 812-0707-010 MIPSpro C Compiler 7.4 : mipspro_c
- c_fe.man.relnotes (C Front-end Release Notes)
- c_fe.sw.c (C Front-end Compiler)
- 812-0400-010 MIPSpro C++ Compiler 7.4 : mipspro_cpp
- c++_fe.man.relnotes (C++ Front-end Release Notes)
- c++_fe.sw.c++ (C++ Front-end Compiler)
- 812-0403-010 MIPSpro Fortran 77 Compiler 7.4 : mipspro_f77
- ftn77_fe.man.ftn (Fortran 77 Front-end Compiler Man Pages)
- ftn77_fe.man.relnotes (Fortran 77 Front-end Release Notes)
- ftn77_fe.sw.ftn77 (Fortran 77 Front-end Compiler)
- 812-0402-010 MIPSpro Fortran 90 Compiler 7.4
- 812-0706-002 : MIPSpro Auto Parallelizing Option 7.4 : mipspro_autop
- Release notes only; to use build-in option -apo requires a license
Latest patch overlay:
- 812-0980-007 MIPSpro 7.4.4m Maintenance Release : mipspro_7.4.4)
- 812-0925-001 MIPSpro All-Compiler (C/C++/F77/F90 7.3) : mipspro_all
Optionally:
- 812-0768-006 ProDev WorkShop 2.9.2 prodev (Can't find source for 812-0768-009 V2.9.5)
- 812-0653-002 SCSL Scientific Library 1.2 : scsl (Can't find source for 812-0653-004 V1.4
- Included in overlay CDs?
- 812-0924-002 Compiler Execution Environment 7.4 : comp_exe
NFS
NFS Server: define exports in /etc/exports, eg:
/home -access=bonnie:clyde /data -ro,access=foo,rw=bar,root=baz /spare @192.168.1.0/24
NFS Client: By default, /etc/auto_master has a /hosts map
SGI/IRIX Documentation
See here for a large library, specifically:
- 007-0850-170 ONC3/NFS Administrator’s Guide
- 007-1342-180 Desktop User’s Guide
- 007-1366-190 Personal System Administration Guide
- 007-2825-013 IRIX Admin: Disks and Filesystems
- 007-2859-021 IRIX Admin: System Configuration and Operation
- 007-2860-012 IRIX Admin: Networking and Mail
- 007-2861-005 IRIX Admin: Peripheral Devices
- 007-2862-008 IRIX Admin: Backup, Security, and Accounting
- 007-3435-004 OCTANE Workstation Owner’s Guide
- 007-0704-140 C++ Programmer's Guide
- 007-0704-150 MIPSpro C++ Programmer's Guide
- 007-3687-010 Message Passing Toolkit: MPI Programmer’s Manual
Sys Admin Notes
Set keyboard layout:
ipanel
3 Button mouse
systune pc_mouse 2
- 0 : Default 3-button mode
- 1 : 3-button Wheel Mouse (type 3), Wheel scrolling generates button events 4 & 5
- 2 : 5-button Wheel Mouse (type 4), Wheel & buttons 4 & 5 generate button events 4 & 5
Hardware info:
hinv -t memory sysconf
Packages:
showprods -M -1 versions -b patch\*
Network:
netstat -ian netstat -an -f inet4 netstat -anW -f inet6
Add swap:
mkfile -v 4096m /usr/swap swap -a /usr/swap
Install local file:
inst -r /usr -f neko_zlib_1211.tardist