The initial ramdisk (initrd) does exactly what the name says. It provides a disk by using some RAM space. For this reason you don't want an initrd image to be too big: it will take away precious memory from your applications. However, for development it can be a very welcome solution. An initrd image is placed in memory and then its location information is passed to the kernel. For a ramdisk that is meant to be used permanently the kernel argument keepinitrd is passed to the kernel too.
When you build a kernel and want the modules in the rootfs, use: