The Cobalt Hacking FAQ
Tim Hockin
cobaltfaq@hockin.org

Q: Is this FAQ official?
A: Hell no.  I wrote this so I'd stop getting questions so often.

Q: Does this FAQ cover MIPS hardware?
A: No, this document just x86 compatible hardware.  That is:
   * RaQ 3
   * RaQ 4
   * Qube 3
   * RaQ XTR
   * RaQ 550

Q: What hardware is in my Cobalt?
A: Cobalt hardware us roughly broken into three generations: 2000 series
   (MIPS based), 3000 series or GEN_III (K6 based), and 5000 series or GEN_V
   (Pentium III based).  2000 series systems are beyond the scope of this
   document.  3000 series systems are: RaQ 3, RaQ 4, Qube 3.  5000 series
   systems are: RaQ XTR and RaQ 550.

   * RaQ 3 and RaQ4 (3000 series):
     - AMD K6-2 processor (300 or 450 MHz)
     - ALi M1541/1533 chipset
     - 2 PC100 DIMM slots
     - optional NCR 53c875 SCSI
     - 1 optional 32 bit PCI slot
     - 1 or 2 Intel 82559ER 10/100 ethernet controllers
     - 1 or 2 ATA33 disks
     - 1 USB 1.1 port
     - 2 RS232 serial ports

   * Qube 3 (3000 series):
     - AMD K6-2 processor (300 or 450 MHz)
     - ALi M1541/1533 chipset
     - 2 PC100 DIMM slots
     - optional NCR 53c875 SCSI
     - 1 32 bit PCI slot
     - 2 National Semiconductor DP83815 10/100 ethernet controllers
     - 1 or 2 ATA33 disks
     - 1 USB 1.1 port
     - 1 RS232 serial port

   * RaQ XTR (5000 series):
     - Intel Pentium III (Coppermine only) processor
     - 1 extra CPU socket with terminator
     - ServerWorks LE chipset with OSB4 south bridge
     - 4 PC133 DIMM slots (registered ECC DIMMs required)
     - 1 32/64 bit PCI slot
     - 2 National Semiconductor DP83815 10/100 ethernet controllers
     - 2 HighPoint HPT370 ATA100 IDE controllers
     - 1-4 ATA100 disks
     - 1 USB 1.1 port
     - 2 RS232 serial ports

   * RaQ 550 (5000 series):
     - Intel Pentium III (Coppermine or Tualatin) processor
     - ServerWorks LE chipset with CSB5 south bridge
     - 2 PC133 DIMM slots (registered ECC DIMMs required)
     - 1 32/64 bit PCI slot
     - 2 National Semiconductor DP83815 10/100 ethernet controllers
     - 1 or 2 ATA100 disks

Q: Can I put a second CPU in my RaQ XTR?
A: Not reliably.  There are issues with the chipset and motherboard that may
   cause the system to lockup, crash, or corrupt data.  Newer flash ROM
   versions should support SMP, if you decide to try anyway.

Q: Can I run a 2.4.x kernel on my Cobalt?
A: Yes!  RaQ 550 systems ship with a 2.4.x kernel already, and need no
   special preparations.  All the other systems ship with a 2.2.x kernel,
   and need some extra work to ready them for a 2.4.x kernel.  See
   ftp://ftp-eng.cobalt.com/pub/users/thockin/2.4 for more information.

Q: Can I run a 2.6.x kernel on my Cobalt?
A: I have never tried.  As far as I know, no one has ported the
   Cobalt-specific code to the 2.6 kernel. I'd love to do it, if someone
   wanted to fund it ;).

Q: How do I tell what version of the flash ROM do I have installed?
A: If your system is alive, you can run the 'cmos' tool to check:
   	cmos -c romrev
   If your system is not alive, you'll need to attach a serial console, and
   check as the system boots.

Q: How do I enable/disable the serial console?
A: The console state can be changed via software, with the 'cmos' tool or
   with a special button held at startup.  To see the state of the console
   setting with the 'cmos tool:
   	cmos -c console
   To change the console setting:
   	cmos -c console [on|off]
   You must reboot for the change to take full effect.

   The console setting can also be toggled by holding a special button while
   the system powers on.  For 3000 series systems, the special button is the
   'Password Reset' button (the little recessed button).  For 5000 series
   systems, the special button is the left arrow (these systems do not have
   a 'Password Reset' button).  Hold the button down, then power on the
   system.  Keep the button pressed until you see the message "console ON"
   or "console OFF" appear.  This process is a toggle.  If you do it again,
   it will change the setting back.

Q: What serial console settings should I use?
A: The serial console is set to 115200 bits per second, 8 data bits, no stop
   bit, 1 parity bit.  These settings are hard coded.

Q: How do I restore the CMOS?
A: You should never need to do this.  Restoring the CMOS will return the
   system to it's unconfigured state.  It will lose it's serial number as
   well as the current boot configuration.  For some systems, this means it
   will attempt to boot from the network.  If you still want to do this,
   power the system off, hold down the 'E' button, and power the system back
   on.  You will eventually see a message that says "CMOS restored".

Q: How do I get to the LCD boot menu?
A: Hold down the 'S' button while powering the system on.  You will
   eventually be presented with a menu.  Use the 'S' button or the up/down
   or left/right buttons to navigate the menu.  Use the 'E' button to select
   options or sub-menus.

