Florian Boor

Making tiny things useful...

Installing Linux on an SGI Visual Workstation

This text is really old, but might be still useful. Initially published at Milton Adamou's SGI 320 website at http://www.btinternet.com/~sgi320/ but this website has disappeared.


The following tutorial outlines a technique for installing Linux on a Silicon Graphics 320/540 Visual Workstation. A standard install procedure for common Linux distributions will not work with these workstations because unlike traditional BIOS reliant PCs, the VWS uses ARC firmware which initiates a bootloader executable from a small FAT partition.

Support for VWS dates all the way back to 2.5.63. Even though this document uses Andrey Panin's heavily adapted port, most of the procedures described here will work with older kernels. The old tutorial for installing Linux on VWS using floppy disks will not work with new kernels because the latest kernels will not fit on a floppy.

What works

Linux support is not perfect for the VWS, the main problem being the lack of information from SGI for their proprietary architecture. This is necessary for full Linux support. Currently most of the hardware has basic functionality and existing development kernels are quite stable. The following parts work:

  • Base hardware (CPU including SMP, memory, PCI)
  • Graphics subsystem (Cobalt) including digital output, but not accelerated.
  • Serial and parallel ports
  • IDE controller
  • Qlogic 1080 SCSI controller
  • USB Keyboard/Mouse - additional units work intermittently
  • Audio interfaces
  • Ethernet

What does not work

  • Video I/O
  • IEEE1394 controller
  • Accelerated X

If the right kernel is used without interfering with some of the more proprietary hardware, a stable, fully multiprocessing workstation can be set up. This comes complete with an excellent sound system as well as the optional SGI 1600SW flat panel display.


Apart from the VWS you will also need a standard PC for basic Linux installation, including any disk interfaces used to control the drive. In this example we use a SCSI controller which was an option on some of the workstations. The following files will need to be created/obtained before the installation:

Configuration file for XFree86 Window System v4.x
Filename Link Notes
Kernel binary http://www.home.unix-ag.org/boor/files/vmlinux-vws.gz  
Framebuffer config http://www.home.unix-ag.org/boor/files/fb_modes Configuration file for Linux framebuffer
XFree config http://www.home.unix-ag.org/boor/files/XF86Config-4
Bootloader http://www.home.unix-ag.org/boor/files/arclx2.exe.gz Suitable for 2.5.x/2.6.0 testX
* ARC bootloader http://prdownloads.sf.net/linux-visws/arcloader-2003.tar.gz  
* Kernel config http://www.home.unix-ag.org/boor/files/config.gz  
* Kernel patch http://www.home.unix-ag.org/boor/files/sgivwfb-video-fpdetect.diff.gz Detects 1600SW and other framebuffer driver

* Optional. For advanced users only


1) The first step is to create the partition layout required by the workstation's firmware. On bootup the SGI320 expects a small FAT partition (minimum 20MB) to be the second partition on the disk. This is used to store the bootloader and kernel of all installed operating systems. The first partition and any other partitions can contain the OS.

An example partition layout could look like this:

Partition Size Type Mountpoint
sda1 500MB 82 (Linux Swap) swap
sda2 24MB 6 (FAT 16) /boot
sda3 6GB 83 (Linux) /

Important: To avoid confusion make sure your partitions are physically ordered like logical device numbers (sda1 is first partition, sda2 the second, etc)

2) Install the drive for your VWS into the PC and install your preferred Linux distribution. To mount the partition in this example you would use the following command:

mount/dev/sda2 /boot

It's mountpoint is not critical - we use /boot in this example.

Note: If this distribution installs files to /boot you may run into trouble if you try to reboot while the drive is in the PC. Additionally you should verify that your distribution comes with latest tools (e.g. modutils) for kernel 2.6.

3) Now put the bootloader and kernel binary on the system partition. We assume these are unpacked and located in /tmp.

cp /tmp/vmlinux-vws /boot/vml-vws
cp /tmp/arclx2.exe /boot

Note: Both files need to be unpacked, we don't use a compressed kernel like when booting with LILO or GRUB.

3) Copy your Xfree config file, usually located in /etc/X11/.

cp /tmp/XF86Config-4 /etc/X11/

This file is intended to be used with a 1600SW flat panel display. If you intend to use a CRT screen you will need to change the resolution in all "Modes" sections. The supported resolutions can be found on the Specifications page.

5) Finally the framebuffer config file. This may or may not be needed.

cp /tmp/fb_modes /etc

The example XF86Config is very basic. If you wish to create your own you will need the following:

  • Set the right keyboard type: pc105
  • Mouse device is:
  • Graphics device driver is fbdev, VideoRam 8192
  • I "Screen" section set "DefaultColorDepth 15"
  • To use a SGI 1600SW display set "Modes" to "1600x1024" in "Display" section.

6) After this stage is complete you are ready to install the drive into the VWS. After making all connections, power on the workstation and hit <ESC> to enter the PROM setup menu.

7) Select "Startup Settings" and add a new section. Choose a meaningful name for the section such as "Linux Debian 2.6.0-test2". Then add the name of the OSLoader: arclx2.exe (or usually arclx.exe if you compiled it yourself).

8) Then you must set the OSLoadFilename. This needs to point the bootloader towards the right partition to load the file from. In our example we have this file on the first SCSI disk (ID 0) on the second partition:


Some PROM versions prefer to have scsi(2) instead of multi(2). In the case of an IDE disk (with hda2 as the system partition) you write:


8) The selection of OSLoadPartition needs to point to the system partition that contains your bootloader (arclx2.exe). The naming here is simple: "SCSI 2 Disk 0 Partition 2" would be our system partition sda2 and "IDE 0 Disk 0 Partition 2" hda2.

Important: The numeration is the physical numbering of partitions on disk (starting with 1 for the first partition), not the logical names Linux uses. To avoid confusion it is a good idea to make sure the partitions are physically ordered like their logical numbers (i.e. sda1 is the first partition on disk, sda2 the next and so on)

9) The "System Partition" parameter is not used by arclx, so you may leave this blank.

10) OSLoadOptions is passed to Linux kernel like the "append" line in lilo.conf. You'll need to name your root partition here at least. In this example:


If your memory size is not correctly recognized you may pass the correct size to the kernel by typing in the following:


If you intend to use Linux frequently on your VWS, make this boot section your default.

11) Now you are ready to boot Linux for the first time. You should first see a blue box on bootup followed by a framebuffer console with booting Linux kernel soon afterwards.

Notes and additional information

Sourceforge Website

Additional install process documentation for Linux on SGI VWS can be found here. The sourceforge site is not up to date, but there is a mailing list for news, questions and feedback. More information can be found here.

Knoppix for SGI VWS This should be easy to create. More information to follow.

Compiling your own kernel
Make sure you select "Remove kernel features" and disable "VGA text console". You do not need a compressed kernel image so use "make vmlinux" instead of "make [b]zImage" to compile a kernel.


A note from the author
My SGI320 is mainly used for software developed. It has the following specifications: 2 x 550MHz CPU, 512MB, SCSI+IDE HDD, QLA1080, Adaptec 2949UW pro. Many thanks to Andrey Panin for porting and maintaining Linux on VWS and Jesse Barnes for supplying important information and other help!

Contact | Sitemap | Last change: About me (2013-03-06, 19:25:15)