Здравствуйте! Наверняка я не единственный, у кого была идея полностью заменить Android на Linux на мобильном устройстве. Мотивов к этому может быть много - гибкость Linux, возможность сменить граф. оболочку, лёгкость (для слабых устройств), но ИМХО самый ключевой козырь Linux - постоянная обновляемость. В отличие от ПК, где обновления ОС зависят только от её разработчика, на мобильных устройствах обновления ПО зависят от вендоров самих устройств. А всё из-за того, что ПК у нас архитектуры x86(_64), и у них существуют стандарты аппаратуры IBM PC и загрузки BIOS/UEFI. А на мобильных устройствах у нас архитектура ARM, которая является лишь стандартом набора команд процессора. В результате на ПК мы имеем стандартный механизм загрузки, предоставляющий интерфейсы для контроля базового оборудования без драйверов со стороны ОС, что позволяет (в случае с Linux), загружать ядро без необходимости его пересборки под каждое устройство.
Сразу встаёт вопрос - "а как же дрова на остальное оборудование, не поднятое BIOS/UEFI?" В Debian/Ubuntu присутствует хитрое решение этой проблемы - система DKMS. Она позволяет единожды написать драйвер в виде модуля ядра, соответствующего формату dkms, и при обновлении ядра она автоматически оптимизирует драйвер под новую версию ядра. Таким образом, обновления ОС Debian на ПК не зависят от вендора самого ПК.
На ARM мы не имеем самого главного - стандарта загрузочной системы. На каждую плату - свой минимальный загрузчик, и для запуска на ней ядро Linux требует пропатчивания вендором, в результате обновления ядра вешаются на вендора устройства, и, зачастую отсутствуя, отключают нас от обновлений самой системы. Но мало кто знает, что под ARM тоже существует стандартный UEFI. Мною с моим RPi 3 B+ было доказано, что
UEFI + Debian + DTB + DKMS = Debian ARM Anytime Upgrade.
Напрашивается закономерный вопрос: если бы мы имели
UEFI под все ARM устройства, мы бы имели
постоянно обновляемый Debian под все устройства?
По сути да, есть небольшая проблема с дровами, но насколько я понял при наличии навыков их можно достать из дерева исходников ядра (и даже автоматизировать этот процесс). Соответственно, самая сложная часть - UEFI. Был когда-то неплохой проект EFIDroid, позволявший собирать UEFI под все устройства с Little Kernel (т. е. все qcom устройства), но ввиду отсутствия каких-либо финансирования или поддержки автора был заброшен, причём в процессе перехода на новый способ без LK (т. к. в новых qcom устройствах его уже не используют), в результате все репозитории оказались в нерабочем состоянии. Я откатил их до рабочих версий, но так ничего и не завелось (проект-то так и остался pre-alpha). Собственно, я и создал эту тему, чтобы вынести свой вопрос на общее обозрение -
есть ли люди, которые знакомы с автором EFIDroid, имеющие рабочие варианты, или знающие, есть ли автора новый вариант EFIDroid (без lk), или прочие разработчики или программисты, которые знакомы с EDK II, или у которых есть другие способы портирования UEFI на ARM(64) устройства, если в наличии только kernel source code tree для них? Есть ли вообще кто-то, кто этим интересуется и в этом "шарит"? Хотелось бы
систематизировать всю имеющуюся информацию, и, возможно, даже выйдет что-то собрать.
К слову,
что уже есть:
Что хочется поиметь:
- Работающий
UEFI Debian хотя бы под одно из имеющихся у меня устройств
- Умение запускать 64-битное ядро Linux через 32-битный UEFI
А также, если у кого-то есть способ загружать
неизменённое ядро Debian на ARM устройствах, пишите сюда.
Сообщение отредактировал Edk2Arm - 30.06.19, 18:44Причина редактирования: UEFI частично заведён