В чем разница между ядром Linux и ядром Android?

Какие модификации сделаны в ядре Linux, чтобы сделать его ядром Android? Под этим вопросом я подразумеваю, в чем разница между ядром Linux и ядром Android?

Ответы (3)

Я думаю, что этот Android Source — отличная документация для понимания этого.

А вот список изменений, сделанных из основного ядра для ядра Android 4.14.

Самые большие функции включают в себя:

  • 19,8 % Планирование с учетом энергопотребления (ядро/расписание)
  • 13,8% Сеть (net/netfilter)
  • 13,5% Sdcardfs (fs/sdcardfs)
  • 9,4% USB (драйверы/usb)
  • 7,2% SoC (arch/arm64, arch/x86)
  • 6,2% f2fs (fs/f2fs -- бэкпорт из апстрима)
  • 6,1% ввод (драйверы/ввод/разное)
  • 5,4% Отладчик FIQ (драйверы/staging/android/fiq_debugger)
  • 3,6% Эмулятор Goldfish (драйверы/платформа/золотая рыбка)
  • 3,4% Verity (водители/м.д.)
  • 11,6% Другое

Отличия от ЛТС

По сравнению с LTS (4.14.0), общее ядро ​​Android имеет 355 изменений, 32266 вставок и 1546 удалений (по состоянию на февраль 2018 г.).

введите описание изображения здесь

Различия меняются от версии к версии (как для Linux, так и для Android), и точное ядро ​​​​различно для каждого устройства. Ядро для Android — это основное ядро ​​Linux с дополнительными драйверами для конкретного устройства и другими дополнительными функциями, такими как улучшенное управление питанием или поддержка более быстрой графики.

Многие функции ядра Android позже добавляются в исходную версию Linux после того, как сообщество открытого исходного кода приняло (и, возможно, изменило) их, но другие никогда не добавляются в основную ветку разработки либо потому, что они неприемлемы для разработчиков ядра Linux, либо потому, что они re применимо только к Android или к определенному оборудованию.

Большинство драйверов для аппаратного обеспечения Android были приняты в основное ядро; но некоторые функции, такие как блокировка пробуждения, которая некоторое время назад вызвала огромные споры, остаются проблематичными, потому что разработчики основной линии и ядра Android не согласны с тем, является ли это хорошей идеей.
«Ядро для Android — это основное ядро ​​Linux с дополнительными драйверами для конкретного устройства и другими дополнительными функциями, такими как улучшенное управление питанием или поддержка более быстрой графики», так что это в основном драйверы? Исходный код не изменился?
@GuerlandoOCs Я не уверен, что вы думаете о драйверах, если не об изменении исходного кода, но, тем не менее, «другие дополнительные функции», о которых я упоминал, в наши дни довольно велики. Есть много изменений исходного кода.
@DanHulme - это патчи для изменений исходного кода или просто код, измененный вручную? Как я могу увидеть вещи, которые изменились? Я читал, что вы можете исправить ядро ​​​​Linux, чтобы оно было совместимо с Android, но где эти патчи, чтобы я мог их прочитать?

Помимо специфических различий устройств и блокировки пробуждения, о которых упоминают Дэн Халм и Ли Райан, Android удалил функции System V IPC (очереди сообщений, сегменты общей памяти, семафоры), которые могли привести к утечке ресурсов ( http://www.kandroid.org/ndk ). /docs/system/libc/SYSV-IPC.html ). Вероятно, это просто вопрос настройки сборки ядра. Кроме того, выбранный Android IPC, называемый Binder, имеет некоторую поддержку в ядре, которая, насколько мне известно, не включена в стандартные ядра Linux.