Showing posts with label debian. Show all posts
Showing posts with label debian. Show all posts

Wednesday, December 22, 2021

Getting internet via usb tethering(JIOfi) on Debian skol Linux VM created on virtual box & installing guest additions on it.

 The VM was created after downloading a iso file of Debian Blue ray iso and installing it to the VM.

Guest additions were required to run the VM in full screen, here is where problems started.

step1 : getting the usb tethered internet working

The Oracle virtual box does not support sharing of wifi connection (there is a trick, another blog post for that!) of host to guest, even if it supports, it is choppy at best, sometimes working, sometimes not working. 


I didn't have a wired connection of ethernet variety, so the only option left was to plug in USB of jiofi modem to laptop running windows 11 host. thereafter using the virtualbox (rt control key + home) menu, selected the USB modem (listed as Android) and made it visible to Debian VM. immediately, it got unistalled from windows and got connected to Debian. Drivers were added automatically.

The device was showing in command ip address( IPconfig is depreacted it seems) as usb0 and given an ip address. The jiofi uses 255.255.0.0 subnet mask. However, routing was messed up as the default routes all go to eth0, so this has to be disabled from the host first. (use vm manager, click on debian vm configuration and in Networks, select "Not Attached" in Adapter1).

The above step resolved all gateway issues etc and was able to ping the google dns 8.8.8.8. Browsing was still not going through, and therefore, had to add the jiofi DNS entry (which is same as gateway) manually in USB0 configuration.

Now, internet was working fine.

Step2: Install kernel headers

Follow this post

https://www.tecmint.com/install-kernel-headers-in-ubuntu-and-debian/

Step3: installing the guest additions

Follow this post 

https://linuxize.com/post/how-to-install-virtualbox-guest-additions-on-debian-10/


Skol Linux is very useful for school students with many apps for school subjects like physics, chemistry,maths,geography and also for topics like astronomy and music.


Sunday, June 30, 2013

Using Zend Debugger with PHP 5.3 installed on Debian 6

1. This entry is followed from this youtube post:-
http://www.youtube.com/watch?v=1kwQFzwSifE

The same is described in text:-

2. Zend studio web debugger  can be downloaded from this link
http://www.zend.com/en/products/studio/downloads

3. click the linux tab and copy the tar file to a folder in your linux system. untar the contents

4. create a folder zenddebugger in /usr/lib
5. copy the contents of the untarred folder to zenddebugger folder created  in /usr/lib in your linux system.

6. nano -w /etc/apache2/conf.d/debugger.ini  //creates a debugger.ini file
//write the following lines in the file:-

zend_extension=/usr/lib/zenddebugger/5_3_x_comp/ZendDebugger.so

zend_debugger.allow_hosts=192.168.1.0/24 //depends on the hosts which you want to allow

zend_debugger.expose_remotely=always

7. copy /usr/lib/zenddebugger/dummy.php to the directory in webserver where you have the code to debug. if your files are /var/www, then copy dummy.php there.

8. Restart apache /etc/init.d/apache2 restart

9. write a php script to show phpinfo( ) and verify whether zend debugger line is shown and an entry for zend debugger exists in the phpinfo( ) page.

Next post on integrating this with eclipse IDE..




Wednesday, November 2, 2011

installing debian using local mirror

A 'local' mirror comes in handy when debian is to be installed in multiple number of computers using netboot.

Usually, after the target system is booted by a debian 'image' loaded from a DHCP/TFTP server using bootp protocol by the target system, the installation program gives a choice of debian mirrors located in different countries to download files and complete the full system install on the hard-disk.

However, if this process is ok if its done to a single system. To install to many number of systems, it becomes tedious and time consuming, and if the internet connection fails, the process needs to be restarted from the beginning.

Taking these factors, I decided to have a very own local mirror for installation purpose.

I. First, I downloaded ISO image of CD #1 (containing installation files for debian MIPS systems).There are many such CDs containing the full debian packages. Usually, CD#1 is enough to make a system completely bootable. I can't use this CD for SGI O2 because, O2 does not recognize the ISO-9660 format which most CD burners use. The CDs to boot O2 needs to be burned with the linux CDRECORD command with some kind of 'boot' partition. Anyway, that is cumbersome, therefore, we opt for netboot approach.


II. Preparing the ftp server for installation:-

1. create a folder in your ftp server. name it say, debian6.

2. copy the dists and pool folder of the MIPS cd to this folder.





3. Take care that the debian6/dists/squeeze folder contains the files Release and Release.gpg. replace the existing files.

4.Also, please note that there are two folders called contrib and non-free in the /dists/squeeze folder. These folders refer to contributed and non-free software available in debian.

