Создание ПЗУ и ядра?

Я уже некоторое время использую пользовательские ПЗУ и ядра на своем GS5, но я хочу получить четкое объяснение того, как это работает. Вот несколько вопросов:

  1. Что такое «строительство» в Android? Я слышал, что система сборки отличается от других систем Linux.
  2. В чем разница между ПЗУ и ядром?
  3. Разделены ли «часть ПЗУ» и «часть ядра»? Итак, могу ли я собрать их отдельно и установить отдельно?
  4. Как добавить драйверы устройств (например, ключи WiFi) в ядро?
  5. Включено ли ядро ​​в zip-файл пользовательского ПЗУ вместе с ПЗУ?
  6. Совместимы ли ядра с разными ПЗУ? (Например, с использованием ядра, созданного из официальных исходных кодов CyanogenMod)

Это могут быть вопросы новичка, но мне очень, очень любопытно.

Ответы (1)

1) Создание в Android может означать: - создание результата в дереве сборки Android - создание результата на платформе Android с установленными инструментами сборки - создание AOSP (Android OpenSource Project) Немного больше контекста может помочь. Согласно следующему вопросу «система сборки отличается от других систем Linux», это может быть система AOSP. На самом деле Android — это дистрибутив для телефона. Тогда создание прошивки Android для мобильной платформы эквивалентно созданию дистрибутива Linux для настольного компьютера. Вы создаете загрузчик, ядро, корневую файловую систему и некоторые дополнительные продукты (например, файловую систему восстановления, которая представляет собой специальную систему Android, образ файловой системы поставщика, SDK, NDK, Android CTS и т. д.). Способ сборки всего этого отличается от любой другой существующей системы сборки.Веб-сайт исходного кода Android . Посмотри на это :)

2) ПЗУ - не очень точный термин. Это может означать несколько вещей. Обычно ПЗУ обозначает СИСТЕМНУЮ часть полной прошивки Android для мобильной платформы, а ядро ​​​​является другой частью этой прошивки. Но иногда ПЗУ содержит все: СИСТЕМУ, ДАННЫЕ, ЗАГРУЗЧИК, Параметры ЗАГРУЗЧИКА, ВОССТАНОВЛЕНИЕ и часть ЯДРА.

3) Если ПЗУ обозначает полную прошивку, частью которой является Ядро, то ядро ​​включается в ПЗУ и сборка ПЗУ => сборка ядра. Если ROM обозначает СИСТЕМНУЮ часть Android, то оба являются отдельными, и их можно собрать и установить отдельно.

4) Android — это мобильная платформа, поэтому она работает на телефонах. Установка драйверов устройств возможна, но немного сложна, так как сильно зависит от конструкции аппаратной платформы. Для эталонных плат (платформ разработки) эти процедуры хорошо задокументированы производителями, что позволяет разработчикам делать это самостоятельно. Для закрытой платформы (например, телефона HTC или SAMSUNG) документацию получить гораздо сложнее (чаще всего требуется как минимум NDA, а иногда документация вообще отсутствует, поскольку она остается конфиденциальной информацией компании).

5) Я предполагаю, что под zip-файлом ПЗУ вы имеете в виду пакет обновлений OTA. Этот пакет может содержать все, что необходимо обновить платформе, включая (но не ограничиваясь) ядро, загрузчик, прошивку радио, прошивку TEE и т. д. Эти пакеты основаны на языке сценариев (названном edify), который позволяет выполнять очень сложные операции по обновлению.

6) Ядро привязано к аппаратной платформе (телефон <=> ядро). Однако некоторые СИСТЕМЫ могут потребовать включения определенных функций на уровне ядра. Тогда, как правило, да, ядра совместимы с любыми СИСТЕМНЫМИ разделами (при условии, что термин ПЗУ используется здесь со значением СИСТЕМНОГО раздела Android).

Надеюсь, это помогло ;-)

Возражение к 6): ядра обычно несовместимы между собой, даже если они созданы для одного и того же устройства, но для разных ПЗУ. Остальное нормально, как я вижу. +1 только за попытку написать такой длинный ответ.
При упомянутом мною ограничении (некоторые функции поставщиков могут зависеть от функций ядра) ядра полностью совместимы друг с другом. Ядро есть ядро ​​и нет ядра цианогена или ядра AOSP. На самом деле все ядра Android основаны на Linux. Обратитесь к source.android.com/source/devices.html#hikey-boards , если вам нужно убедиться.
Я должен модерировать то, что я сказал. На самом деле связыватель и другие модификации Linux, специфичные для Android, вводят некоторые соответствия между версией Android и версией Linux. Затем ядро ​​и не совместимо от одной версии к другой, но в одной и той же версии, каким бы ни был «дистрибутив» (ПЗУ, как вы его называете), ядро ​​взаимозаменяемо (я думаю, мы могли бы проверить, но они должны использовать одно и то же ядро ​​​​для одной и той же платформы ).
В значительной степени, поскольку в настоящее время стандартные ПЗУ обычно намного опережают пользовательские ПЗУ в версии ядра.
Конечно. Извините, но читать то, что я написал, действительно не очень понятно, и я прошу прощения за это. Я явно основываю свои рассуждения на неопределенных и неясных терминах, которые использую вне контекста. Я предполагаю, что это действительно неясно, тогда я пытаюсь переформулировать:
Google определяет уровень Android API (связанный с именами платформ Android, такими как Nougat, Kitkat и т. д.). Версии ядра Linux (и модификации для Android) связаны с этими уровнями API. Любое ядро ​​Linux для аппаратной платформы будет работать для любого пользовательского пространства Android с правильным уровнем API. ПЗУ — это лишь некоторая настройка пользовательской части Android, а пользовательские ПЗУ связаны с уровнями Android API.
Хм... Если это так, вот несколько связанный вопрос, который я хотел задать: версии ядра, связанные с уровнями API, довольно высоки, но почему пользовательские ПЗУ могут иметь тот же уровень API, работающий на гораздо более низком ядре . версия? У некоторых даже есть KitKat/Lollipop на очень устаревшем ядре 2.6.xx. Они просто вручную портировали все необходимые дополнительные модули?
Да. На самом деле для каждого уровня API доступно несколько версий ядра Linux. Могут быть доступны v2.x, v3.x и v4.x. Это всего лишь вопрос переноса изменений, специфичных для Android. Вот несколько хороших описаний этих изменений: quora.com/… elinux.org/Android_Kernel_Features
Ах, хорошо читать, когда у меня есть время, спасибо. Хотел бы я проголосовать больше одного раза.
добро пожаловать! Не за что :)