Question : Comment afficher, modifier et recréer le nouveau fichier initrd.img sur les distributions Ubuntu, Debian, CentOS, Fedora, Red-Hat, Arch Linux ou SUSE ?
1. Comment afficher le contenu du fichier initrd.img ?
initrd.img est au format gzip. Déplacez donc initrd.img vers initrd.gz comme indiqué ci-dessous.
# cp /tftpboot/el5/initrd.img . # ls cdrom initrd.img # mv initrd.img initrd.gz
Décompressez le fichier initrd.gz comme indiqué ci-dessous.
# gunzip initrd.gz # ls cdrom initrd
Après avoir décompressé le fichier initrd.gz, l'initrd est encore au format cpio 'newc'. Extrayez donc les fichiers d'initrd en utilisant le format cpio 'newc' comme illustré ci-dessous.
Remarque : info cpi donnera plus d'informations sur le format "newc".
# mkdir tmp2 # cd tmp2/ # cpio -id < ../initrd 16524 blocks
Vous pouvez maintenant afficher le contenu du fichier initrd.img
# ls bin dev etc init modules proc sbin selinux sys tmp var
2. Comment modifier le contenu de l'image et recréer une nouvelle image ?
Après avoir extrait le fichier comme indiqué ci-dessous, apportez les modifications appropriées à l'un de ces fichiers. Recompressez ensuite les fichiers dans l'archive à l'aide des commandes suivantes. Recompressez les fichiers modifiés au format cpio 'newc'.
# 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
Gzippez le fichier d'archive.
# 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
Déplacer le fichier en tant que fichier image. Vous pouvez utiliser newinitrd.img comme nouvelle image de démarrage.
# mv newinitrd.gz newinitrd.img # ls -l newinitrd.img -rw-r--r-- 1 root root 6649867 Jul 2 14:50 newinitrd.img