[vox-tech] Can't mount root while booting 2.6.5 kernel

ME vox-tech@lists.lugod.org
Fri, 28 May 2004 18:30:59 -0700 (PDT)


Chris Jenks said:
> On Fri, 28 May 2004, Ken Bloom wrote:
>
>> The most common cause of this problem is when your root filesystem
>> isn't compiled into the kernel and you aren't using an initrd.
>
>   Dear Ken,
>
>   It's true that I have avoided using an initrd. Do I have to use it to go
> from kernel 2.6.3 to 2.6.5? Does compiling the root filesystem into the
> kernel involve configuration options or something more?

Use of an initrd is generally something which is used for one of a few
reasons:
1) Use by distributions to create a "general purpose kernel and included
modules where by all modules necessary to boot the system far enough to
let the real filesystem take over." and
2) Used in cases where a user needs to load a kernel in a special way such
that it can change its root filesystem (such as what you may find in
certain floppy-disk based "net boot" and software RAID on root filesystem,
etc.)

The general users of Linux have little need for initrd on their systems.

How do you eliminate the need for initrd on a system? Simple, make support
for all required hardware necessary to get "/" and supported volumes
mounted an permit the booting of your machine to continue.

This means including support for your IDE (or SCSI, or other) interface to
your boot devices as a _static_ part of your kernel.
This means including support for all Filesystems used by local volumes
necessary for booting (enought to get the files from /proc, /dev, /etc and
/lib/modules/*) so that other modules ma be loaded.

Some hardware also requires supprot for bug fixes on certain kinds of
interfaces also be part of the kernel as static selections. (Seek the IDE
interface support section, and note the various IDE/ATA interface chipset
bug fixes and work arounds... if you have one of these chipsets, then you
shold enable to workaround offered as static parts of the kernel.)

Some newer hardware (e.g. ata-100) may require you to enable extra otpions
in the interface section beyond simple IDE interface support.

If you are going to use devfs, or another like it, make it a static part
of the kernel.

Anything that would be required during boot needs to be static, and in the
kernel (as a "Y" not as an "M".)

Learning how to build an initrd, and then referecing the initrd from
lilo.conf or with grub is extra work, and yet another link in the chain
for failure.

Some people think, "if enabling what is needed for boot as a static part
of the kernel is better, then I'll make everything a static part of the
kernel!" Bad idea. The kernel will probably be too big to use, and/or you
will be using memory for things you do not have any immediate need to have
reserved, due to lack of use.

Also, some things are better made as modules (like appletalk) as they can
be removed and re-instered if there is a problem.

Review yoru kernel config, and enable as "Y" any filesystems, or drives to
support devices which you have that are necessary to get /proc, /dev, /
(as well as /etc and /lib) mounted with all files available so that other
modules can be loaded from /lib/modules/* and the rest of the boot may
proceed.

HTH,
-ME