initrd stands for "initial ramdisk" and is used by Linux and other Unix-related operating systems in their boot procedure.
Phase one of this two-phase process is the kernel boot. It will load the initrd file and mount it in RAM as a RAM disk. By executing executables contained within the cached ramdisk it loads up initial necessary file system drivers for a file system to operate. During this process, devices like USB devices, network cards, RAID arrays and others will get mounted so that the phase two process can boot up the operating system normally.
Note that it is possible to boot Linux without using an initrd, if nothing needs to be loaded before the file system is mounted (i.e. the device on which the main file system resides does not need external drivers to be loaded). This is usually the case for IDE based systems. In this case, it simply mounts the real file system and then configures the devices as normal. On SCSI systems, special drivers may be necessary, in which case the system will not boot without an initrd image to load them.
Having a place to run code before filesystems are mounted with write access is also important when resuming from hibernation; Suspend2 requires special steps to be taken at this stage to avoid filesystem corruption .
The usual program for creating an initrd image is mkinitrd. However, some alternatives exist, such as Yaird.
The ramdisk initrd file is usually adopted in compressed filesystem form, therefore found as initrd.gz. In order to access its contents, it is possible to decompress it using Gzip and then to mount it as a loopback file system using the mount command: mount -o loop [file] [mount point]. Later initrd.gz files for initramfs, the successor to initrd, are created using cpio. The contents of these initrd.gz files can be unpacked using the command line: gzip -dc < [file] | cpio -i -d [destination]