5. CD#1 does not contain much of contributed and non-free software. Therefore, during the installation, just answer 'no' to questions asked for using contrib and non-free software. Answering 'yes' may stop your installation as these files won't be found.

6. The bulk of installation files are present in the /debian6/pool/main/ folder. During the installation, if any files are shown as missing, then the same can be copied from the ftp.debian.org site to the folders located in the /pool/main/ folder to resume installation.


III. INSTALLING FROM THE LOCAL MIRROR
Step by Step installation:-
1. Change DEBCONF priority

2. Select the debconf priority to ‘low’
3. Now go to choose a mirror :-








Since, our mirror server ( otwo 69) supports http, choose http. Had we not done step # 1 and directly proceeded to step # 3, this option of choosing http/ftp would not have come up. This can be useful in situations when you are planning to install from a ftp location.
5. Enter the IP address of the mirror in hostname

6. Enter the directory name where the debian files are stored in the mirror


7. Enter the proxy information (if any), since we have none, select continue
8.The system finds an installation candidate and the version is listed as ‘squeeze’. Select the same and

Choose ‘continue’.
9. Now you are taken to the next step ‘Download Installer components, click ‘continue’

10. you can choose some optional components, but we don’t have to choose any, so we choose

‘continue’.

You will see the screen above. Now, Debian installation should proceed, answer any questions which the installation manager will ask, partition the disk as documented/blogged earlier.
11. when you come to the question of using NTP server, select ‘No’ since we are not using NTP server.

Monday, May 9, 2011

Ether channeling on Debian lenny having 2.6 kernel
Used an O2 with an inbuilt Ethernet port (100 Mbps with full duplex support ) and another NE2000 based card (10 Mbps with half duplex support). These two are connected to a Catalyst 2960G switch of CISCO.

These steps have to be followed to the tee:-

1. apt-get install ifenslave-2.6
2. Note the interfaces available for bonding (eth0, eth1 etc)
3. bring down these interfaces ifconfig eth0 down
4. Stop the network services /etc/init.d/networking stop
5. edit /etc/network/interfaces
6. comment out the entries for all interfaces eth0, eth1 etc
7. Add the following new entry:-

auto bond0

iface bond0 inet static
address
netmask 255.255.255.0
network
gateway
slaves eth0 eth1
bond_mode 0 # u can use any mode from 0 to 6
bond_miimon 100
bond_downdelay 200
bond_updelay 200

8. ifconfig bond0 up
9. /etc/init.d/networking start

The debian Ethernet bonding guidelines have been followed from:-
www.debianhelp.co.uk/bonding.htm

As far as my experiments go, I have not made any change in the switch end. The wikis and other sites I have consulted also don’t speak anything to do at switch end.

The main features of the various bond mode are described for reference:-

Mode Description Function
0 Round Robin Packets transmitted in round robin fashion over the available interfaces, provides loadbalancing and fault tolerance
1 Active Backup One active at a time. Only fault tolerance
2 Balance XOR Load balancing and fault tolerance.
Observation:-
However, on actual testing, fault tolerance did not work
3 Broadcast Fault tolerance. Transmits everything on all slave interfaces.
Observation:-
Using this config, If I ping another server, I get duplicate replies, i.e., (DUP) is written in ping replies.
4. 802.3 ad Dynamic Link aggregation. This is classic IEEE 802.3ad dynamic link aggregation. Requires 802.3ad support in switch and driver support for receving speed and duplex of each slave.
Observations:-
Removing eth1 from link did not disrupt the ping, however, removing eth0 from ping disrupted the ping. Activity seems to be happening on both eth0 and eth1 when connected. However, eth1 alone is not able to initiate the traffic nor receive replies. (perhaps because in my case eth1 is operating in half-duplex mode)
5 Balance TLB Transmit Load Balancing. Incoming traffic is received on active slave. Outgoing traffic is balanced according to load on each slave.
Observation:
Disconnecting either eth1 or eth0 stops the ping.
6 Balance ALB Provides both Transmit and Receive Load Balancing.

TRUNKING BETWEEN TWO SWITCHES (Cisco 2960 G) or trunking between a switch and a server with two or more network cards.

Each Etherchannel can consist of 8 ports, so the effective bandwidth achievable is 800 Mbps or 8 Gbps. There can be 6 etherchannel groups maximum.

Pagp,LACP & ON modes in the switch

We can configure ether channel in three modes, Port Aggregation Protocol (Pagp), Link Aggregation control Protocol (LACP) and an ‘on’ mode. Both ends of the etherchannel should be in the same mode. Pagp is a cisco proprietary protocol. LACP is IEEE 802.3 ad dynamic link aggregation protocol.

