SGI/IRIX

From Smithnet Wiki
Revision as of 04:53, 8 May 2024 by NickPGSmith (talk | contribs) (5 revisions imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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:

Common prerequisites for other packages:

Optional, but recommended:

See here for Aug 2006 Freeware

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)
  • 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:

Optionally:

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:


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