-   Linux - Newbie (
-   -   Error compiling kernel in FC4 (

ilyushin 08-16-2005 10:12 AM

Error compiling kernel in FC4
Hi all,

I'm trying to compile the new kernel (which I downloaded from in my FC4. I managed to compile them successfully in the first few attempts (usually with minimum modifications to the default configuration). But the resultant modules were too many and the system was a bit too slow for my taste. I decided to trim it down to speed up the operation, by selecting only the modules which (I think) were quite enough for my configuration. After the xconfig, make bzImage, make modules && make modules_install went fine (though I did notice many warnings). After that I issued the following command:

/sbin/mkinitrd /boot/initrd-

But I got the following error:

Error: No module piix found in kernel, Aborting.....

What could be the feature that has to be enabled (or disabled) to rectify this error? I tried changing the configurations many times (without trying to make them bloated), but the error remains the same. Or is the error due to something else?

I would love to have some advice on this matter.


sundialsvcs 08-17-2005 02:23 PM

Probably the simplest thing to do would be to eliminate the initrd ("initial ram-disk") altogether. If you do need one, then make install should build it. But you really do not need one, and really do not want one.

Since this is the newbie forum, let me briefly explain what initrd's are, why we have them and what they do...

This file is a complete disk-image, directories and all, usually compressed. When the system boots, this disk-image is loaded into memory (usually by the boot-loader), decompressed, and made available as a tiny, mounted, disk. The kernel searches for and executes a single command-file off of this disk, which usually runs under the auspices of a microsocopic special-purpose shell called nash. What this command-file is supposed to do is to perform any tasks that need to be run before the "real" kernel can boot. This is where the pre-boot menus of a rescue-disk come from. It's also where modules for SCSI support or ext3 filesystem support can be loaded, before the kernel starts, so that the kernel can start.

Unless a particular action must be performed so that the kernel can finish starting, such as loading a certain disk-device driver or filesystem handler, you don't need an initrd. Linux does not have to have one. Once the system is up-and-running, there are plenty of other opportunities to get a kernel-module loaded.

If you are building your own kernel, you know what it needs to boot on your hardware, and you can simply insert that support directly into the kernel itself. This does not have to include "everything." I'm not saying "don't modularize anything." Once the core kernel is up and running, with the kernel module-loader daemon running and all of that, you're free to load whatever modules you wish in order to complete the startup sequence. All that must be resident are the device-drivers and filesystems that you must use to access those devices that are required at boot-time.

Also... with 2.6 the kernel-module conventions have changed considerably anyhow. I'm not fully schooled on how they affect initrd's, but the solution is the same: avoid the issue.