In case of Pagp and LACP, the system negotiates with other end to determine which ports should be active in the etherchannel. Incompatible ports are suspended. In case of ‘on’ mode, no such negotiations take place and all the ports are expected to be in the channel. If the ports at other end are not in ‘on’ mode, packet loss can occur.
Step by step procedure for configuring L2 Etherchannels:-
First Create a channelgroup

1. Config t

2. int port-channel 1 # 1 is the first port-channel, the second would be 2 and so on.
2. Switch port mode access
# if the etherchannels were between two switches, it would be switch port mode trunk
3. Switchport access VLAN 7
# assuming that these ports belong to vlan 7.If the ports are to be trunked to another switch, skip this step

4. spanning-tree portfast
# skip the above step for configuring ether-channels between switches.
5. no shut

Now, assign the ports to the channel group.Suppose we assign Gi0/30 to Gi0/33 to the channel-group1.
1. config t
2. interface range Gi0/30,Gi0/31,Gi0/32,Gi0/33
3. switchport access vlan 7 # if,used for trunking switches, omit this
4. switchport mode access # trunk if used for trunking between switches.
5. spanning-tree portfast # omit for trunking between switches
6. Channel-group 1 mode
# channel group can take values from 1-6. The parameter mode_name can take the following values:-


1. If you are planning to use PAgp
(a) Channel-group 2 mode auto
(b) Channel-group 2 mode desirable
2. If you are planning to use LACP
(a) Channel-group 2 mode active
(b) Channel-group 2 mode passive
3. If you are planning to use mode ON
(a) Channel-group 2 mode on

7. end
8. sh run
# verify your config.
9. To verify the channel-group assigned to ports run:-
sh run int Port-channel 1
10. To verify if etherchanneling is correctly setup, run:-
sh etherchannel 1 summary
Output will same as given below in last line (P) should be there.
*********************************************************************** Flags: D - down P -
bundled in port-channel I - stand-alone s - suspended
H - Hot-standby (LACP
only) R -
Layer3 S - Layer2 U - in use f - failed to allocate
aggregator
M - not in use, minimum links not met u - unsuitable for bundling
w - waiting to be
aggregated Number of
channel-groups in use: 34 Number of aggregators: 34
Group Port-channel Protocol
Ports ------+-------------+-----------+----------------------------------------------- 41
Po41(SU) LACP Gi9/27(P) Gi10/39(P)
*************************************************************************




The various modes are explained in detail here1:-
auto—Enables PAgP only if a PAgP device is detected. It places the port into a passive negotiating state, in which the port responds to PAgP packets it receives but does not start PAgP packet negotiation.
•desirable—Unconditionally enables PAgP. It places the port into an active negotiating state, in which the port starts negotiations with other ports by sending PAgP packets.
•on—Forces the port to channel without PAgP or LACP. In the on mode, an EtherChannel exists only when a port group in the on mode is connected to another port group in the on mode.
•non-silent—(Optional) If your switch is connected to a partner that is PAgP-capable, configure the switch port for nonsilent operation when the port is in the auto or desirable mode. If you do not specify non-silent, silent is assumed. The silent setting is for connections to file servers or packet analyzers. This setting allows PAgP to operate, to attach the port to a channel group, and to use the port for transmission.
•active—Enables LACP only if a LACP device is detected. It places the port into an active negotiating state in which the port starts negotiations with other ports by sending LACP packets.
•passive—Enables LACP on the port and places it into a passive negotiating state in which the port responds to LACP packets that it receives, but does not start LACP packet negotiation
EtherChannel Configuration Guidelines 2
If improperly configured, some EtherChannel ports are automatically disabled to avoid network loops and other problems. Follow these guidelines to avoid configuration problems:
•Do not try to configure more than 6 EtherChannels on the switch.
•Configure a PAgP EtherChannel with up to eight Ethernet ports of the same type.
•Configure a LACP EtherChannel with up to16 Ethernet ports of the same type. Up to eight ports can be active, and up to eight ports can be in standby mode.
•Configure all ports in an EtherChannel to operate at the same speeds and duplex modes.
•Enable all ports in an EtherChannel. A port in an EtherChannel that is disabled by using the shutdown interface configuration command is treated as a link failure, and its traffic is transferred to one of the remaining ports in the EtherChannel.
•When a group is first created, all ports follow the parameters set for the first port to be added to the group. If you change the configuration of one of these parameters, you must also make the changes to all ports in the group:
–Allowed-VLAN list
–Spanning-tree path cost for each VLAN
–Spanning-tree port priority for each VLAN
–Spanning-tree Port Fast setting
•Do not configure a port to be a member of more than one EtherChannel group.
•Do not configure an EtherChannel in both the PAgP and LACP modes. EtherChannel groups running PAgP and LACP can coexist on the same switch. Individual EtherChannel groups can run either PAgP or LACP, but they cannot interoperate.
•Do not configure a Switched Port Analyzer (SPAN) destination port as part of an EtherChannel.
•Do not configure a secure port as part of an EtherChannel or the reverse.
•Do not configure a port that is an active or a not-yet-active member of an EtherChannel as an IEEE 802.1x port. If you try to enable IEEE 802.1x on an EtherChannel port, an error message appears, and IEEE 802.1x is not enabled.
•If EtherChannels are configured on switch interfaces, remove the EtherChannel configuration from the interfaces before globally enabling IEEE 802.1x on a switch by using the dot1x system-auth-control3 global configuration command.
•For Layer 2 EtherChannels:
–Assign all ports in the EtherChannel to the same VLAN, or configure them as trunks. Ports with different native VLANs cannot form an EtherChannel.
–If you configure an EtherChannel from trunk ports, verify that the trunking mode (ISL or IEEE 802.1Q) is the same on all the trunks. Inconsistent trunk modes on EtherChannel ports can have unexpected results.
–An EtherChannel supports the same allowed range of VLANs on all the ports in a trunking Layer 2 EtherChannel. If the allowed range of VLANs is not the same, the ports do not form an EtherChannel even when PAgP is set to the auto or desirable mode.
–Ports with different spanning-tree path costs can form an EtherChannel if they are otherwise compatibly configured. Setting different spanning-tree path costs does not, by itself, make ports incompatible for the formation of an EtherChannel
Testing Etherchannel by enabling bonding on server and LACP on switch.

