Как портировать UEFI на свой телефон (где найти необходимую информацию)?

Скажем так, я даже не прошу, чтобы за меня сделали или 'от и до' озвучили порядок действий. Я просто хочу понять, где мне искать нужную информацию, получить какие-то рекомендации, что и как делать.

Так вот, я намерен портировать на свой телефон UEFI - будь то уже устаревший EFIDroid, а лучше Tianocore, как на SDM845 (мой девайс на SDM660). Конкретно на мой девайс нету EDK. Видел на Pixel 3 и Xiaomi lavender порты EDK2. Но я хочу собрать, с нуля, на свое устройство, по понятным причинам. Однако EFIDroid устарел, а я не нашёл внятного ответа, что делать. Смотрел исходники EDK2: казалось бы, достаточно выдернуть dtb (через magiskboot легко это сделать), xbl.img (/dev/block/bootdevice/by-name/xbl), и дело за малым. Но я вообще понятия не имею о самом процессе сборки и работы EDK-II, да на ряде девайсов этот EDK все равно крайне нестабильно работает. Так что мне лучше пройти тернистый путь сборки из исходников по гайдам от умельцев или самой Tianocore.


Ответы (1 шт):

Автор решения: Kernel

Увы, чтобы портировать UEFI на свой девайс, недостаточно просто выдрать XBL и DTB из памяти устройства, а информации на эту тему действительно довольно мало... Я в попытках портировать UEFI EDK2 на SDM665 (уже как полгода)

Следует проделать действительно сложную работу, вот несколько ключевых шагов на ранних этапах:

  1. Начать нужно с выбора исходного кода какого-либо другого устройства (например lavender), который вы измените под ваши нужды

  2. Далее следует вытащить XBL из устройства и разобрать его на DXE модули и засунуть в папку Binary в вашем исходном коде

  3. Выдёргиваем DTB из устройства и помещаем в наш исходный код

  4. Пытаемся собрать... Начинается небольшая борьба с починкой старых зависимостей (решаются легко если уметь гуглить)

  5. Если у нас всё собралось, то конечно ничего работать не будет (стоит привыкнуть, ибо на ранних этапах может быть так, что вы будете словно искать ошибку в стоге сена, так как у вас не будет даже вывода лога (я боролся с тенью около месяца, после у меня появилась отладка через framebuffer))

  6. Начался этап редактирования кода. Следует правильно выбрать обьём памяти, который будет использовать EDK 2 для своих нужд (файл .dsc, строчка gArmTokenSpaceGuid.PcdSystemMemorySize)

  7. Из XBL стоит также извлечь uefiplat.cfg и по нему редактировать файл DeviceMemoryMap.h

Это довольно поверхностно, дальше вам нужно будет самим "сделать исследовательскую работу" (углубиться в историю портов UEFI EDK2 на разные устройства Pixel 3 XL и его форки), так же стоит заглянуть в официальную документацию EDK2 и изучить основные концепции, методы отладки и т.д., могу ещё сказать, что на устройствах, имеющих XBL, из коробки работает UEFI, но он специально сконфигурирован под функции загрузки Android, а так же работы протоколов типа Fastboot и другие.

Извините, если отбил желание занимать этим действительно интересным делом, но вам стоит знать то, с чем вам предстоит столкнуться. Желаю удачи!

→ Ссылка