View Single Post
Old 08-20-2007, 01:54 AM   #2
kilgoretrout
Member (11 bit)
 
Join Date: Apr 2003
Posts: 1,524
I haven't used loadlin in so long I've forgotten most of what I once knew about it. In general, however, an initrd is used to load modules necessary to complete a boot up, typically filesystem support and device support for hard drives on sata, scsi and other interfaces.

Modern kernels can have device support built into the kernel or have the support in the form of loadable kernel modules. However, in order to load these modules you have to be able to mount the root fileystem which is where these modules reside. The usual strategy followed by most distros is to compile a kernel with a ton of module support for a wide range of devices but have limited "built in" kernel support for devices. Now to get all your hardware detected during a boot, you need to be able to detect the hard drive where the root filesystem is located and you need to have support for the filesytem used. Since a lot of this stuff is typically module only supported you need to have a way to load the needed modules without mounting and reading them from the root filesystem. That's the purpose of an initrd. It gives you the modules needed to mount your root filesystem so you can load the other driver modules.
The slackware kernel is large because of the it was compiled with module support for a huge amount of hardware. The install routine detects your hardware and determines which modules need to be loaded. It also determines what needs to be in your initrd so the root filesytem can be mounted.
kilgoretrout is offline   Reply With Quote