Skip to content

Linux-RISC/IRIX-diskless-workstation

Repository files navigation

Buy Me A Coffee

Last update: 2024/05/22

IRIX diskless workstation using Reanimator


The purpose of this guide is to show how to boot an IRIX diskless workstation using Reanimator https://github.com/Linux-RISC/Reanimator

Notes:
- For a classic diskless workstation suppport according to https://irix7.com/techpubs/007-0855-080.pdf and with limited functionality, please visit classic-IRIX-diskless-workstation.
- This a unofficial guide, it ignores https://irix7.com/techpubs/007-0855-080.pdf but picks up some ideas from it.
- Sample videos: https://www.youtube.com/watch?v=S-wQ2EL3DRI&list=PL7fOFTpu7rt2beS_RgPIGp53fYubGyLYC
Tested systems:
File IRIX version sgi model does it work?
IWD_Indy_5.3.tgz 5.3 Indy NO. PANIC: KERNEL FAULT
IWD_6.2.tgz 6.2 Indy NO. Frozen
IWD_6.5.0.tgz 6.5.0 Indy NO. Frozen
IWD_6.5.0.tgz 6.5.0 Octane2 NO. "Can't boot 32 bit ELF"
IWD_6.5.22.tgz 6.5.22 Indy Yes
IDW_Octane2_6.5.30.tgz 6.5.30 Octane2 Yes

Requirements

  • 1. IRIX/Linux administration and network administration skills.
  • 2. A sgi computer with a functional IRIX installation on the primary hard disk. I will use an Octane2.
  • 3. A secondary hard disk with a functional IRIX installation. This disk will work as "rescue disk" and must have enough free space to save the entire primary hard disk.
  • 4. Raspberry Pi+Reanimator providing bootp and NFS server services, NFS will serve the IRIX files. Reanimator on VirtualBox should work too. I will use a Raspberry Pi.
  • 5. An optional but recommended NAS to improve performance.

