Wednesday, January 20, 2010

Failed attempt to load gentoo linux on O2 work station

Installing Linux on SGI
Silicon Graphics International (SGI) launched their O2 workstations in 1996 as a successor to the Indy workstations.More technical details of the workstation can be found at http://www.nekochan.net/wiki/index.php/SGI_O2The O2 on which Linux was installed had 256 MB SDRAM and used the R5000 Processor clocked at 300 Mhz. The HDD capacity was 4 GB.
First Attempt: Gentoo on O2 SGI
Gentoo is a Linux Distribution which is considered to be very customisable with its powerful porteage and emerge features.
First, I created a live CD for SGI O2 architecture. The CD image can be found at the Oregon State UNiversity Mirror http://gentoo.osuosl.org/experimental/mips/livecd/x-rc6/Also, On my hard disk at C:\OLD PROJECTS\Linux on SGI O2\livecdwhich is also backed up using my CD catalog software.
CREATING THE LIVE CD
The O2 PROM (something similar to BIOS in ordinary workstation) tries to look for a 'boot sector' on the Boot CD. Therefore, the CD should have a partition which stores the bootable info. Such CD's can't be created in windows based burning software which burns in ISO 9660 format. Therefore, it requries a Linux PC using the command line cdrecord given from terminal. I used RedHat 4 to burn this image on the CD.
RUNNING THE LIVE CD
After inserting the CD, reboot the machine.When the 'Stop for maintenance'button comes on screen, click that and enter into the PROM GUI. Click on boot from CD ROM and complete the remaining steps by clicking 'Next'. If the CD is burned properly, you should see the Tux logo with SGI logo superimposed on it.The CD uses the XFCE desktop and is fully functional. If you connect an ethernet cable (before booting),and if you have a DHCP server on your network,the machine should be able to get an IP address from the DHCP server and if you set the proxy, browse internet as well. Live Cd installs on the RAM called ramdisk.This live CD is pretty much for demo purposes only.
INSTALLING SYSTEM FROM LIVE CD-FAILURE
There is a detailed user manual for installing Gentoo on MIPS which can be foud at http://www.gentoo.org/doc/en/handbook/handbook-mips.xml.The approach recomended is to netboot the system using TFTP/DHCP server. Somehow, for starters, this method was found to be complicated (though, it really isn't) and instead I thought, we can skip some steps of netbooting, as we already have the system booted up and running.Therefore, I skipped the earlier chapters and bagan with chapter 4, "Partitioning of Disks". The explanation given to partition the disk and to create a filesystem, was bit too complicated in the the above documentation, primarily, because, the documentation is intended for many SGI machines, like O2, cobalt and Indy. Iam summarising the major steps:-
1. Create an SGI disk labelThe disk label exists in the 9th Partition of the Hard Disk.It stores information about the disk partitions.First, start an fdisk session.Since SCSI drive is present, the device name would be sda. For IDE devices, it is generally hda.
fdisk /dev/sdaCommand (m for help): xx gets you to the expert mode in fdisk.
Expert command (m for help): mCommand action b move beginning of data in a partition c change number of cylinders d print the raw data in the partition table e list extended partitions f fix partition order g create an IRIX (SGI) partition table h change number of heads m print this menu p print the partition table q quit without saving changes r return to main menu s change number of sectors/track v verify the partition table w write table to disk and exit
Expert command (m for help): g
Now, Note that If a disk already has SGI disk label, it will not create another disk label. In this case, you have to exit the fdisk and fill the entire disk with zero and start over again. dd if=/dev/zero of=/dev/sda bs=512 count=1. This will completely fill the disk with zero. try giving g at expert mode and SGI disk label should be created for you.
Building a new SGI disklabel. Changes will remain in memory only,until you decide to write them. After that, of course, the previouscontent will be irrecoverably lost.
Expert command (m for help): r
Command (m for help): p
Disk /dev/scsi/host0/bus0/target1/lun0/disc (SGI disk label): 141 heads, 62 sectors, 1016 cylindersUnits = cylinders of 8742 * 512 bytes
----- partitions -----Pt# Device Info Start End Sectors Id System 9: /dev/sda1 0 4 10240 0 SGI volhdr11: /dev/sda2 0 1015 35803136 6 SGI volume----- Bootinfo -----Bootfile: /unix----- Directory Entries -----
Notice that Partition 9 starts from Cylinder 0 and Ends at Cylinder 4 and is known as SGI volume header. Another Partition, #11, spans the entire disk and is called SGI volume.
Step#2: Modify the size of Partition #9 (SGI Volhdr)This step tries to modify the partition #9 to make it right size for the gentoo boot loader and multiple kernel images to fit in.Due to some odd fdisk behaviour, it is not possible to adjust the size of partition # 9 directly. Therefore, first we create Partition #1.
Command (m for help): nPartition number (1-16): 1First cylinder (5-1015, default 5): 51 Last cylinder (51-1015, default 8682): 985
(Notice how fdisk only allows Partition #1 to be re-created starting at a )(minimum of cylinder 5? Had you attempted to delete & re-create the SGI )(Volume Header this way, this is the same issue you would have encountered. )(In our example, we want / to be 3.89 GB, so we start it at cylinder 51 (the )(Volume Header needs to start at cylinder 0, remember?), and set its ending )(cylinder to 985 Now, we delete partition # 9. and recreate it. Notice that on re-creating #9, the cylinders now are in range 0-50.
Command (m for help): dPartition number (1-16): 9
(Delete Partition #9 (SGI Volume Header))
Command (m for help): nPartition number (1-16): 9First cylinder (0-50, default 0): 0 Last cylinder (0-50, default 50): 50
(Re-Create Partition #9, ending just before Partition #1)
Step #3: Create swap partition and change its type to 'Linux Swap'
Command (m for help): nPartition number (1-16): 2First cylinder (986-1015, default 986): Last Cylinder (986-1015, default 1015):
This creates the swap partition of about 123.78 MB. Now, to change its type Command (m for help): tPartition number (1-16): 2Hex code (type L to list codes): 82Changed system type of partition 2 to 82 (Linux swap)Command (m for help): p
Disk /dev/scsi/host0/bus0/target1/lun0/disc (SGI disk label): 141 heads, 62 sectors, 1016 cylindersUnits = cylinders of 8742 * 512 bytes
----- partitions -----Pt# Device Info Start End Sectors Id System 1: /dev/scsi/host0/bus0/target1/lun0/part1 boot 51 985 8602128 83 Linux native 2: /dev/scsi/host0/bus0/target1/lun0/part2 swap 986 1015 262260 82 Linux swap 9: /dev/scsi/host0/bus0/target1/lun0/part3 0 50 17484 0 SGI volhdr11: /dev/scsi/host0/bus0/target1/lun0/part4 0 1015 8881872 6 SGI volume----- Bootinfo -----Bootfile: /unix----- Directory Entries -----
Command (m for help): w
w command writes out the created partitions to the disk.
The partition table has been altered!
Calling ioctl() to re-read partition table.Syncing disks.
#Step # 3: Formatting the Partitions and mounting
The root partition is partitioned as ext3 and the swap partition as made as swap.
# mke2fs -j /dev/sda1# mkswap /dev/sda2# swapon /dev/sda2mount /dev/sda1 /mnt/gentoo
We will also have to mount the proc filesystem (a virtual interface with the kernel) on /proc. But first we will need to place our files on the partitions.
Step # 4: Installing the base system
(a) Set the date date MMDDhhmmYYYY syntax # date 032916212005
(b) Copying the Stage3 and Portage filesA stage3 tarball is available in the /stages folder of live cd that is built with gcc-4.1.1 and targetted for the MIPS-III ISA. A Portage snapshot dated October 2nd, 2006 is also available in the /snapshots folder of live cd. These two files were copied to the hard disk and untarred. Later on, there was a step in chapter 7 to install the sources. On giving the command:# emerge mips-sources "The error message returned was !!! ARCH is not set--. Are you missing the /etc/make.profile Symlink? Is the Symlink correct? Is your Portage tree complete?"
The next line in just after this command notes that for O2, a 64 bit kernel is required therefore, you should emerge kgcc64 to create cross-compiler for building 64-bit kernels.The following settings were used in make.conf
ARCH="mips" PROFILE_ARCH="mips64" CHOST="mips64-unknown-linux-gnu" CFLAGS="-O2 -Pipe -march=mips3 -mabi=n32"
# emerge kgcc64

ALERT! : This might have been the problem..wrong tarball for the ISA level. SGI O2 uses Nevada R 5000 CPU which is 'Big Endian' and whoose ISA level is 4 (mips4), whereas I have used the tarball present in live cd which is targetted at mips3 architecture. Therefore, the correct tarball needs to be downloaded from the gentoo mirrors (see chapter 5). Also, the same settings need to be reflected in make.conf. This might be the reason for installation to fail.
INSTALLATION OF DEBIAN LINUX ON O2

O2 work station Technical Details

General information
The Silicon Graphics O2, introduced in 1996, is the successor to the Indy workstation. It comes in two flavours: the R5000/RM5271/RM7000 and the R10000/R12000. The former has space for two harddrives and the latter only for one, due to the size of the CPU heatsink. It is possible to put a R10000/R12000 into some R5k O2's by removing the metal separator between the mainboard and the harddrives, however, on some earlier models the separator is part of the chassis and cannot be removed short of cutting it out with a hacksaw.
The O2 was re-introduced with slight modifications as the O2+ in August 2001; the case colours were changed, a DVDROM came as standard, the serial port controller was improved, and the baseline CPU was replaced with the R7000/350MHz, though a recall of some early versions of this CPU is thought to have led to the O2's end of presence in the product line, afterwhich it was not replaced (the Fuel, released in January 2002, was not a replacement for O2; Fuel was intended purely to be a single-CPU mid-range system).
System architecture
The O2 features a proprietary high-bandwidth Unified Memory Architecture (UMA) that connects the various system components. A PCI bus is bridged onto the UMA with one slot available. It has a designer case and an internal modular construction. It has space for two SCSI drives mounted on special sleds (1 in the later R10000/R12000 models) and an optional video capture / sound cassette mounted on the far left side. Further information on the design and construction of the O2 can be found in SGI service manuals on Techpubs.
The O2 comes in two distinct CPU flavours; the low-end MIPS 180-350 MHz R5000/R7000 based units and the higher-end 150-400 MHz R10000/R12000 based units. The 200 MHz R5000 CPUs with 1 MB L2-cache are generally noticeably faster than the 180 MHz R5000s with only 512 KB L2-cache. Also of note is that there is no 300 Mhz R5000 CPU, the O2 will incorrectly report the RM5200 CPU as an R5000.
O2: 32 bit or 64 bit
R5000 is a real 64bit
processor. The O2 under IRIX ran as a 32bit, however under Linux, we use a 64bit kernel, but there is a catch: The IP32 PROM can't boot true 64bit kernels (hereby referred to as n64. So, we use a hack that's found in gcc/binutils called the o64 ABI, which is defined as the default 32bit ABI (o32) "extended" to 64bits. This builds an object file that looks like a 32bit file to the "file" utility, but really contains 64bit code.
Memory subsystem
The motherboard has 8 proprietary 278-pin (139 per side) slots on the motherboard, accepting 4 paired sets of memory, referred to and sold as kits. The individual SDRAM DIMM modules come in 16 MB, 32 MB, 64 MB, and 128 MB sizes. The banks must be filled in order, and larger modules should be put in first. The O2 is expandable to 1 GB using 4 2x128 MB kits.
Original SGI DIMMs are either single-sided (SS) with memory chips on only one side of the module or double-sided (DS), and come color-coded to assist you in identifying what is installed. 3rd party DIMMs may or may not follow these conventions. Knowing the current memory configuration is important as DIMMs must be installed according to a number of specific rules.

· The DIMMs in slots 1 and 2 make up Bank A. DIMMs in slots 3 and 4 make up Bank B, and so on.
· A bank of two slots must have a DIMM in each slot or be empty (except for slots 1 and 2, Bank A, which must always be populated.)
· The two DIMMs in any bank must be of the same size and type.
· The largest size DIMMs must be in Bank A.
· DIMM banks must be filled sequentially, beginning with bank A.
· Equal or smaller size DIMMs must be in Bank B, and so on.
· Do not skip banks, or the memory will not be recognized.
To install high density (128 MB) DIMMs, PROM revision 4.4 or higher is required. With older PROM revisions maximum memory is 256 MB. For IRIX 6.3 there are patches to upgrade the PROM, for IRIX 6.5 PROM images come with the operating system and overlays CD sets.

Graphics subsystem
· The CRM chipset that SGI developed for the O2, shares OpenGL calculations between CPU and chip. Due to the unified memory architecture, framebuffer memory comes from main memory, and there is effectively an 'unlimited' amount of texture memory. Another useful feature is that any incoming video data from the Audio/Video option can be used directly as an OpenGL texture without having to perform a copy or move.
· ICE (Image Compression Engine -- a dedicated 64-bit R4000-based processor containing a 128-bit SIMD unit running at 66 MHz, which is used to accelerate various image and video operations)
· OpenGL 1.1 + ARB image extensions
O2 Video System
The O2 Video system simultaneously supports two input video streams to memory and one output video stream from memory which can be seperated into two outputs, one carrying pixel information, the other carrying alpha (key) information.
Using the O2 Video system, it is possible to capture live video into the computer's memory which can then be displayed in a graphics window on the screen or further processed by an application. It is also possible to generate video output from images in memory, which can be displayed on a standard video monitor, or recorded to a VTR. Using the VL programming library , a program can capture video in either the RGB or YCrCb color spaces, and either full or reduced size formats, and in a format usable for input to the compressor/decompressor, display on the graphics screen, or as an input to a graphics processing and/or texture operation.
SGI offered 2 video options for the O2/O2+: the AV1 interface and the AV2 interface.
· The AV1 interface supports Composite and SVideo (Y/C) (both analog), and Digital I/O via the Camera/Digital Video port. The analog I/O jacks are for use with standard analog video equipment, supporting both PAL and NTSC video formats. There are a variety of controls available that allow the user or programmer to set various parameters used for the decoding and encoding of the video signals. The digital input of the AV1 is for use with the O2 Digital System Camera, or can be connected to an optional digital video input and output adapter to interface to standard SMPTE259M serial digital video devices.
· The AV2 interface supports two ITU-601 (CCIR-601) serial digital video
INSTALLATION OF DEBIAN LINUX
The Debian MIPS team recommends net booting approach. A guide is also given in Martin Michmayr http://www.cyrius.com/debian/o2/. The instllation images and other required info was obtained from his site.
Netbooting the O2 using a DHCP/TFTP server:-
A laptop running Ubuntu Linux was configured as DHCP/TFTP server. The Boot image was downloaded from ftp://ftp.nl.debian.org/debian/dists/lenny/main/installer-mips/current/images/r5k-ip32/. This image was copied to /var/lib/tftpboot folder of the laptop and all necessary permissions were given.
After installation of TFTP service, using sudo apt-get install tftpd-hpa on the ubuntu laptop, the configuration file for tftp was edited and the path for the tftp boot image was corrected as /var/lib/tftpboot. The DHCP service was instaled using sudo apt-get install dhcp3-server
Checking if dhcp and tftp services are running:
Check for TFTP:
# netstat -al grep ^ UDP
Should return this line:
UDP 0 *; tftp *.*
If not, try this command:-
# /etc/init.d/inetd reload
Check for DHCP:
# ps -ax grep DHCP
should return some entry named dhcp along with the process id.
If the service is not running:-
# /etc/init.d/dhcpd3-server restart
Setting up the dhcp server:-
The settings of the dhcp server are controlled by dhcpd.conf in /etc folder. Include the following in dhcpd.conf :-

host o2 {
option tftp-server-name "192.168.2.104";
next-server 192.168.2.104;
filename "o2-boot.img";
hardware ethernet 08:00:69:0E:94:CF;
fixed-address 192.168.2.106;
nameserver 218.248.240.79;
}
Line # 1 is the ip address of the laptop, the same ip address is repeated in line # 2. Line#3 is the name of the boot image stored in /var/lib/tftpboot. Notice that the path is relative, therefore, full path is not necessary. The full path is picked up from the tftp config file. Line#4 is the MAC address of O2 which we are trying to boot. The MAC address can be got from hinv or ifconfig. On some O2s, it is also written on the base of the machine. Line # 5 is the IP address which we want to give to the O2. Since we were using a setup with broadband router and a broadband modem, the setup is shown below, we are using the 192.168.2 network for the dhcp server and the O2. Line # 6 is optional, it is the IP address of DNS server of the broadband ISP. It may be necessary in some situations when the O2 is not able to resolve the ftp address(s) to download the remaining files for complete installation.
Some /proc corrections
The netboot server replies on some higher ports, which the O2 PROM is not able to listen to, therefore, the port range has to be restricted on the tftp server to 32767:-
echo "2048 32767" > /proc/sys/net/ipv4/ip_local_port_range

Also, O2 PROM does not support MTU discovery, therefore, this line is to be added to the tftp server:-
echo "1" > /proc/sys/net/ipv4/ip_no_pmtu_disc
NETBOOTING PROCEDURE
After checking that tftp and dhcp services are up and running on the laptop, ping the DNS IP to check if internet is up and running. Now, boot the O2 and when the PROM screen comes up, click on 'Stop for Maintenance' button, and then click on command monitor button to arrive at > command prompt. give the folowing command:-
> setenv netaddr 192.168.2.106
>bootp()
If everything is correct, the O2 will download the boot image via tftp and after 2-3 seconds, you should be able to see the familiar tux logo with SGI written on it and the booting will start.



Issues encountered while netbooting (given in sequence as encountered):
(a) After giving bootp(), returns error, unable to find the boot file.
The /var/log/messages in the ubuntu laptop shows that O2 is trying to connect to the laptop and the laptop is responding to the request. However, no further details are evident. Finally, it was resolved to be permissions problem in the /var/lib/tftpboot folder. necesary read and write permissions were given.
(b) Next, it was giving TFTP error index 4. everything looked allright, the tftp and dhcp services were running in laptop, so, rebooted the o2 using the init command and then tried bootp():-
>init
>setenv netaddr 192.168.2.106
>bootp()

(c) If the ports are not restricted to 32767 and MTU discovery is not turned off on the tftp server, O2 does not boot on giving bootp(): command. It just returns an error: invalid argument.
Now, things started working smoothly.After booting, O2 was able to connect to the ftp sites to download and complete the rest of installation as described in below:-

The following guide is copied from the excellent work done by Jiann-Ming Su 's detailed work (http://js1.kicks-ass.org/~js1/debianO2.html).I have just reproduced his guide below:-
Choose a language. English only if you are using the serial console.
Choose a language:

Albanian #
Arabic #
Basque #
Bosnian #
Bulgarian #
Catalan #
Chinese (Simplified) #
Chinese (Traditional) #
Croatian #
Czech #
Danish #
Dutch #
English #



Choose a country

Based on your language, you are probably located in one of these
countries or regions.

Choose a country, territory or area:

Denmark #
Hong Kong #
India #
Ireland #
New Zealand #
Philippines #
Singapore #
South Africa #
United Kingdom #
United States #



In graphical install, it may complain about the keyboard layout. Ignore the error and skip to Detect network hardware and select eth0.
Configure the network... dhcp should work automagically based on the previous steps.
Hostname

Please enter the hostname for this system.

The hostname is a single word that identifies your system to the
network. If you don't know what your hostname should be, consult your
network administrator. If you are setting up your own home network,
you can make something up here.

Hostname:

o2___________________________________________________________________



Domain name

The domain name is the part of your Internet address to the right of
your host name. It is often something that ends in .com, .net, .edu,
or .org. If you are setting up a home network, you can make
something up, but make sure you use the same domain name on all your
computers.

Domain name:

somedomain.bogus_____________________________________________________



Select a convenient mirror.
Select United States

The goal is to find a mirror of the Debian archive that is close to
you on the network -- be aware that nearby countries, or even your
own, may not be the best choice.

Debian archive mirror country:

Sweden #
Singapore #
Slovenia #
Slovakia #
Thailand #
Turkey #
Taiwan #
Ukraine #
United States #



Select ftp.us.debian.org

Please select a Debian archive mirror. You should use a mirror in
your country or region if you do not know which mirror has the best
Internet connection to you.

Usually, ftp..debian.org is a good choice.

Debian archive mirror:

debian.oregonstate.edu #
ftp.us.debian.org #
archive.progeny.com #
ftp.debian.org #
mirrors.kernel.org #
wuarchive.wustl.edu #
mirrors.rcn.net #



No Proxy

If you need to use a HTTP proxy to access the outside world, enter
the proxy information here. Otherwise, leave this blank.

The proxy information should be given in the standard form of
"http://[[user][:pass]@]host[:port]/"

HTTP proxy information (blank for none):

___________________________________________________________________



All relevant modules are compiled in. Select Yes to continue without loading modules.

No kernel modules were found. This probably is due to a mismatch
between the kernel used by this version of the installer and the
kernel version available in the archive.

If you're installing from a mirror, you can work around this problem
by choosing to install a different version of Debian. The install
will probably fail to work if you continue without kernel modules.

Continue the install without loading kernel modules?



Partition the disk. This step is very important. The GUI does not partition the disks properly, so the disk(s) need to be partitioned manually.
Select No to continue. Note: You will only need to do this if you do not see this screen.

This partitioner doesn't have information about the default type of
+ the partition tables on your architecture. Please send an e-mail
message to debian-boot@lists.debian.org with information.

Please note that if the type of the partition table is unsupported by
libparted, then this partitioner will not work properly.

+ Continue with partitioning?



Select Partition a hard drive

This is the main menu for the Debian installer.

Choose the next step in the install process:

Choose language #
Choose country or region #
Select a keyboard layout #
Detect network hardware #
Configure the network #
Choose a mirror of the Debian archive #
Download installer components #
Detect hardware #
Partition disks #
Partition a hard drive #
Configure and mount partitions #

Select the drive you want to partition.

Please choose one of the listed disks, to create partitions on it.

Disk to partition:

/dev/scsi/host0/bus0/target1/lun0/disc (SGI SEAGATE ST34572W/ 434
Finish

This should get you to a fdisk prompt. Type p to print the drive stats. Pay close attention to the cylinder size.
Command (m for help): p
Disk /dev/scsi/host0/bus0/target1/lun0/disc (SGI disk label): 141 heads, 62 sectors, 1016 cylinders
Units = cylinders of 8742 * 512 bytes
----- partitions -----
Pt# Device Info Start End Sectors Id System
1: /dev/scsi/host0/bus0/target1/lun0/part1 boot 18 985 8462256 83 Linux native
2: /dev/scsi/host0/bus0/target1/lun0/part2 swap 986 1015 262260 82 Linux swap
9: /dev/scsi/host0/bus0/target1/lun0/part3 0 17 157356 0 SGI volhdr
11: /dev/scsi/host0/bus0/target1/lun0/part4 0 1015 8881872 6 SGI volume
----- Bootinfo -----
Bootfile: /unix
----- Directory Entries -----
The example above shows a drive that's properly partitioned. We'll pretend it's not and walk through how to properly partition the disk.
Notice the Units = ... line. What this line indicates is (8742*512) bytes/cylinder or roughly 4.48MB/cylinder. This may vary across different disks.
Go into expert mode (x), and create a SGI partition table. Note, if it already has an SGI label, you will not have access to expert mode. Use {{r} to return to non-expert mode.
Command (m for help): x
Expert command (m for help): g
Building a new SGI disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content will be unrecoverably lost.

Expert command (m for help): r
Command (m for help): p
Disk /dev/scsi/host0/bus0/target1/lun0/disc (SGI disk label): 141 heads, 62 sectors, 1016 cylinders
Units = cylinders of 8742 * 512 bytes
----- partitions -----
Pt# Device Info Start End Sectors Id System
9: /dev/scsi/host0/bus0/target1/lun0/part1 0 4 43710 0 SGI volhdr
11: /dev/scsi/host0/bus0/target1/lun0/part2 0 1015 8881872 6 SGI volume
----- Bootinfo -----
Bootfile: /unix
----- Directory Entries -----
Command (m for help):
The default SGI volhdr is too large. It only needs to be big enough to hold the arcboot image, which is only about 250kB. From the Units = ... line, we know that each cylinder is rougly 4.48MB/cylinder. For this disc, the first cylinder should be enough to hold the arcboot image. Leaving it as default is also safe. Thanks to Ladislav Michl and Thiemo Seufer for clarifying this point.
Command (m for help): d
Partition number (1-16): 9
Command (m for help): n
Partition number (1-16): 9
First cylinder (0-1015, default 0):
Using default value 0
Last cylinder (0-1015, default 1015): 1
Command (m for help): p
Disk /dev/scsi/host0/bus0/target1/lun0/disc (SGI disk label): 141 heads, 62 sectors, 1016 cylinders
Units = cylinders of 8742 * 512 bytes
----- partitions -----
Pt# Device Info Start End Sectors Id System
9: /dev/scsi/host0/bus0/target1/lun0/part1 0 1 17484 0 SGI volhdr
11: /dev/scsi/host0/bus0/target1/lun0/part2 0 1015 8881872 6 SGI volume
----- Bootinfo -----
Bootfile: /unix
----- Directory Entries -----
Now create the root (/) and swap partitions. The following example will create a ~4.0GB root partition and a ~128MB swap partition.
Command (m for help): n
Partition number (1-16): 1
First cylinder (2-1015, default 2):
Using default value 2
Last cylinder (2-1015, default 1015): 985
Command (m for help): n
Partition number (1-16): 2
First cylinder (986-1015, default 986):
Using default value 986
Last cylinder (986-1015, default 1015):
Using default value 1015
Command (m for help): t
Partition number (1-16): 2
Hex code (type L to list codes): 82
Changed system type of partition 2 to 82 (Linux swap)
Command (m for help): p
Disk /dev/scsi/host0/bus0/target1/lun0/disc (SGI disk label): 141 heads, 62 sectors, 1016 cylinders
Units = cylinders of 8742 * 512 bytes
----- partitions -----
Pt# Device Info Start End Sectors Id System
1: /dev/scsi/host0/bus0/target1/lun0/part1 boot 2 985 8602128 83 Linux native
2: /dev/scsi/host0/bus0/target1/lun0/part2 swap 986 1015 262260 82 Linux swap
9: /dev/scsi/host0/bus0/target1/lun0/part3 0 1 17484 0 SGI volhdr
11: /dev/scsi/host0/bus0/target1/lun0/part4 0 1015 8881872 6 SGI volume
----- Bootinfo -----
Bootfile: /unix
----- Directory Entries -----
Command (m for help): w
Select Finish.

Please choose one of the listed disks, to create partitions on it.

Disk to partition:

/dev/scsi/host0/bus0/target1/lun0/disc (SGI SEAGATE ST34572W/ 434
Finish

Select the first partition.

These are the partitions that were detected in your system. Please
select a partition to configure. No actual changes will be made until
you select "Finish". If you select "Abort", no changes will be made.

The information shown is, in order: device name, size, file system,
and mount point.

Select a partition

SCSI1 (0,1,0) part. 1 4.0 GiB n/a
SCSI1 (0,1,0) part. 2 128 MiB n/a
Finish
Abort



Create an ext3 filesystem.

This partition does not seem to have a file system. You can create a
file system or swap space on it.

Action on /dev/scsi/host0/bus0/target1/lun0/part1:

Create ext3 file system
Create ext2 file system
Create swap space



Mount it as /.

When a partition is mounted, it is available to the users of the
system. You always need a root ("/") partition, and it's often good
to have a separate partition for /home.

Mount point for /dev/scsi/host0/bus0/target1/lun0/part1:

/
/usr
/boot
/home
/var
/tmp
Don't mount it
Enter manually



Select the second partition.

These are the partitions that were detected in your system. Please
select a partition to configure. No actual changes will be made until
you select "Finish". If you select "Abort", no changes will be made.

The information shown is, in order: device name, size, file system,
and mount point.

Select a partition

SCSI1 (0,1,0) part. 1 4.0 GiB ext3 /
SCSI1 (0,1,0) part. 2 128 MiB n/a
Finish
Abort



Create a swap space.

This partition does not seem to have a file system. You can create a
file system or swap space on it.

Action on /dev/scsi/host0/bus0/target1/lun0/part2:

Create ext3 file system
Create ext2 file system
Create swap space



Select Finish

These are the partitions that were detected in your system. Please
select a partition to configure. No actual changes will be made until
you select "Finish". If you select "Abort", no changes will be made.

The information shown is, in order: device name, size, file system,
and mount point.

Select a partition

SCSI1 (0,1,0) part. 1 4.0 GiB ext3 /
SCSI1 (0,1,0) part. 2 128 MiB swap
Finish
Abort



Select Yes to create and mount the new filesystems.

File systems will be created and partitions mounted.

WARNING: This will destroy all data on the partitions you have
assigned file systems to.

Ready to create file systems and mount partitions?



You may run into the following message when the installer tries to mount the partitions. Select No to continue.

Since the partitions have already been mounted, you cannot do any
changes.

Do you want to unmount the partitions so you can make changes?



After partitioning, the base system should install over the network.
Finishing the installation.
If the boot loader is able to install during the installation flow, Click here to skip the manual installation of the bootloader.
Boot loader. Select Continue.
No boot loader installed
No boot loader has been installed, either because you chose not to or
because your specific architecture doesn't support a boot loader yet.

You will need to boot manually with the /vmlinux kernel on partition
/dev/sda1 and root=/dev/sda1 passed as kernel argument.



If you get the above message saying no boot loader was installed, select Go Back
+ Installation complete
Installation is complete, so it is time to boot into your new Debian
system. Make sure to remove the installation media (CD-ROM,
floppies), so that your system boots from the disk to which Debian
was installed.

+

Install the bootloader manually. Select Excute a shell

This is the main menu for the Debian installer.

Choose the next step in the install process:

Detect hardware #
Partition disks #
Partition a hard drive #
Configure and mount partitions #
Install the base system #
Continue without boot loader #
Finish the installation #
Change debconf priority #
Save debug logs #
Execute a shell #
Abort the installation #

Select Continue
Interactive shell
After this message, you will be running "ash", a Bourne-shell clone.

The root filesystem is a RAM disk. The hard disk file systems are
mounted on "/target". The editor available to you is nano. It's very
small and easy to figure out. To get an idea of what Unix utilities
are available to you, use the "help" command.

Use the "exit" command to return to the installation menu.



The newly installed filesystem should be mounted as /target. Chroot to it, mount /proc, and install arcboot with apt-get.
BusyBox v1.00-pre10 (Debian 20040623-1) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
~ # df
Filesystem 1k-blocks Used Available Use% Mounted on
tmpfs 102400 20736 81664 20% /
/dev/scsi/host0/bus0/target1/lun0/part1 4143076 253836 3678780 6% /target
~ # chroot /target
sh-2.05b# mount /proc
sh-2.05b# mount
/dev/sda1 on / type ext3 (rw,errors=remount-ro)
proc on /proc type proc (rw)
sh-2.05b# apt-get install arcboot
The default /dev/sda should be fine.
Arcboot must be put into the volume header of a disk with a SGI
disklabel. Usually the volume header of /dev/sda is used. Please give
the device name of the disk you want to put arcboot onto.

Where to put arcboot?

/dev/sda_______________________________________________________________


If arcboot was installed automatically during the flow of the install process, you get the following message. Select Continue. The installation will finish and reboot automatically.
Setting PROM variables for Arcboot
If this is the first Linux installation on this machine, or if the #
hard drives have been repartitioned, some variables need to be set in #
the PROM before the system is able to boot normally. #
#
At the end of this installation stage, the system will reboot. After #
this, enter the command monitor from the "Stop for Maintenance" #
option, and enter the following commands: #
#
setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8) #
setenv OSLoadPartition scsi(0)disk(1)rdisk(0)partition(0) #
setenv OSLoader arcboot #
setenv OSLoadFilename Linux #
#
You will only need to do this once. Afterwards, enter the "boot" #
command or reboot the system to proceed to the next Debian #



Otherwise, if you are having to install arcboot manually, continue on...
If arcboot installed properly, it should look as follows. Note arcboot.ip32. ip32 is the O2 architecture.
Selecting previously deselected package arcboot.
(Reading database ... 8492 files and directories currently installed.)
Unpacking arcboot (from .../arcboot_0.3.8.6_mips.deb) ...
Setting up arcboot (0.3.8.6) ...
Putting arcboot.ip32 into the volume header of /dev/sda...done.
Take a look at /etc/arcboot.conf and take note of the label= line.
sh-2.05b# cat /etc/arcboot.conf
# arcboot.conf
#
label=linux
image=/vmlinux
append="root=/dev/sda1"
Exit the shell
sh-2.05b# exit
exit
~ # exit
Select Finish the installation

This is the main menu for the Debian installer.

Choose the next step in the install process:

Choose a mirror of the Debian archive #
Download installer components #
Detect hardware #
Partition disks #
Partition a hard drive #
Configure and mount partitions #
Install the base system #
Continue without boot loader #
Finish the installation #
Change debconf priority #
Save debug logs #

Select Continue
+ Installation complete
Installation is complete, so it is time to boot into your new Debian
system. Make sure to remove the installation media (CD-ROM,
floppies), so that your system boots from the disk to which Debian
was installed.

+

Making Linux boot automatically. In System Maintenance Menu, select Enter Command Monitor. The OSLoadFilename environment variable should match the label= from the previous step. If arcboot installed automatically for you, just cut and paste the lines from Setting PROM variables for Arcboot dialog. It is case sensitive.
Running power-on diagnostics...


Starting up the system...
To perform system maintenance instead, press

System Maintenance Menu
1) Start System
2) Install System Software
3) Run Diagnostics
4) Recover System
5) Enter Command Monitor
Option? 5
Command Monitor. Type "exit" to return to the menu.
> setenv OSLoader arcboot
> setenv SystemPartition scsi(0)disk(1)rdisk(0)partition(8)
> setenv OSLoadPartition scsi(0)disk(1)rdisk(0)partition(0)
> setenv OSLoadFilename linux
> exit
Restart the system, and debian should start loading. If the GUI (X) does not start, edit the file /etc/xorg.conf with the settings as shown below:-
# XF86Config-4 (XFree86 X Window System server configuration file)
#
# This file was generated by dexconf, the Debian X Configuration tool, using
# values from the debconf database.
#
# Edit this file with caution, and see the XF86Config-4 manual page.
# (Type "man XF86Config-4" at the shell prompt.)
#
# This file is automatically updated on xserver-xfree86 package upgrades *only*
# if it has not been modified since the last upgrade of the xserver-xfree86
# package.
#
# If you have edited this file but would like it to be automatically updated
# again, run the following commands as root:
#
# cp /etc/X11/XF86Config-4 /etc/X11/XF86Config-4.custom
# md5sum /etc/X11/XF86Config-4 >/var/lib/xfree86/XF86Config-4.md5sum
# dpkg-reconfigure xserver-xfree86
Section "Files"
FontPath "unix/:7100" # local font server
# if the local font server has problems, we can fall back on these
FontPath "/usr/lib/X11/fonts/misc"
FontPath "/usr/lib/X11/fonts/cyrillic"
FontPath "/usr/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/lib/X11/fonts/Type1"
FontPath "/usr/lib/X11/fonts/CID"
FontPath "/usr/lib/X11/fonts/Speedo"
FontPath "/usr/lib/X11/fonts/100dpi"
FontPath "/usr/lib/X11/fonts/75dpi"
EndSection
Section "Module"
Load "GLcore"
Load "bitmap"
Load "dbe"
Load "ddc"
Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "record"
Load "speedo"
Load "type1"
Load "vbe"
EndSection
Section "InputDevice"
Identifier "Generic Keyboard"
Driver "keyboard"
Option "CoreKeyboard"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc104"
Option "XkbLayout" "us"
EndSection
Section "InputDevice"
Identifier "Scroll Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/psaux"
Option "Protocol" "IMPS/2"
Option "Emulate3Buttons" "false"
Option "ZAxisMapping" "4 5"
EndSection
Section "InputDevice"
Identifier "SGI Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/psaux"
Option "Protocol" "PS/2"
Option "Emulate3Buttons" "false"
EndSection
Section "Device"
Identifier "Generic Video Card"
Driver "fbdev"
Option "UseFBDev" "true"
EndSection
Section "Monitor"
Identifier "LCD Monitor"
VendorName "Dell"
ModelName "2001fp"
HorizSync 31.0-80.0
VertRefresh 56.0-76.0
Option "DPMS"
EndSection
Section "Monitor"
Identifier "SGI Monitor"
VendorName "SGI"
ModelName "GDM-5011p"
HorizSync 30-117
VertRefresh 50-180
Option "DPMS"
EndSection
Section "Screen"
Identifier "Default Screen"
Device "Generic Video Card"
Monitor "SGI Monitor"
DefaultDepth 15
SubSection "Display"
Depth 15
Modes "1600x1200"
EndSubSection
EndSection
Section "ServerLayout"
Identifier "Default Layout"
Screen "Default Screen"
InputDevice "Generic Keyboard"
InputDevice "SGI Mouse"
EndSection
Section "DRI"
Mode 0666
EndSection

It was an enjoyable and learning experience installing linux on O2 worksttion!