По результатам прошлой записи у нас появился свой локальный репозиторий с собранными файликами адаптации hybris, теперь пора собрать установочный образ!
Итак чтобы распаковать initram нам нужно:
1. https://github.com/osm0sis/mkbootimg - идём сюда качаем собираем устанавливаем
2. Разжимаем образ:
hybris-boot.img-base
hybris-boot.img-cmdline
hybris-boot.img-kerneloff
hybris-boot.img-ramdisk.gz
hybris-boot.img-tagsoff
hybris-boot.img-board
hybris-boot.img-dtb
hybris-boot.img-pagesize
hybris-boot.img-ramdiskoff
hybris-boot.img-zImage
Названия более или менее объясняют что это и куда. Нам нужен hybris-boot.img-ramdisk.gz - зазипованый cpio архивчик
3. Распаковываем его:
1. https://github.com/osm0sis/mkbootimg - идём сюда качаем собираем устанавливаем
2. Разжимаем образ:
Код BASH:
Получится много файликов:
mkdir img unpackbootimg -i hybris-boot.img -o img
hybris-boot.img-base
hybris-boot.img-cmdline
hybris-boot.img-kerneloff
hybris-boot.img-ramdisk.gz
hybris-boot.img-tagsoff
hybris-boot.img-board
hybris-boot.img-dtb
hybris-boot.img-pagesize
hybris-boot.img-ramdiskoff
hybris-boot.img-zImage
Названия более или менее объясняют что это и куда. Нам нужен hybris-boot.img-ramdisk.gz - зазипованый cpio архивчик
3. Распаковываем его:
Код BASH:
дальше работаем с ним как с обычным cpio архивом
gzip -d img/hybris-boot.img-ramdisk.gz mv img/hybris-boot.img-ramdisk img/hybris-boot.img-ramdisk.cpio
В прошлой заметке при создании пакета droid-version-hal у меня возникли некоторые вопросы с макросами. Вроде бы разобрался с ними - выкладываю сюда:
have_kernel_modules - если ядро собирается не монолитом, а с модулями
have_camera - если есть камера. Да она работает через gstreamer :)
have_mm_omx - если есть поддержка OpenMAX (пока не понял что есть это)
have_vibrator - есть ли вибрация
have_droid_bin - пакует /system в отдельный RPM
have_led - есть ли у устройства сигнальный светодиод
have_kernel_modules - если ядро собирается не монолитом, а с модулями
have_camera - если есть камера. Да она работает через gstreamer :)
have_mm_omx - если есть поддержка OpenMAX (пока не понял что есть это)
have_vibrator - есть ли вибрация
have_droid_bin - пакует /system в отдельный RPM
have_led - есть ли у устройства сигнальный светодиод
Итак, по результатам прошлой серии у нас появился готовая сборка hybris для вашего устройства. Пора её упаковать. Это необходимо, для того, чтобы правильно встроить droid-hal-init .
ВНИМАНИЕ! В данном тексте приводится сборка droid-hal для nexus5 с кодовым именем hammerhead если вы собираете не под это устройство, то надо заменить и в тексте и В НАЗВАНИЯХ ФАЙЛОВ hammerhead на имя вашего устроства!
ВНИМАНИЕ! В данном тексте приводится сборка droid-hal для nexus5 с кодовым именем hammerhead если вы собираете не под это устройство, то надо заменить и в тексте и В НАЗВАНИЯХ ФАЙЛОВ hammerhead на имя вашего устроства!
Видео:
https://www.youtube.com/watch?v=D4UhPIS3iEw
Ну что сказать, железка показывает графику. И это хорошо. Lipstick не запускается, но я над этим работаю.
https://www.youtube.com/watch?v=D4UhPIS3iEw
Ну что сказать, железка показывает графику. И это хорошо. Lipstick не запускается, но я над этим работаю.
Тут оказывается надо ещё в исходники лезть бионика из за несовместимости некоторых вызовов. Таких как errno и tls. Спускаться так низко по стеку ни когда не случалось. Если честно доки пришлось читать в огромном количестве и многие из них, как патч в официальном репосе, только запутывал. На данный момент получился таким...
Если возникает ошибка:
Код BASH:
Это значит в файле $ANDROID_ROOT/hybris/hybris-boot/fixup-mountpoints отсутствует ваше устройство. Ради эксперимента на 90 строчке можете добавить своё. Не факт конечно что соберётся, но мне помогло.
find: `device/*/generic': No such file or directory find: `device/unknown': No such file or directory find: `device/android': No such file or directory hybris/hybris-boot/Android.mk:67: ********************* /boot appears to live on ERROR: *fstab* not found hybris/hybris-boot/Android.mk:68: ********************* /data appears to live on ERROR: *fstab* not found hybris/hybris-boot/Android.mk:71: *** There should be a one and only one device entry for HYBRIS_BOOT_PART and HYBRIS_DATA_PART. Stop.
Для работы sailfish нам из cyanogenmod требуется
/system/lib
/system/bin
/system/etc
/system/build.prop
/build.prob
/system/framework
/system/usr/icu/icudt51l.dat
/system/usr/share/zoneinfo/tzdata
Вроде бы ни чего не забыл...
/system/lib
/system/bin
/system/build.prop
/build.prob
Вроде бы ни чего не забыл...
Сейчас будет краткий рассказ о том, как программирование вызывает паранойю. Когда ты программируешь и погружаешься в новую среду (а для меня среда ядра linux, android и прочее новая среда) то ты по умолчанию считаешь себя дебилом, а всех в округе гениями. Но иногда продакшен код, который используется в куче мест сделан так, что...не будем матом.
Суть: графикой в моей железкой заведует программулина pvrsrvinit которая, как я понял, обращается к ядру и говорит мол мне надо столько то памяти и прочее. Прога закрытая и что там происходит внутри мне не известно. И работает она кривоватенько...причины такой работы мне не понятны. Но суть в том что:
1 - Ядро создаёт устройства с такими правами доступа, что pvrsrvinit к ним не имеет доступа
2 - Если ты переставляешь права доступа и запускаешь pvrsrvinit, то он запускается и снова выставляет права так, что hwcomposer не хочет запускаться.
Это в кратце...а полную историю
Суть: графикой в моей железкой заведует программулина pvrsrvinit которая, как я понял, обращается к ядру и говорит мол мне надо столько то памяти и прочее. Прога закрытая и что там происходит внутри мне не известно. И работает она кривоватенько...причины такой работы мне не понятны. Но суть в том что:
1 - Ядро создаёт устройства с такими правами доступа, что pvrsrvinit к ним не имеет доступа
2 - Если ты переставляешь права доступа и запускаешь pvrsrvinit, то он запускается и снова выставляет права так, что hwcomposer не хочет запускаться.
Это в кратце...а полную историю
Ну и где доказательства про 18 запусков у маска в 2018 году? Или ты предпочтешь и тут...