Linux Kernel Boot – Booting Without Initrd

bootinitrdkernelkernel-moduleslinux

Is it possible to boot linux without a initrd.img ? I am planning to add default drivers as a part-of-kernel itself and avoid initrd completely.

What are the modules that should be made part-of-the-kernel instead of loadable modules ?

Best Answer

It is, unless your root volume is on an LVM, on a dmcrypt partition, or otherwise requires commands to be run before it can be accessed.

I haven't used an initrd on my server in years. You need at a minimum these modules built in:

  • the drivers of whatever controller where your root volume disk lives
  • the drivers necessary to "get to" that like PCI, PCIe support, USB support, etc.
  • the modules that run the filesystem mounted on it

    It's also a very good idea to build in your network card drivers as well.

    I've found that lspci/lsmod can help you here from your currently running kernel, look at what's there and use the make menuconfig search option before compiling to find where to enable the modules.