Q: How do I upgrade the flash ROM?
A: See ftp://ftp-eng.cobalt.com/pub/users/thockin/2.4 for instructions.

Q: Where can I get new flash ROM versions?
A: There are two options.  Flash ROM images that have been tested by
   Sun/Cobalt are available at
   ftp://ftp-eng.cobalt.com/pub/users/thockin/2.4 - read the docs.  The
   Cobalt ROM source was also released under the GPL, and has seen some
   development outside of Sun/Cobalt.  Check
   http://sourceforge.net/projects/cobalt-rom for the latest.

Q: Where can I get source code for the Cobalt ROM?
A: http://sourceforge.net/projects/cobalt-rom

Q: What boot and root options do I have?
A: That depends on your flash ROM version.  The flash ROM stores the desired
   boot device in CMOS, but may not use it, depending on the boot option
   selected.

   The 2.3.x flash ROMs can boot from:
   * Disk: the kernel image is read from the boot device's / or /boot.  The
     boot device is also the root device.
   * ROM: the kernel image is read from flash ROM, but mounts the boot
     device as the root filesystem.
   * Net: the kernel image is read from flash ROM, but mounts an NFS share
     as the root filesystem.

   The 2.9.x and 2.10.x flash ROMs can boot from:
   * Disk, ROM, and Net, as in 2.3.x
   * Net/Net: the kernel image is read from an NFS share, which is also
     mounted as the root filesystem.
   * Settings: the kernel is read from the specified kernel source.  The
     specified filesystem source is mounted as the root filesystem.  For
     example, it is possible to load a kernel from disk, but mount an NFS
     share as the root filesystem.

Q: How do I change the boot/root device?
A: Either use the 'cmos' tool or the LCD boot menu.  To use the 'cmos' tool:
   	cmos -c bootdev [dev]		(e.g. hda1 or md1)
   To use the LCD boot menu, navigate to the "Config boot disk" option, then
   select the device you want.  If the device you want is not listed, you
   will have to use the serial console ROM interface, or the 'cmos' tool.

Q: How do I change the default boot method?
A: Either use the 'cmos' tool or the LCD boot menu.  To use the 'cmos' tool:
   	cmos -c defboot [d|r|n]		(disk, rom, or network)
   To use the LCD boot menu, navigate to the "Configure boot" option, then
   select the method you want.

Q: What version of the flash ROM should I use?
A: You should stick with whatever you have unless it doesn't work.
   Seriously, flashing the ROM is risky business, and if it fails, the
   system is dead until you solder in a new flashrom.

   If you need to upgrade because of a ROM bug, you should upgrade to the
   latest version in your current series.  2.3.x ROMs should stay 2.3.x.

   If you want to upgrade beyond your current ROM series (the most likely
   case being that you want to boot a newer kernel), you should upgrade to
   the latest 2.9.x or 2.10.x ROM.  2.9.x ROMs are well tested and should
   work in all systems, provided you run a recent kernel.  2.10.x adds a few
   minor things, like ext3 support.  These should also work in all systems.

Q: What size disks can I put in my Cobalt?
A: All Cobalt systems used LBA24 disk controllers.  This means that the
   largest disks you can put into a Cobalt are approximately 137 GB.  Even
   if you put LBA48 capable disks into your system, it will not work.  In
   fact, putting LBA48 disks on an LBA24 controller may cause some kernel
   version not to boot at all (see 'My Cobalt hangs at "Partition check:"').

Q: Can I install Red Hat on my Cobalt?
A: Yes. See http://www.gurulabs.com/rhl-cobalt-howto/ for one method.

Q: Can I install Debian/Slackware/whatever on my Cobalt?
A: Maybe.  See http://www.traumatized.org/linux/cobalt/index.php for some
   information, or just use google.  Google is your friend.  If it isn't in
   google, then I don't know.

Q: Can I use ext3 on my Cobalt?
A: Yes, but you need flash ROMs from the 2.10.x series.

Q: My Cobalt hangs at "Partition check:".  Why is this?
A: The only known cause of this is an alignment of couple things.  Firstly,
   you put LBA48 capable disks into your Cobalt (e.g. ATA133).  Secondly,
   you are trying to boot a 2.4.19 kernel.  The 2.4.19 kernel was the first
   kernel to introduce LBA48 support.  However, it did not handle the case
   of an LBA48 disk on an LBA24 controller (such as in Cobalts) very well.
   The result is that the kernel is trying to send LBA48 messages to the
   disk, but not getting any reply, and hanging when it tries to read the
   disk.  You can either use LBA24 (e.g. ATA100) disks, or you can revert to
   a kernel before 2.4.19, or you can get a kernel newer than 2.4.19, if one
   is available.

Q: I'm compiling a kernel, but the build complains about "as86: Command not
   found"!
A: Don't build a bzImage.  Cobalt's boot from a gzipped or bzip2ed vmlinux.

Q: I installed (some distribution) on my Cobalt, but it hangs when starting
   'init'!
A: It could be that you've installed an i686 libc (or more) on a 3000 series
   Cobalt.  The 3000 series systems need i386 binaries.