initrd broke (read: disappeared) while installing some critical updates on my OESsp2 server. Not sure how, and I’m not sure I care, but it ticked me off. The system will not boot without an
Anyway, while researching, I found a great write up by Sander van Vugt, that I used for reference. For brevity, I’ve written an adaptation of the required steps below. This really applies to any Linux distro (as long as it uses an
initrd), mine just happened to be an OESsp2 Linux server.
Boot the system using a “Live” Linux cd or something. Any distro will do, as long as you can mount the filesystems. For instance, you can’t use an old Suse 9.1 Live disk that you have lying around if you happen to have some Reiser filesystems (9.1 did not include Reiser).. believe me, I know… 😉 I ended up using the current (at the time of this writing) Opensuse 11 beta that worked great, since it boots “live”.
Once booted up, mount all the real disk partitions under a fake root. I’m using
/media/disk as my fake root (you can use something different, just make sure to change it throughout all the references below). You may or may not have multiple partitions, just be careful to be accurate. Here’s my example of what I did:
mount /dev/cciss/c0d0p6 /media/disk
mount /dev/cciss/c0d0p1 /media/disk/boot
mount /dev/cciss/c0d0p5 /media/disk/var
mount -t proc none /media/disk/proc
mount -o bind /dev /media/disk/dev
Set your root environment (because
mkinitrd really prefers to run at its own root):
Fnally, actually fix the
initrd with the following command:
Now reboot. Done!