As debian Ethernet bonding supports 802.3 ad (mode 4), I guess, we can configure two ports in the switch in LACP mode active and the network interface in the server as mode 4 and then test the connection.

Result:
The lights in the switch did not turn green after the cables were connected. I suspect that I am using the onboard card in FDUP and the add on PCI card in half duplex. This might be the issue as it is explained in point No. 4 of etherchannel configuration guidelines.


Refrences :
1 & 2 : http://www.cisco.com/en/US/docs/switches/lan/catalyst2960/software/release/12.2_25_see/configuration/guide/swethchl.html
3. http://en.wikipedia.org/wiki/IEEE_802.1X

Sunday, May 2, 2010

DEBIAN ON SGI O2

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. Detailed breakdown pictures and an IRIX hinv dump can be found here.

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.




CPU options

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.

CPU Version:

Clock Speed:

2nd Level Cache:

R5000PC

180 MHz

-

R5000SC

180 MHz

512 KB

R5000SC

200 MHz

1 MB

R5200SC

300 MHz

1 MB

RM7000A

350 MHz

256 KB (+1 MB tertiary)

R10000SC

150, 175, 195, 225, 250 MHz

1 MB

R12000SC

270, 300 MHz

1 MB

R12000SC

400 MHz

2 MB


< name="Memory_subsystem">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. These rules follow the table in this section.

Size

Color Code 1

Color Code 2

SS/DS

Type

16 MB

Purple

-

SS

A

32 MB

Yellow

-

DS

A

64 MB

Green

White

SS

B

128 MB

Silver

-

DS

A

128 MB

Silver

White

DS

B




  • 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.

CONNECTING EXTERNAL HDD

I have connected a 76 GB external SCSI HDD. The hinv command on command monitor shows it as scsi(1)disk(1),The internal hard disk was shown as scsi(0)disk(1) and the CDROM drive was shown as scsi(0)cdrom(4).


The Debian MIPS team recommends net booting approach.


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/tftpd-hpa start


Check for DHCP:


# ps x grep DHCP


should return some entry in sbin directory 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. The dhcpd.conf looks like:-


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 below:-

Choose a language. English only if you are using the serial console. Credit to Martin Michlmayr for pointing this out.



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 #


<Go Back>


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___________________________________________________________________


<Go Back>



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_____________________________________________________


<Go Back>


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 #


<Go Back>



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.<your country code>.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 #


<Go Back>


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


___________________________________________________________________


<Go Back>



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?


<Go Back> <Yes> <No>


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?


<Go Back> <Yes> <No>


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


Start Another shell using Alt+ F2 and zero fill the entire disk to delete any existing SGI Partitions.

dd <space> if=/dev/zero <space> of=/dev/sda <space> count=1

will return : 1 + 0 records in, 1 + 0 records out

now, return to previous shell by pressing Alt + F1

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


<Go Back>


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


<Go Back>


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


<Go Back>



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


<Go Back>


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


<Go Back>


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


<Go Back>


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?


<Go Back> <Yes> <No>


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?


<Go Back> <Yes> <No>


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.


<Continue>



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.


+ <Go Back> <Continue>


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.


<Go Back> <Continue>



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_______________________________________________________________


<Ok>


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 #


<Continue>



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.


+ <Go Back> <Continue>


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 <Esc>



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


Wednesday, January 20, 2010

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!