Debian Cobalt Qube2/Raq2 HOWTO This document describes how to install Debian using a network boot. No screwdriver required. These instructions are relevant to the Qube2, Raq2 and CacheRaq2, and ramble a bit. They have not been tested on other types of Cobalt 2800 hardware, but you're welcome to try. Usual disclaimers apply. I've used this procedure to set up four machines, and it's worked for me. It may not work for you. This will invalidate any warranty you may still have had on that Qube2 or Raq2. All data on the Qube or Raq will be lost. Prepare the NFS server to allow the Qube/Raq to pick up an NFSroot kernel. /nfsroot (sorry, that's what the boot ROM requires) should contain: vmlinux_raq-2800.gz and a symlink from "boot" to ".". This is obtained from: http://people.debian.org/~pm/mips-cobalt/nfsroot/vmlinux_raq-2800.gz Then "cd /nfsroot && ln -s . boot". Next, prepare the actual NFSroot area. Get http://people.debian.org/~pm/mips-cobalt/nfsroot/nfsroot.tar.gz and unpack it anywhere you have sufficient space (it needs about 6.2MB). Remember where you put it. In the following configuration fragments it has been placed in /mnt/nfsroot. Next, configure your NFS server, exporting: /nfsroot 192.168.1.0/255.255.255.0(ro) /mnt/nfsroot 192.168.1.0/255.255.255.0(ro) (adjust /mnt/nfsroot and the IP addresses according to your needs) Next the DHCP server. If you're using Debian's "dhcp" package, the extra configuration will look something like this: option root-path "/mnt/nfsroot"; # absolute dir on nfs server server-name "192.168.1.1"; # IP of nfs server next-server 192.168.1.1; # IP of nfs server Similarly, the /mnt/nfsroot and IP addresses will be dependent on your configuration. There's more to the configuration than this -- you'll need to specify an IP range for the machine you're installing to use, but configuring DHCP or NFS is beyond the scope of this document. An example dhcp.conf is given at the end of this HOWTO. Ensure the DHCP server has been restarted, and the NFS server reconfigured. On the Qube/Raq hold down the Left and Right arrow buttons near the LCD panel, and switch it on, holding the buttons until "Net booting" appears in the LCD. If you want to watch the bootup sequence, there is logging on the serial port, which is set to 115200bps 8N1. The serial port is *not* used for installation. After much network activity, the message "Now telnet to..." and an IP address will appear on the LCD. Telnet to this address, and you should be in the now familiar dbootstrap Debian installer. Only one telnet session can be open at any one time, so the risk of being hacked during install is minimal. It will probably complain about not finding a root device. Ignore this error. Configure the keyboard just to get past that bit of the menu. When partitioning the hard drive, make a small first partition (hda1) at the start of the disk. 5MB will be more than sufficient. This will be /boot, and will hold the kernel, and a few files to allow the root partition to be elsewhere. This partition has to be ext2, revision 0, with no sparse superblocks, otherwise the boot ROM won't be able to read it. The Debian install program has been modified to know this. No other partitions have this requirement. Partition the rest of the hard drive as you like. Don't forget a swap partition. Back to the menu, initialise your swap partition, and initialise what will be your root partition before you initialise /dev/hda1, which you should initialise as /boot. Install Kernel and Driver Modules: You want to use the "network" option, and use http://people.debian.org/~pm/disks-mipsel/current/ or http://194.247.47.32/pm/disks-mipsel/current/ as the download URL. This will then install a bootable kernel, and the root pivot program, so that the ROM can boot off /dev/hda1, but you aren't forced to patch the kernel to change the root partition. (The choice of root partition is determined by the contents of the file /boot/rootfs, and the program that does the flip is in /boot/sbin/init.) Configure Device Driver Modules: just go into this, and exit without selecting any modules. Configure the Network: select eth0 and DHCP. Install the Base System: Again you want to install off network. The URL you want is http://ftp.XX.debian.org/debian where the XX is the country code of your country (in the USA it's us, in UK it's uk, in France it's fr, etc). On a 128kbps line this bit's going to take about 10 minutes. Make System Bootable: do this. Reboot the System: DO NOT DO THIS YET. If you do so at this stage, you'll have a system that doesn't boot properly. Scroll through the options until you get to "Execute a Shell" (third from bottom). Choose it. You've now got a "#" prompt. Type "chroot /target". You should get a "sh-2.05a#" prompt back. Now run "base-config". Go through the usual setup. It will fail when you get to the apt configuration. There is no "stable" distribution for mipsel yet -- it didn't exist in potato. You need to edit the sources list by hand. It wants to read: deb http://ftp.XX.debian.org/debian woody main (replacing XX as before with your country code.) Do not be tempted to install sid/unstable. There's a problem with the aptitude package that means that it doesn't exist in the mipsel architecture. Don't use tasksel unless you really want to. Use dselect if you can, and let it install the important and standard packages, which should include ssh. It's OK to remove non-essential packages like nfs-common, portmap, and things like that. You can install anything else after you've rebooted. Add package "pump" and remove "dhcp-client". The kernel you've installed doesn't work with dhcp-client. Downloading these packages will take about 50 minutes at 129kbps. If you're on a modem this will take a lot longer. Remember when installing ssh, to enable the sshd installer. You are likely to see error messages of the nature: tar: ./prerm: time stamp 2002-01-27 05:12:03 is 65415453 s in the future They are harmless, caused by the kernel not picking up the right time from the hardware. This will fix itself after rebooting. Eventually, you should be returned to the "sh-2.05a#" prompt. Now you want to edit /etc/inittab (nano is one available editor). Comment out the lines beginning with numbers 1-6 (using #es), and uncomment the T0 line, changing the baud rate from 9600 to 115200. Edit /etc/securetty to add "ttyS0", otherwise you won't be able to login as root on the serial port. Now type "exit", and you're back at the "#" prompt. Exit again, and you're back to the menu. At this point, you can reboot. * * * You might be interested in some utilities to drive the LCD display so you have bootup information, and a "shutdown" menu available on the buttons/LCD. http://people.debian.org/~pm/mips-cobalt/lcdutils-0.2.tar.gz are the utilities to drive the LCD, and http://people.debian.org/~pm/mips-cobalt/lcd.status.patch.gz is a patch to apply in /etc/init.d/ to add a bootup status display. If you want to use the LCD, you'll need to mknod /dev/lcd c 10 140 * * * Things that don't work well (these are kernel problems, and fixes would be appreciated): * Mixing serial port and network activity. This can freeze the kernel. * Using dual channel ISDN. Packets destined to the Qube/Raq get mangled. Packets gatewaying through the Qube/Raq are OK, and a Qube makes a good on-demand ISDN router/firewall... just don't use it as a web cache or mail server in that instance. Single channel ISDN works fine. * IP tables filtering can cause crashes when packets are passing from one internal ethernet port to the other. * * * An example /etc/dhcpd.conf (may not be suitable for your needs): option domain-name-servers 192.168.1.1; option subnet-mask 255.255.255.0; default-lease-time 600; max-lease-time 7200; subnet 192.168.1.0 netmask 255.255.255.0 { option broadcast-address 192.168.1.255; option routers 192.168.1.1; } host qube { hardware ethernet 00:10:e0:00:e9:b5; fixed-address 192.168.1.222; option root-path "/mnt/nfsroot"; server-name "192.168.1.1"; next-server 192.168.1.1; } * * * Paul Martin Second revision, 27 Aug 2002