initrd.img is in gzip format. After unziping the initrd.gz file, the initrd is further in cpio ‘newc’ format. So extract the files from initrd using cpio ‘newc’ format as shown below. Note: info cpio will give more information about ‘newc’ format. mkdir /tmp/initrd; cd /tmp/initrd gunzip -c /boot/initrd.img-2.6.39-2-amd64 |cpio -id 63657 blocks Now you can view the content of initrd.img file # ls bin dev etc init modules proc sbin selinux sys tmp var After extracting the file as shown below, make appropriate modification to any of those files. Then pack the files back into the archive using the following commands. Pack the modified files back to cpio ‘newc’ format. # find . | cpio --create --format='newc' > /tmp/newinitrd 16524 blocks # ls /tmp/ cdrom initrd newinitrd tmp2 # ls -l /tmp/newinitrd -rw-r--r-- 1 root root 8460288 Jul 2 14:50 /tmp/newinitrd Gzip the archive file. # gzip newinitrd # ls cdrom initrd newinitrd.gz tmp2 # ls -l newinitrd.gz -rw-r--r-- 1 root root 6649867 Jul 2 14:50 newinitrd.gz Move file as an image file. You can use the newinitrd.img as your new boot image. # mv newinitrd.gz newinitrd.img # ls -l newinitrd.img -rw-r--r-- 1 root root 6649867 Jul 2 14:50 newinitrd.img