How do I edit the initrd.img in the RHEL 5.1 boot disk?
Hello,
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 (http://www.faqs.org/docs/Linux-HOWTO...WTO.html#ss6.2) 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. |
Hi,
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. Code:
zcat /boot/initrd-$(uname -r).img | cpio -itv | less |
Thanks for the help! That works like a charm.
|
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. |
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 :) Ian |
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 |
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 05:17 PM. |