-   Red Hat (
-   -   How do I edit the initrd.img in the RHEL 5.1 boot disk? (

Ken B 06-09-2008 09:00 PM

How do I edit the initrd.img in the RHEL 5.1 boot disk?

I am trying to make a RHEL 5.1 installer that runs from a USB flash drive. I would like to place a kickstart file in the install system's root directory, so that I may use it with ks=file:/ks.cfg. I understand that I must modify the contents of the initrd.img located in the <RHEL 5.1 CD>/images/diskboot.img.

I found a few websites that say initrd.img is a gzipped ext2 filesystem. They give the following procedure for opening initrd.img:

# gzip -dc /mnt/boot/initrd.img >/tmp/initrd.ext2
# mkdir /mnt/initrd
# mount -o loop /tmp/initrd.ext2 /mnt/initrd

However, I have had no success with this. gzip does successfully decompress the file, but when I attempt to mount it, mount does not recognize the filesystem type. When I specify the filesystem type as ext2 with

# mount -t ext2 -o loop /tmp/initrd.ext2 /mnt/initrd

the output suggests that I may have a bad superblock. (Sorry, but I'm not able to reproduce the exact output at the moment.)

Can anyone please shed some light on my problem? Thank you very much.

blacky_5251 06-10-2008 04:40 AM


You're partly correct. The initial ram disk image is a compressed file, but it is a compressed cpio archive. Try this command to see what is inside your initrd file.

zcat /boot/initrd-$(uname -r).img | cpio -itv | less
You should now see the content of the file.

Ken B 06-10-2008 07:34 AM

Thanks for the help! That works like a charm.

trev_uk 07-17-2008 06:53 AM

Hi there, I am having the same problem.
Could you advise which command will extract the kickstart initrd.img
and then how we can mount it in rhel5.

I can view the files with cpio but I want to extract them so I can add new net driver modules.

blacky_5251 07-17-2008 05:54 PM

If you extract the files from the initial ram disk file, you just have a bunch of files - not a mountable file-system. If you want to modify your current initial ram disk file by adding modules, use the mkinitrd command to build a new initrdxxx.img file.

Perhaps some more info about what you're doing might help us provide a better response for you :)


trev_uk 07-18-2008 04:59 AM

I was working on hacking rhel5 kickstart initrd to add new network drivers. I have completed this but for other users here's how:

gzip –dc initrd.img >initrd.x
cpio –id < initrd.x

This will extract all folders.
I extracted the modules.cgz & added new kernel module drivers.
Repackage using cpio & gzip.
Put it back into initrd/modules folder.
Modify modules/pci.ids with details of your new modules.
Then use mkisofs & create a kickstart CD

Ken B 07-18-2008 08:34 AM

Here's the process I used. The important trick is specifying the "newc" cpio format.

1 Decompress.
gunzip < initrd.img > initrd.cpio
2. Append files.
ls myfile | cpio -oAO initrd.cpio -H newc
3. Recompress.
gzip -cz initrd.cpio > initrd.img

All times are GMT -5. The time now is 12:24 AM.