Somehow my 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 initrd
! Arg!
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
Duplicate the proc
and dev
environments:
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):
chroot /media/disk
Fnally, actually fix the initrd
with the following command:
mkinitrd
Now reboot. Done!
🙂