Was ist der Unterschied zwischen dem Linux-Kernel und dem Android-Kernel?

Antworten:

7

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.

Dan Hulme
quelle
3
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.

FooF
quelle
4

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:

  • 19,8% Energy Aware Scheduling (Kernel / Scheduling)
  • 13,8% Netzwerk (Netz / Netzfilter)
  • 13,5% SD-Karten (fs / sdcardfs)
  • 9,4% USB (Treiber / USB)
  • 7,2% SoC (Bogen / Arm64, Bogen / x86)
  • 6,2% f2fs (fs / f2fs - Backports vom Upstream)
  • 6,1% Input (Treiber / Input / Sonstiges)
  • 5,4% FIQ Debugger (Treiber / Staging / Android / fiq_debugger)
  • 3,6% Goldfish Emulator (Treiber / Plattform / Goldfisch)
  • 3,4% Verity (Fahrer / md)
  • 11,6% Sonstiges

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).

Bildbeschreibung hier eingeben

chankruze
quelle
Ich verstehe nicht, warum die Leute abstimmen ??? Ich schrieb die Antwort, innerhalb von 5 Sekunden bekam ich eine Ablehnung !! Nice
chankruze
+1 für deine Antwort. Drive-by-Downvoter sind zum Kotzen.
iBug
+1. Dein ist unter anderem das Beste.
Irfan Latif