dave.. would you mind telling me how you created the vmware images of raqcop from the ipcop install cd's? i assume it's a just a few parameters that need to be set in vmware right? or did you do some kernel image mods for lilo to work? i'm toying with the idea of getting other UTM type distro's running on these things as well.
The VMware images are made with the assumption that you are using a 20GB drive, when making the virtual drive, make sure it is ide not scsi and set the size to 18.6GB. If you do not have access to WinImage, you'll have to make a fixed size image and need at least 20GB of extra space. Winimage will write variable sized vmware images to a drive properly. I also thin that it may be possible in Linux with the dd command and the right parameters. IPCop has three partitions and the /boot partition uses a different block size that / and /var/log. As far as what it takes to make something run on a Cobalt, read on.
First I need to tell you that a Cobalt unit does not have a normal bios and cannot use a bootloader. They will actually run without the Cobalt kernel patch but you won't have some of the Cobalt monitoring available in /proc/cobalt so I use the patches. The rom image in a Cobalt looks for either a gzipped or a bzipped vmlinux kernel image (vmlinuz will not work) in hda1 by default and you need to set the root device as well so it knows where to find any additional modules.
I only embed just enough to start the boot process because current roms have a 1.8MB size limit for the kernel image. In a Cobalt, any Linux kernel you have in your distro is actually a stage 2 kernel because the rom already has it's own kernel and is a tiny os in itself. The rom passes a specific kernel argument to the stage II kernel, mainly to allow watching it boot via serial console.
There are several files that need changed and some things the kernel does not need. As far as ide drivers, they have to be embedded as well as the ext2 and ext3 filesystem. The only three IDE drivers any cobalt will ever use are ali15x3, serverworks, and hpt366 drivers, the latter is only on an XTR but those are best used as a raid fileserver.
Other files that need to be changed are of course the ones you would change for serial console access anyway and of course comment out all terminals except ttyS0 in inittab and also in the sysinit, comment out anything that looks for those tty's. Being headless, having tty's (VT) enabled as you would on a normal pc is harmless but annoying with errors.
Keep in mind also that you can only boot the properly prepared Linux kernels and NetBSD with the current 2.10.x roms, no other BSD kernels can be booted and NetBSD has to be started in the rom every boot, there is no set and forget for NetBSD.
I no longer use the Cobalt in kernel lcd driver and the pile of programs that can use it. The LCD is nothing but a parallel connected HD44780 compatible lcd on all 3000 series and the Raq 550, the XTR which is huge, uses i2c for it's LCD access. I'm using a single perl program that was developed just for IPCop from the french community to display bandwidth. A friend also sent me a single small program written in C that reads the buttons. Something would have to poll it though at intervals but I did try it and it reads all button events.