Auf der vergangenen Konferenz Linux Plumbers 2019 hat Google über die Entwicklung der Integration von Änderungen in den Hauptkernel Linux gesprochen, die in für die Android-Plattform entwickelt wurden. Das endgültige Ziel besteht darin, einen einheitlichen Kernel für Android bereitzustellen, anstatt für jedes Gerät separate Builds auf der Grundlage eines Android-spezifischen Branches vorzubereiten. . Dieses Ziel wurde bereits teilweise erreicht, und auf der Konferenz wurde ein Android-Smartphone, das Xiaomi Poco F1, mit einer Firmware auf der Basis eines normalen, unveränderten Linux-Kernels demonstriert.
Nach Abschluss des Projekts wird den Anbietern vorgeschlagen, ein Basis-Kernel auf Grundlage des Haupt-Linux-Kernels zu liefern. Komponenten zur Unterstützung der Hardware werden von den Anbietern ausschließlich in Form von zusätzlichen Kernel-Modulen bereitgestellt, ohne dass Patches auf den Kernel angewendet werden. Die Module müssen sicherstellen, dass sie kompatibel mit dem Hauptkern auf der Ebene des Namensraums des Kernels sind. Alle Änderungen, die den Hauptkern betreffen, werden in das Upstream-Projekt eingebracht. Um die Kompatibilität mit proprietären Modulen in den LTS-Zweigen aufrechtzuerhalten, wird vorgeschlagen, die API und ABI des Kernels in stabiler Form zu unterstützen. Dadurch wird die Kompatibilität der Module mit den Aktualisierungen für jede öffentliche Kernel-Zweige gewährleistet.

Im Laufe eines Jahres wurden Funktionen wie das PSI-Subsystem (Pressure Stall Information) für die Analyse von Wartezeiten bei der Ressourcenbeschaffung (CPU, RAM, I/O) sowie das Pseudo-Dateisystem BinderFS für den interprozessualen Kommunikationsmechanismus Binder und der energieeffiziente Scheduler EAS (Energy Aware Scheduling) vom Hauptkern Linux aus der Android-Kernel-Edition übertragen. Zukünftig plant Android, von dem spezifischen Scheduler SchedTune auf das neu entwickelte UtilClamp-Subsystem von ARM umzusteigen, das auf cgroups2 und den nativen Mechanismen des Kernels basiert.

Zur Erinnerung: Der Kernel für die Android-Plattform durchlief bisher mehrere Vorbereitungsphasen:
- Es wurde ein Fork des Haupt-LTS-Kernels (3.18, 4.4, 4.9 und 4.14) erstellt, der als „Android Common Kernel“ bezeichnet wird. In diesen wurden spezifische Android-Patches übertragen (ehemals betrug das Volumen der Änderungen mehrere Millionen Zeilen, in letzter Zeit wurde es jedoch auf einige tausend Zeilen Code reduziert).
- Auf Basis des „Android Common Kernel“ entwickelten Chip-Hersteller wie Qualcomm den „SoC Kernel“, der Ergänzungen zur Unterstützung der Hardware enthält.
- Basierend auf dem „SoC-Kernel“ entwickelten Gerätehersteller den „Device-Kernel“, der Anpassungen zur Unterstützung zusätzlicher Hardware, Bildschirme, Kameras, Audiosysteme usw. umfasst.

Im Grunde erhielt jedes Gerät sein eigenes Kernel, das nicht auf anderen Geräten verwendet werden konnte. Dieses Konzept erschwert erheblich die Bereitstellung von Sicherheitsupdates und den Wechsel zu neuen Kernel-Versionen. Zum Beispiel wird das im Oktober veröffentlichte neueste Smartphone Pixel 4 mit einem Linux-Kernel 4.14 ausgeliefert, der vor zwei Jahren veröffentlicht wurde. Teilweise versuchte Google, die Wartung zu vereinfachen, indem es ein System förderte , das Herstellern ermöglicht, universelle Hardwareunterstützungskomponenten zu erstellen, die nicht an bestimmte Android-Versionen und verwendete Kernel-Versionen gebunden sind. Treble ermöglicht es, bereits verfügbare Updates von Google als Grundlage zu nutzen und spezifische Komponenten für das jeweilige Gerät zu integrieren.

Quelle: opennet.ru
