I've compiled my own kernels for as long as I can remember. I do so for
almost any box I use, rather than running distro supplied kernels. I think
this dates back to to the days when that was just what you did, but it also
ties in with the fact I often want to run the latest and greatest (eg for
laptop device hardware support).
One of the things I've always avoided is the initrd. I've never really seen
the point; I compile my root device driver into the kernel and thus it all
works. I've seen some suggestions that the in kernel RAID array detection
code isn't really being maintained and that in the future it'll require
userland tools to configure a RAID array, so I've been a bit worried that
I'll eventually have to learn about initrds.
In fact, that day came this weekend. My large IDE disk is dying and I
decided I needed something to replace it so I could have a proper poke.
So I bought a pair of SATA disks and found a cheap
Highpoint RocketRaid 1520
(don't buy one of these; I mistakenly thought they were better than
the good old SI 3112, but they're not. And if anyone knows of a cheap
(sub £30) SATA-II PCI card then let me know. I don't think they
exist.)
The RocketRaid is basically just a HPT372A (hpt366 driver in Linux) with
software RAID on top. Previously I've ignored such things and just used
the normal Linux RAID support, but I thought I'd give this a try with
the aid of
dmraid. This
can read several different ATARAID formats and uses device-mapper to map
the drives appropriately to keep Linux happy.
So, I install dmraid and it happily finds the RAID array and configures
it all up (though I end up with the wonderfully named
/dev/mapper/hpt37x_dabhghbgeg which is a bit unwiedly). All good.
Except, of course, that I have to run some userland to get the RAID
array up, which means I need an initrd to sort it all out if I want
/ on
it. And I do.
These days I want initramfs rather than initrd (and I needed to remember
to set
CONFIG_BLK_DEV_INITRD=y in my kernel config as it's needed for
initramfs or an initrd). I found the
initramfs-tools package and
installed it, then had a poke around for info on getting dmraid working
with it.
Debian bug #367661 discusses
such things and I've attached the patch I used from Ubuntu to the bug
report.
Then I did, as root,
update-initramfs -k 2.6.17.6 -c -v and it
magically created a
/boot/initrd.img-2.6.17.6. Passed that as the
initrd in grub and it all magically works; dmraid fires up from the
initramfs, the kernel gets to mount the RAID partition as
/ (and the
other partitions as swap and lvm) and it's all good.
Except the fact one of the disks seems to have been damaged in transit
and
eBuyer are being slow about issuing an RMA
number. Oh, and the fact the RocketRaid sucks and only seems to get
15MB/s or so. Meh. The initramfs stuff is all happy though, and a lot
easier than I expected.