Sunday, October 19, 2014

Добавление логотопчика при загрузке

Для пояснения, где эта картинка будет показываться рассмотрим последовательность загрузки телефона:

  1. uboot или другой загрузчик, показывает логотип кампании производителя статическая картинка поменять в теории можно, но нужно понимать как загрузка происходит на низком уровне и иметь возможность изменить radio и hboot разделы.
  2. загрузка ядра и инициализация устройств, можно добавить лого именно сюда и оно  продержится пару секунд до момента старта инита и замены на анимацию загрузки
  3. загрузка инита и монтирования разделов и запуск сервисов  показывается обычная анимация из файла подобного /system/customize/resource/hTC_bootup.zip.


Для того чтобы заменить или добавить логотипчик на 2 шаг нужно сделать такие шаги:

  1. Преобразовать картинку с размером экрана(480x800) в raw формат: convert -depth 8 -size 480x800  ~/Downloads/Tux.png rgb:tux.raw
  2. Собрать програмку конвертор в формат который понимимает ядро: gcc to565.c -o to565
  3. И с конвертировать в нужный формат ./to565  -rle < tux.raw > msmlogo.rle
  4. Положить этот файл в корень ramdisk и проверить включен ли CONFIG_FB_MSM_LOGO. По умолчанию картинка должна имень название initlogo.rle, но в моем случае инит скрипт пытался чтото сделать с этой картинкой, что приводило к ребуту телефона и для избежания конфликта я ее переименовал. 


Sunday, October 12, 2014

Пересборка boot раздела для android

Собираем утилиты для распаковки образов:
git clone git://github.com/CyanogenMod/android_system_core
cd  android_system_core
gcc -o ../mkbootimg libmincrypt/*.c mkbootimg/mkbootimg.c -Iinclude
gcc -o ../unpackbootimg libmincrypt/*.c mkbootimg/unpackbootimg.c -Iinclude

Распаковываем старый образ полученный с обновления или иным путем:
./unpackbootimg -i boot.img
mkdir ramdisk
cd ramdisk/
gunzip -c ../boot.img-ramdisk.gz | cpio -id

В папке с ramdisk меняем части которые нам нужно, разрешаем отладку и отключаем проверки безопасности (при входе под adb сразу root) меняем:
--- default.prop 2014-08-07 22:35:02.481322985 +0300
+++ default.prop 2014-08-07 22:35:18.293601299 +0300
@@ -1,8 +1,8 @@
 #
 # ADDITIONAL_DEFAULT_PROPERTIES
 #
-ro.secure=1
+ro.secure=0
 ro.allow.mock.location=0
-ro.debuggable=0
+ro.debuggable=1
 persist.service.adb.enable=0
 ro.metropcs.ui=0

Соберем ramdisk обратно:
cd ramdisk/
find . | cpio -o -H newc | gzip > ../newramdisk.cpio.gz
cd ..

Упаковываем в новый boot:
cp ../z4u-kernel/arch/arm/boot/zImage .
./mkbootimg --kernel zImage --ramdisk newramdisk.cpio.gz --base 0x3b00000 --cmdline 'no_console_suspend=1 console=null' -o new_boot.img, где 0x3b00000 значение из boot.img-base, no_console_suspend=1 console=null значение из boot.img-cmdline