I have tested three configurations:
C1. RBPi/VirtualBox working as bootp server and NFS server. This is the easiest configuration to test a diskless workstation, if using RBPi keep in mind that the SD card will reduce its expected life time, due to the excess of write cycles.
C2. (RBPi only) To avoid the SD problem and increase the throughput, you can connect an external hard disk to an USB port on RBPi and use it as storage instead the SD card.
C3. RBPi/VirtualBox working as bootp server and using a separated NFS NAS as storage (NFS 4.x disabled). I have used as NAS (Network-attached storage https://en.wikipedia.org/wiki/Network-attached_storage) a think client with Debian GNU/Linux and NFS, you don't need to use a professional solution.

I assume that you are using a file system that is compatible with GNU/Linux file permissions, such as ext4.

You can use any of the three configurations, the procedure is the same, you only need to modify the directory paths.

According to my experience, copying the files with rsync over network is much slower, it's faster to backup an IRIX disk with tar and restore it on the destination machine.

Procedure

1. Boot from secondary hard disk

Example: secondary hard disk is SCSI ID 2.

Run in Command Monitor:
>>setenv SystemPartition dksc(0,2,8)
>>setenv OSLoadPartition dksc(0,2,0)
>>setenv OSLoader sash
>>setenv OSLoadFilename unix

Return to main menu and boot IRIX.

2. Mount primary disk

Assuptions:
- primary hard disk is SCSI ID 1.
- both disks are partitioned as rootdrive.

Run as root (/diskless must exist):
# mount /dev/dsk/dks0d1s0 /diskless

3. Copying and restoring diskless.tar on Reanimator

You can trasfer the file to the NAS using NFS, scp, Samba, ... some examples are provided.

Example using configuration C1 and scp to copy Octane2-->RBPi:
# tar cvf /diskless.tar /diskless
# scp /diskless.tar [email protected]:/home/irix/i

Restoring on Reanimator:

pi@rbpi:/home/irix/i $ sudo rm -r diskless
pi@rbpi:/home/irix/i $ sudo tar xvf diskless.tar
pi@rbpi:/home/irix/i $ sudo chmod 777 diskless

Example using configuration C2 and NFS to copy Octane2-->RBPi, the usb drive must be mounted:

# tar cvf /diskless.tar /diskless
# mount 192.168.9.100:/home/irix/i/sda1 /mnt
# cp /diskless.tar /mnt
# umount /mnt

Restoring on Reanimator:

pi@rbpi:/home/irix/i/sda1 $ sudo rm -r diskless
pi@rbpi:/home/irix/i/sda1 $ sudo tar xvf diskless.tar
pi@rbpi:/home/irix/i/sda1 $ sudo chmod 777 diskless

Example using configuration C3, creating the file diskless.tar on a NAS shared resource. This is the fastest method according to my experience:

# mount NAS_IP:/path /mnt
# tar cvf /mnt/diskless.tar /diskless
# umount /mnt

In my case, I used sgug's tar for compression, but Nekoware's tar or sgi Freeware's tar should work too:

# mount NAS_IP:/path /mnt
# /usr/sgug/bin/tar czvf /mnt/diskless.tar /diskless
# umount /mnt

Of course, you can use tar on the secondary hard disk and trasfer the file to the NAS:

# tar cvf /diskless.tar /diskless
# mount NAS_IP:/path /mnt
# cp /diskless.tar /mnt
# umount /mnt

Restore on the NAS using local tools, in case of a GNU/Linux box:

$ sudo rm -r diskless
$ sudo tar xvf diskless.tar
$ sudo chmod 777 diskless
$ sudo mv diskless/* .
$ sudo rmdir diskless

Note that the "diskless" share must be the root directory, after unpacking diskless.tgz you should move all the contents to the parent directory and delete the empty "diskless" directory.

4. Configuring Reanimator and diskless workstation

Reanimator provides preconfigured /etc/bootparams and /etc/exports. Edit them using Reanimator's menus according to your configuration.
This is an example for using Octane2 as diskless workstation:

C1 configuration
/etc/bootparams on Reanimator:
# C1. RBPi/VirtualBox(change IP to 192.168.9.101) working as bootp server and NFS server
IRIS2   root=192.168.9.100:/home/irix/i/diskless

/etc/exports on Reanimator:

/home/irix/i/diskless                   *(rw,no_root_squash,no_subtree_check)

Command Monitor configuration on diskless workstation:

>>setenv diskless 1
>>setenv netaddr 192.168.9.2
>>setenv OSLoader /unix
>>setenv SystemPartition bootp():diskless
>>setenv OSLoadPartition bootp():diskless

C2 configuration
/etc/bootparams on Reanimator:

# C2. (RBPi only) bootp+NFS+external hard disk connected to an USB port on RBPi
IRIS2   root=192.168.9.100:/home/irix/i/sda1/diskless

/etc/exports on Reanimator:

/home/irix/i/sda1/diskless                   *(rw,no_root_squash,no_subtree_check)

Command Monitor configuration on diskless workstation:

>>setenv diskless 1
>>setenv netaddr 192.168.9.2
>>setenv OSLoader /unix
>>setenv SystemPartition bootp():sda1/diskless
>>setenv OSLoadPartition bootp():sda1/diskless

C3 configuration
/etc/bootparams on Reanimator:

# C3. RBPi/VirtualBox working as bootp server and using a separated NFS NAS as storage
# This path must be a NFS share defined on the NAS configuration
IRIS2   root=NAS_IP:/path/diskless

/etc/exports on Reanimator:

/home/irix/i/diskless                   *(rw,no_root_squash,no_subtree_check)

Command Monitor configuration on diskless workstation:

>>setenv diskless 1
>>setenv netaddr 192.168.9.2
>>setenv OSLoader /unix
>>setenv SystemPartition bootp():diskless
>>setenv OSLoadPartition bootp():diskless

Don't forget to copy the unix file from "diskless" directory on the NAS to /home/irix/i/diskless on Reanimator. If you have several kernels, use a directory structure on "diskless" directory like:

  • 6.5.22/unix
  • 6.5.30/unix
  • ...
And modify the configuration on Command Monitor, depending on the kernel used:
>>setenv SystemPartition bootp():diskless/6.5.22
>>setenv OSLoadPartition bootp():diskless/6.5.22

If you are an experienced user, you can copy the kernels to /home/irix/i/diskless on Reanimator using different names (for example 6.5.22 and 6.5.30) and modify OSLoader variable:

>>setenv diskless 1
>>setenv netaddr 192.168.9.2
>>setenv OSLoader /6.5.22
>>setenv SystemPartition bootp():diskless
>>setenv OSLoadPartition bootp():diskless

The diskless workstation will boot without virtual memory, "Virtual Swap Space" can be added using Swap Manager.

To set default configuration, run in Command Monitor:
>>resetenv

5. Real examples

*** Configuration for only one diskless client ***
Reanimator
- "unix" file on /home/irix/i/diskless - /etc/bootparams:
IRIS2   root=192.168.9.13:/media/sdb1/NAS/diskless

NAS
/etc/exports: note that it is not necessary to share /media/sdb1/NAS/diskless directory via NFS, just share /media/sdb1/NAS

/media/sdb1/NAS     192.168.9.*(rw,no_root_squash,no_subtree_check)

IRIX / on /media/sdb1/NAS/diskless

Octane2

>>setenv diskless 1
>>setenv netaddr 192.168.9.2
>>setenv OSLoader /unix
>>setenv SystemPartition bootp():diskless
>>setenv OSLoadPartition bootp():diskless

*** Configuration for multiple diskless client - option 1 ***
Reanimator
- "unix" file on /home/irix/i/diskless/6.5.30 - /etc/bootparams:
IRIS2   root=192.168.9.13:/media/sdb1/NAS/diskless/6.5.30

NAS
/etc/exports: note that it is not necessary to share /media/sdb1/NAS/diskless/6.5.30 directory via NFS, just share /media/sdb1/NAS

/media/sdb1/NAS     192.168.9.*(rw,no_root_squash,no_subtree_check)

IRIX / on /media/sdb1/NAS/diskless/6.5.30

Octane2

>>setenv diskless 1
>>setenv netaddr 192.168.9.2
>>setenv OSLoader /unix
>>setenv SystemPartition bootp():diskless/6.5.30
>>setenv OSLoadPartition bootp():diskless/6.5.30


*** Configuration for multiple diskless client - option 2 ***
Reanimator
- "unix" file on /home/irix/i/diskless renamed as "6.5.30" - /etc/bootparams:
IRIS2   root=192.168.9.13:/media/sdb1/NAS/diskless/6.5.30

NAS
/etc/exports: note that it is not necessary to share /media/sdb1/NAS/diskless/6.5.30 directory via NFS, just share /media/sdb1/NAS

/media/sdb1/NAS     192.168.9.*(rw,no_root_squash,no_subtree_check)

IRIX / on /media/sdb1/NAS/diskless/6.5.30

Octane2

>>setenv diskless 1
>>setenv netaddr 192.168.9.2
>>setenv OSLoader /6.5.30
>>setenv SystemPartition bootp():diskless
>>setenv OSLoadPartition bootp():diskless

6. Possible use cases:

1. Virtual rescue disk:
  • in case of IRIX boot fail or disk failure, instead using a physical disk
  • Automated network backup
  • ...
2. Multiple IRIX versions on diskless directory to boot different IRIX versions for a specific machine/software, for example:
Content of directory "diskless" on NAS:
  • 6.5.22
  • 6.5.30
  • Octane2
  • Indy_5.3
  • Indy_5.3_LightWave3
  • ...
Select the IRIX version to boot modifying Command Monitor variables:
>>setenv diskless 1
>>setenv netaddr 192.168.9.2
>>setenv OSLoader /unix
>>setenv SystemPartition bootp():diskless/Indy_5.3_LightWave3
>>setenv OSLoadPartition bootp():diskless/Indy_5.3_LightWave3
  1. Test software on multiple machines without reinstalling
  2. Portable farm of sgi machines

7. Possible improvements:

- Online repository containing a collection of .tgz files with different versions, machines and software
- Use disk images (how, using dd?) to avoid thousands of files in a directory and mount those .img files on the NFS server
- Is there a way to copy the primary disk without using a secondary disk? Yes!, using a preconfigured IRIX to boot as diskless workstation, check https://mega.nz/folder/7jJGlSSS#d25XyA8RhKJyoU2uSrlasw/folder/buxA3IjA for files with prefix IDW_*
- Boot from network and use a local disk for swap, data or both
- Share IRIX directories between machines (using Unix soft links) with the same IRIX version to save disk space, the concept is the same than "shared trees" of sgi diskless workstation manual

8. Rebooting IRIX from disk 1:

To boot from disk 1, run in Command Monitor:
>>setenv SystemPartition dksc(0,1,8)
>>setenv OSLoadPartition dksc(0,1,0)
>>setenv OSLoader sash
>>setenv OSLoadFilename unix

About

Tutorial: how to boot an IRIX diskless workstation using Reanimator

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published