I have a SCSI RAID system with a custom kernel and no initrd. I moved its disk into a system with a different SCSI chipset, and I did this before building a new custom kernel (because I knew Knoppix would help me make that work).
I booted the new system from a Knoppix CD, brought the RAID volumes (RAID5 for /, RAID1 for /boot) online with mdadm, fsck'd them (just because you're paranoid doesn't mean they aren't following you :-), mounted them, and chroot'd into the mount of my / partition.
Then I was able to build a new kernel (with the right SCSI driver) and install it where grub can find it. With Knoppix, chroot is handy for other things too, like upgrading or downgrading packages. A similar approach would work for making a new initrd, in a system which needs modules to mount the root partition, if hardware changes require a new initrd.