Працюємо з рамдіском (для ядер з initrd).
Сам рамдіск вдає із себе архів gz всередині которго міститься архів cpio розташований в образі виготовленому засобами mkimage. Подивимося на образ уважніше.
Ця інформація нам знадобиться надалі при створенні власного рамдіска.
/ Droid / installer $ grep -P -a -b -m 1 --only-matching '\ x1F \ x8B \ x08' ramdisk.img | cut -f 1 -d:
64
Тепер маючи позицію початку gzip-а витягуємо його з образу (читати блоками по 64 байта, порпустів перший блок - bs = 64 skip = 1).
/ Droid / installer $ dd if = ramdisk.img bs = 64 skip = 1 of = ramdisk.cpio.gz
23211 + 1 результатів лічено
23211 + 1 результатів написано
скопійований 1485551 байт (1,5 MB), 0,0738819 c, 20,1 MB / c
Далі до отриманого файлом ramdisk.cpio.gz можна працювати як зі звичайним архівом, проте нам потрібно зберегти всі права доступу на файли витягнуті з цього архіву. Розпакувати можна наприклад так:
/ Droid / installer $ gzip -dc ramdisk.cpio.gz | cpio -id
6963 блоків
Тепер про запаковування рамдіска. Ми маємо розпакований рамдіск. Якщо ми внесли в нього потрібні нам правки, то його необхідно правильно зібрати. Для цього видалимо старий рамдіск і архів ramdisk.cpio.gz з цієї папки.
/ Droid / installer $ rm -f ramdisk.cpio.gz ramdisk.img
Далі створимо архів cpio.
/ Droid / installer $ find ./ | cpio -H newc -o>. /ramdisk.cpio
6963 блоків
І заархівіруем його в gzip.
/ Droid / installer $ cd.
barsuk @ droidtest:
/ Droid $ gzip ramdisk.cpio
/ Droid $ mv ramdisk.cpio.gz ramdisk.img
barsuk @ droidtest:
/ Droid $ mkimage -T ramdisk -A 'ARM' -C none -n 'hRamdisk' -a 0x41000000 -e 0x41000000 -d ramdisk.img newramdisk.img
barsuk @ droidtest:
/ Droid $ mv newramdisk.img ramdisk.img
Тепер помістивши отриманий ramdisk.img в папку android на прошивочно карті або за допомогою burntool, ми зможемо прошити його в пристрій.