chroot'ed mkinitrd after yum upgrade builds nonfunctional initrd
I have a rather specialized FC5->6 upgrade problem for which I would appreciate some expert advice.
My system (ASUS A7N8X, Athlon XP 2400+) runs on two SATA disks attached to a Promise controller. The system also has a small PATA hard drive used for /boot, attached to the motherboard controller. The Promise controller driver was nonfunctional in the initial FC6 release (see <http://forums.fedoraforum.org/forum/showthread.php?t=128298>) and so I held off on upgrading from FC5 until a kernel was out that would support the card correctly.
Of course, the kernel on my install CDs is still the old kernel, and crashes on an attempt to install when it tries to load the sata_promise driver, but I figured I could go through the steps of the Yum Upgrade FAQ (fedoraproject.org/wiki/YumUpgradeFaq) and get things to work.
So I backed up my system, dup'ed my FC5 partitions, and did the yum upgrade. After the upgrade from the repository on the install CDs, I upgraded from the net via yum's --installroot option and also installed the new kernel via yum.
When I booted, the initrd didn't work:
mount: could not find filesystem '/dev/root'
setuproot: moving /dev failed: no such file or directory
setuproot: error mounting /proc: nsfod
setuproot: error mounting /sys: nsfod
setuproot: mount failed: nsfod
Kernel panic - not syncing: attempted to kill init!
I've tried several times to generate my own initrd using the FC6 system via chroot, but I always get this message while booting. I think the first line might be the key to the problem, and the setuproot errors just cascade from the failure to do the mount correctly.
I'm using mkinitrd in this way:
chroot /mnt/other mkinitrd -f /boot/new-initrd-2.6.18-1.2869.fc6 2.6.18-1.2869.fc6
I see a number of different ways to try to skin this particular cat:
1) Get the right incantation to build the initrd from via chroot from the FC6 system.
- Alternately, I may not be setting up the chroot environment correctly in the FC6 system. I mount sysfs
and proc under the chroot, but it just occured to me I don't mount /dev there. Is this causing the problem?
2) Boot FC6 without an initrd, then build one on the already-installed system
- If I knew how to do this, I'd have done it already! AFAIK, the stock FC6 kernels need to get started by
the initrd because they don't have the drivers for SATA already loaded. But if there's a way to boot the
FC6 kernel without using an initrd, and have it work with an LVM partition on a SATA drive, I'm all ears.
3) Install FC6 to the PATA drive, then build an initrd from there which will work on the main root.
- This probably wouldn't take too long, and I'd expect I could get it to work, but I'd need a way to keep the
Promise card driver from loading during ithe install. Would the 'noprobe' option work for this?
4) Get rid of the FC6 installation and redo the yum upgrade with the new kernel
- This is what Is should have done in the first place, but it would take an awful long time to back up and do
it over. I'd prefer to first try one (or more) of the previous three that would both take less time and have a
higher likelihood of success.
Thanks for your attention to this post - I know it's been a long one - and for any help you may be able to provide.