Skip to content

Параграф 4: Що таке Ядро

Ядро операційної системи - у даному випадку ОС Android - це компонент, який допомагає вашим додаткам взаємодіяти з вашим обладнанням.

Воно керує системними ресурсами, за потреби обмінюється даними із зовнішніми пристроями тощо. Android використовує варіант ядра Linux, що містить базовий набір драйверів, які необхідні для роботи пристрою. Оскільки ядро Android за замовчуванням є похідним від ядра Linux, можна з упевненістю сказати, що ядро Android також є монолітним.

Розглянемо приклад: припустимо, ви встановили застосунок для зйомки фотографій. Для цього вам потрібно отримати доступ до камери вашого телефону. Але додаток не може цього зробити. Він не може безпосередньо отримати доступ до камери, щоб робити фотографії. Замість цього він надсилає запит ядру, і ядро надає доступ до камери.

Без ядра для прийому та надсилання інформації розробникам довелося б писати код для кожної окремої події для кожного окремого елемента ПЗ вашого пристрою. З ядром все, що їм потрібно робити, це взаємодіяти з ним через API системи Android, а розробникам потрібно тільки змусити ПЗ пристрою взаємодіяти з ядром.

DT

Чому ядро має постійно оновлюватися?

Ядро Linux постійно змінюється. Безліч поліпшень потрапляє в ядро, щоб зробити його надійнішим, безпечнішим і просунутішим щодня. Цілком логічно, що вся ця дельта поліпшень потрапляє в ядро Android за будь-якої можливості. Багато виробників зберігають ядро незмінним при незначному оновленні Android, в основному тому, що оновлення ядра (так званий BSP - Board Support package) часто надходить від виробника чіпсета (TI, Samsung, Qualcomm, Mediatek і т.д.).

При зміні ядра для оновлення Android, часто потрібно багато тестування і забезпечення стабільності. Тому це часто призводить до затримки оновлень Android, а інколи й до припинення оновлень ядра, коли постачальники чипсетів не підтримують їх. Так само це пояснює, чому виробники не дуже часто оновлюють версію ядра разом із версією Android.

Дерево пристрою (DT)

Дерево пристроїв (DT) - це структура даних, що складається з іменованих вузлів і властивостей, які описують обладнання, яке, у звичайних умовах, виявити неможливо. Операційні системи, як-от ядро Linux, що використовується в Android, використовують DT для підтримки широкого спектра апаратних конфігурацій, що використовуються в пристроях на базі Android. Виробники обладнання постачають ядро своїми власними DT, які Linux потім компілює у файл Device Tree Blob (DTB), який використовується завантажувачем.

Оверлей дерева пристрою (DTO) дає змогу накласти центральний блок дерева пристроїв (DTB) на дерево пристроїв. Завантажувач, який використовує DTO, може підтримувати DT системи-на-чіпі (SoC) і динамічно накладати DT для конкретного пристрою, додаючи вузли в дерево та вносячи зміни у властивості наявного дерева.

DT

Термінологія

  • DT - Дерево пристрою
  • DTTB - Блоб дерева пристрою
  • DTTBO - Блоб дерева пристрою для оверлея
  • DTC - Компілятор дерева пристрою
  • DTO - Оверлей дерева пристрою
  • DTS - Вихідний файл дерева пристрою
  • FDT - Сплющене дерево пристрою. Двійковий формат, що міститься в блоб-файлі .dtb

Типи ядра

  • Android Common Kernel (ACK)

    Ядро, яке знаходиться нижче ядра LTS і містить виправлення, що становлять інтерес для спільноти Android, які не були об'єднані в основні ядра Linux або ядра з тривалою підтримкою (LTS). Новіші ACK (версії 5.4 і вище) також відомі як ядра GKI, оскільки вони підтримують поділ коду Generic Kernel, який не залежить від апаратного забезпечення, і модулів GKI, які не залежать від апаратного забезпечення.

Android Open Source Project (AOSP) kernel

  • Feature kernel

    Ядро, для якого гарантовано реалізовано функції релізу платформи. Наприклад, в Android 12 двома функціональними ядрами були android12-5.4 та android12-5.10. Функції Android 12 не можуть бути перенесені назад на ядра 4.19 після оновлення; набір функцій буде аналогічним до пристрою, що був запущений з 4.19 на R та оновлений до S.

  • Generic Core Kernel

    Частина ядра GKI, яка є спільною для всіх пристроїв.

  • Generic Kernel Image (GKI) kernel

    Будь-яке новіше (5.4 і вище) ядро ACK (наразі тільки aarch64). Це ядро складається з двох частин: ядро GKI із загальним для всіх пристроїв кодом і модулі ядра GKI, розроблені Google, які можна динамічно завантажити на пристрої, де це необхідно.

  • Launch Kernel

    Ядро, яке підходить для запуску пристрою для даного випуску платформи Android. Наприклад, в Android 12 допустимими ядрами для запуску були 4.19, 5.4 і 5.10.

  • Long Term Supported (LTS) kernel

    Ядро Linux, яке підтримується від 2 до 6 років. Ядра LTS випускаються раз на рік і є основою для кожного з ACK Google.

Типи гілок ядра

  • ACK KMI kernel branch

    Гілка, з якої збираються ядра GKI. Наприклад, android12-5.10 і android13-5.15.

  • Android-mainline

    Основна гілка розробки для функцій Android. Коли нове ядро LTS оголошується вище за течією, відповідне нове ядро GKI відгалужується від android-mainline.

  • Linux mainline

    Основна гілка розробки для вищих ядер Linux, включаючи ядра LTS.