Создаем прошивку для Android своими руками. Работа с рамдиском. | 4Tablet-PC

Работаем с рамдиском (для ядер с initrd).


Статья написана на примере работы с образом ramdisk от таблетки Flytouch 2.

Сам рамдиск представляет из себя архив gz внутри которго содержится архив cpio расположенный в образе изготовленном средствами mkimage. Посмотрим на образ внимательнее.


Эта информация нам понадобится в дальнейшем при создании собственного рамдиска.

barsuk@droidtest:~/droid/installer$ mkimage -l ramdisk.img
Image Name:   hRamdisk
Created:      Sun Apr 24 16:28:14 2011
Image Type:   ARM Linux RAMDisk Image (uncompressed)
Data Size:    1485551 Bytes = 1450.73 kB = 1.42 MB
Load Address: 0x41000000
Entry Point:  0x41000000

Ок, теперь будем распаковывать рамдиск для его просмотра и\или модификации. Находим т.н. magic (1f8b08) для gz в образе, притом только первое вхождение.

barsuk@droidtest:~/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).

barsuk@droidtest:~/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 можно работать как с обычным архивом, однако нам нужно сохранить все права доступа на файлы извлеченные из этого архива. Распаковать можно например так:

barsuk@droidtest:~/droid/installer$ gzip -dc ramdisk.cpio.gz | cpio -id
6963 блоков

Теперь о запаковке рамдиска. Мы имеем распакованный рамдиск. Если мы внесли в него нужные нам правки, то его необходимо правильно собрать. Для этого удалим старый рамдиск и архив ramdisk.cpio.gz из этой папки.

barsuk@droidtest:~/droid/installer$ rm -f ramdisk.cpio.gz ramdisk.img

Далее создадим архив cpio.

barsuk@droidtest:~/droid/installer$ find ./ | cpio -H newc -o > ../ramdisk.cpio
6963 блоков

И заархивируем его в gzip.

barsuk@droidtest:~/droid/installer$ cd ..
barsuk@droidtest:~/droid$ gzip ramdisk.cpio

Теперь нам осталось создать образ рамдиска в mkimage. Адрес загрузки и точку входа возьмем из вывода mkimage -l, который мы делали в начале статьи.

barsuk@droidtest:~/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, мы сможем прошить его в устройство.

Автор:  _barsuk_


Свежие материалы:

Lenovo Tab 6. Новый Android планшет с 10,3-дюймовым дисплеем и 5G модемом на базе процессора Snapdragon 690
Обновление Android 11 в составе оболочки One UI 3.1 для Samsung Galaxy A21 выпущено и уже начало поступать на смартфоны
Vivo X80. Смартфон с процессором MediaTek Dimensity 2000 и 50-Мп камерой с оптическим 5-осевым стабилизатором изображения готовится к выпуску
WhatsApp, наконец, получил сквозное шифрование резервных копий чатов
Mobvoi Ticwatch Pro 3 Ultra GPS. Новые умные часы известного производителя официально представлены
OPPO K9s дебютирует 20 октября: процессор Qualcomm Snapdragon 778G, дисплей с частотой обновления 120 Гц и 64-Мп камера с четырьмя объективами
Honor V7 Pro 5G. Одиннадцатидюмовый Android планшет со съемной клавиатурой поступил в продажу в Китае
Honor 50 Lite. Смартфон с процессором Snapdragon 662, 64-Мп камерой с четырьмя объективами и аккумулятором емкостью 4300 мАч вскоре дебютирует в Европе