As I already mentioned, I wanted to get rid of OpenSUSE on my master server and run Ubuntu on that machine instead. This proved to be a bit more difficult than expected for Ubuntu installed just fine but then refused to boot. The reason was that in the latest kernels of the 2.6 series you just can’t load the driver for the Compaq Smart Array controller (cpqarray.ko) as a module. If you do, all you’ll get is a “cpqarray: error sending ID controller”.
So, to get the beast up and running, you’ll have to boot from the CD into the rescue system. From there, mount the drive and chroot into it. Then get the packages needed to compile the kernel:
apt-get install kernel-package linux-source libncurses5-dev initrd-tools
To get all of them, you’ll have to edit /etc/apt/sources.list to include the universe repository. To be able to edit the file, you should do a export TERM=xterm first. Next, unpack the downloaded kernel sources and copy the original configuration from /boot into the source tree:
tar xjf linux-source-2.6.15.tar.bz2
ln -s linux-source-2.6.15 linux
cp /boot/config-<your_current_kernel_version> .config
Don’t bother trying to use make menuconfig – you won’t be able to see a thing. So fire up vi, search for CPQ and replace every “m” at the end of the lines found with a “y”. Save and then it’s just
mkinitrd -o ./initrd.img-18.104.22.168-ubuntu1 22.214.171.124.ubuntu1
to install your new kernel. Last, edit /boot/grub/menu.lst so your new kernel will be booted. This ismade a bit tricky by the terminal emulation so be careful to check the result using cat menu.lst.
Note: If you have another computer available it’s a lot easier to also install openssh-server on the machine you want to build the kernel on. Then copy the config file to the other machine, edit it there and copy it back to the target system. Likewise, editing of Grub’s menu.lst is a lot easier when done on an external machine.