Was ist der Unterschied zwischen dem Linux-Kernel und dem Android-Kernel?
18
Welche Änderungen wurden im Linux-Kernel vorgenommen, um ihn zu einem Android-Kernel zu machen? Mit dieser Frage meine ich, was sind die Unterschiede zwischen Linux-Kernel und Android-Kernel?
Die Unterschiede variieren von Version zu Version (sowohl von Linux als auch von Android), und der genaue Kernel ist für jedes Gerät unterschiedlich. Ein Kernel für Android ist ein Mainstream-Linux-Kernel mit zusätzlichen Treibern für das jeweilige Gerät und weiteren zusätzlichen Funktionen, z. B. verbesserter Energieverwaltung oder schnellerer Grafikunterstützung.
Viele Funktionen des Android-Kernels werden später zu Linux hinzugefügt, nachdem die Open-Source-Community sie akzeptiert (und möglicherweise geändert) hat. Andere werden jedoch nie übertragen, entweder weil sie für die Linux-Kernel-Entwickler nicht akzeptabel sind oder weil sie Dies gilt nur für Android oder für bestimmte Hardware.
Die meisten Treiber für Android-spezifische Hardware wurden in den Mainline-Kernel aufgenommen. Einige Funktionen, wie die Wake-Sperre, die vor einiger Zeit eine große Kontroverse ausgelöst hat, sind jedoch weiterhin problematisch, da sich die Entwickler von Haupt- und Android-Kernel nicht einig sind, ob dies eine gute Idee ist.
Lie Ryan
"Ein Kernel für Android ist ein Mainstream-Linux-Kernel mit zusätzlichen Treibern für das jeweilige Gerät und weiteren zusätzlichen Funktionen, z. B. verbesserter Energieverwaltung oder schnellerer Grafikunterstützung." Also handelt es sich hauptsächlich um Treiber? Kein Quellcode geändert?
Guerlando OCs
@GuerlandoOCs Ich bin mir nicht sicher, was Treiber Ihrer Meinung nach sind, wenn sich kein Quellcode ändert, aber trotzdem ist die "andere zusätzliche Funktionalität", die ich erwähnte, heutzutage ziemlich groß. Es gibt viele Änderungen im Quellcode.
Dan Hulme
@DanHulme sind die Quellcode-Änderungen Patches oder nur von Hand geänderter Code? Wie kann ich Dinge sehen, die sich geändert haben? Ich habe gelesen, dass Sie Ihren Linux-Kernel patchen können, um mit Android kompatibel zu sein, aber wo sind diese Patches, damit ich sie lesen kann?
Guerlando OKs
5
Neben den gerätespezifischen Unterschieden und der Aktivierungssperre, die Dan Hulme und Lie Ryan erwähnen, hat Android die IPC-Funktionen von System V (Nachrichtenwarteschlangen, Segmente mit gemeinsam genutztem Speicher, Semaphoren) entfernt, die zu Ressourcenlecks führen können ( http://www.kandroid.org/ndk) /docs/system/libc/SYSV-IPC.html ). Dies ist wahrscheinlich nur eine Frage der Konfiguration des Kernel-Builds. Auch der Android IPC der Wahl, genannt Binder, hat Unterstützung im Kernel, die meines Wissens nicht in Standard-Linux-Kerneln enthalten ist.
Antworten:
Die Unterschiede variieren von Version zu Version (sowohl von Linux als auch von Android), und der genaue Kernel ist für jedes Gerät unterschiedlich. Ein Kernel für Android ist ein Mainstream-Linux-Kernel mit zusätzlichen Treibern für das jeweilige Gerät und weiteren zusätzlichen Funktionen, z. B. verbesserter Energieverwaltung oder schnellerer Grafikunterstützung.
Viele Funktionen des Android-Kernels werden später zu Linux hinzugefügt, nachdem die Open-Source-Community sie akzeptiert (und möglicherweise geändert) hat. Andere werden jedoch nie übertragen, entweder weil sie für die Linux-Kernel-Entwickler nicht akzeptabel sind oder weil sie Dies gilt nur für Android oder für bestimmte Hardware.
quelle
Neben den gerätespezifischen Unterschieden und der Aktivierungssperre, die Dan Hulme und Lie Ryan erwähnen, hat Android die IPC-Funktionen von System V (Nachrichtenwarteschlangen, Segmente mit gemeinsam genutztem Speicher, Semaphoren) entfernt, die zu Ressourcenlecks führen können ( http://www.kandroid.org/ndk) /docs/system/libc/SYSV-IPC.html ). Dies ist wahrscheinlich nur eine Frage der Konfiguration des Kernel-Builds. Auch der Android IPC der Wahl, genannt Binder, hat Unterstützung im Kernel, die meines Wissens nicht in Standard-Linux-Kerneln enthalten ist.
quelle
Ich denke, diese Android-Quelle ist eine großartige Dokumentation zum Verständnis.
Und hier ist eine Liste der Änderungen, die seit dem Mainline-Kernel für den Android-Kernel 4.14 vorgenommen wurden.
Die größten Funktionen umfassen:
Unterschiede zu LTS
Im Vergleich zu LTS (4.14.0) weist der gemeinsame Android-Kernel 355 Änderungen, 32266 Einfügungen und 1546 Löschungen auf (Stand Februar 2018).
quelle