System requirements
Linux with recent 2.6.x kernel and udev. You system should have /dev/disk/by-uuid/ directory. If it does not have it then your version of udev is probably too old. It does not mean that mkinitramfs will not boot, it just will require more work from you, like writing your own plugin.
Installation
mkinitramfs depends on libbash - please install it from http://libbash.sourceforge.net
Installing mkinitramfs is simple:
./configure --prefix=/usr make install
Preparing your system
Become root. Find out what is the UUID of your root file system:
#> mount |grep ' / ' /dev/sda1 on / type ext3 (rw)
I.e. /dev/sda1 is your current root device. Next:
#> vol_id --export /dev/sda1 ID_FS_USAGE=filesystem ID_FS_TYPE=ext3 ID_FS_VERSION=1.0 ID_FS_UUID=eb93b491-783f-4005-a237-68fd5c6f4ea0 ID_FS_UUID_ENC=eb93b491-783f-4005-a237-68fd5c6f4ea0 ID_FS_LABEL=200001060036 ID_FS_LABEL_ENC=200001060036 ID_FS_LABEL_SAFE=200001060036 #> UUID=eb93b491-783f-4005-a237-68fd5c6f4ea0
Oh! That gave you pretty much info about your root file system. Now please check that /dev/disk/by-uuid/$UUID exists. If it does not, please send support request.
Building initramfs image
#> mkinitramfs --help
mkinitramfs-0.9.9, developed by Hai Zaar, Gil Ran and Alon Keren.
usage: mkinitramfs -h|--help
mkinitramfs [-o|--output=<output file>] [--uuid=<UUID>]
[--with-splash] [--with-console=<console>|--without-console]
[--with-cd] [--with-evms] [--with-dmraid] [--with-mdraid] [--with-lvm2]
[--with-raidify]
If you do not use dmraid, mdraid, lvm and other scary things, simply invoking mkinitramfs (as root) will create /boot/initramfs-$(uname -r).cpio.gz. Now you can edit /boot/grub/menu.lst and amend initrd line to make it point on new initramfs image.