Как извлечь данные из файла uInitrd
В файле uInitrd как правило содержится корневая файловая система той или иной системы.
Если посмотреть информацию о файле используя стандартную утилиту linux - file то увидим примерно следующее:
$ file uInitrd uInitrd: u-boot legacy uImage, debian-installer ramdisk, Linux/ARM, RAMDisk Image (gzip), 19068823 bytes, Thu Apr 24 12:07:39 2014, Load Address: 0x00000000, Entry Point: 0x00000000, Header CRC: 0x7CC7FE2B, Data CRC: 0x1847C3DF
Файл представляет собой образ рамдиска подготовленный с помощью утилиты mkimage:
$ mkimage -l ./uInitrd Image Name: debian-installer ramdisk Created: Thu Apr 24 12:03:25 2014 Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 4839295 Bytes = 4725.87 kB = 4.62 MB Load Address: 00000000 Entry Point: 00000000
Утилита mkimage просто добавляет к началу файла свой заголовок, который нужно убрать.Удалить заголовок можно следующим образом:
$ dd if=./uInitrd of=initrd skip=64 bs=1
Смотрим на полученный файл опять утилитой file:
$ file initrd initrd: gzip compressed data, was "initrd", from Unix, last modified: Thu Apr 24 12:03:14 2014, max compression
Пытаемся разархивировать:
$ gunzip initrd gzip: initrd: unknown suffix -- ignored
Не получается по причине того что расширение у файла должно быть gz. Исправляем эту проблему так:
$ mv initrd initrd.gz $ gunzip initrd.gz
Смотрим информацию на извлеченный из архива файл:
$ file initrd initrd: ASCII cpio archive (SVR4 with no CRC)
Для извлечения данных из архива cpio можно использовать команду:
$ cpio -i -F initrd
Либо в файловом менеджере правый клик на файле и потом "Извлечь сюда"