Wie unterscheidet sich der Android Linux-Kernel vom "richtigen" Linux-Kernel?

ComputerMilo

Ensign
Registriert
Apr. 2018
Beiträge
165
Moin Leute,

ich hoffe, die Frage passt hier rein.

Ich hab mir die Frage gestellt, inwieweit der Android Linux Kernel sich vom "richtigen" Linux-Kernel unterscheidet und welche Gemeinsamkeiten es gibt. Kann man ein Android-System überhaupt mit den anderen Linux-Distributionen vergleichen und sind die Treiber aus dem Linux-Kernel auch im Android-Kernel noch mit drin? Als Beispiel: Also könnte man zum Beispiel, wenn man Android für den PC portiert (wie z.B. bei Android x86 oder BlissOS) das auf einem PC dann auch vernünftig nutzen mit den Hardwaretreibern aus dem Linux-Kernel, z.B. auch den NVIDIA oder AMD Grafiktreibern?

Vielleicht ist die auch Frage komisch und auch etwas doof gestellt...
 
Das ist alles angepasst, schlanker gemacht und speziell. Das lässt sich mit einer normalen Distro nicht vergleichen.
 
ComputerMilo schrieb:
Vielleicht ist die auch Frage komisch und auch etwas doof gestellt...
Ja.
Es gibt keinen "richtigen" Linux Kernel. Je nach Zweck und Zielplattform bündelt ein Hersteller/Distributor die erforderlichen und gewünschten Teile des Kernels und liefert/programmiert dazu die User-Space Anwendungen, die auf die bereit gestellten APIs zu greifen und die für den Benutzer sichtbaren Funktionen bereit stellen.

Eben das Androi UI, ein Desktop oder auch was vollkommen Anderes bei einem integriertem System, z.B. eine Kasse oder ein Getränkeautomat.
 
Ist vielleicht etwas faul, aber ich hab mal die allmächtige KI gefragt:
Llama 70b schrieb:
Ein Android-Kernel und ein Linux-Kernel sind eng verwandt, aber nicht identisch. Beide basieren auf demselben Linux-Kernel-Code, aber Android hat einige spezifische Anpassungen und Erweiterungen vorgenommen, um die Anforderungen von mobilen Geräten zu erfüllen.
Die Hauptunterschiede zwischen einem Android-Kernel und einem Linux-Kernel sind:
  1. Treiber: Android verwendet spezielle Treiber für die Hardware von mobilen Geräten, wie z.B. Touchscreens, Kameras und GPS-Chips. Diese Treiber sind nicht Teil des standardmäßigen Linux-Kernels.
  2. Power-Management: Android hat ein eigenes Power-Management-System, das speziell für die Energiesparfähigkeit von mobilen Geräten entwickelt wurde. Dieses System ermöglicht es, die Leistung des Geräts anzupassen, um die Akkulaufzeit zu verlängern.
  3. Prozess-Management: Android verwendet ein eigenes Prozess-Management-System, das speziell für die Anforderungen von mobilen Geräten entwickelt wurde. Dieses System ermöglicht es, Prozesse effizienter zu verwalten und die Systemressourcen zu schonen.
  4. Dateisystem: Android verwendet ein eigenes Dateisystem, das speziell für die Anforderungen von mobilen Geräten entwickelt wurde. Dieses Dateisystem ermöglicht es, Daten effizienter zu speichern und zu lesen.
  5. Android-Spezifische Funktionen: Android hat einige spezifische Funktionen, wie z.B. die Unterstützung für Android-Apps, die nicht Teil des standardmäßigen Linux-Kernels sind.
Insgesamt sind die Unterschiede zwischen einem Android-Kernel und einem Linux-Kernel relativ gering, aber sie sind wichtig für die spezifischen Anforderungen von mobilen Geräten.
 
  • Gefällt mir
Reaktionen: jonderson und Redundanz
Wie schon geschrieben gibt es nicht den einen Kernel.

Es kommen diverse Schichten an Architekturunterschieden zusammen. In der Regel läuft Android schon mal auf ARM-Devices und im Gegensatz zu x86_64 Systemen wird dort die dynamische Erkennung von Hardware nicht unterstützt.
Deshalb geht es auch grade nur langsam voran diverse ARM-Geräte mit Linux zu Portieren. Für jedes Gerät müssen nicht nur die Treiber in Summe existieren. Sondern ein expliziter device tree für die jeweilige Zusammenstellung erstellt und Konfiguriert werden.

Dann kommen natürlich noch Haufenweise Anpassungen drauf, wie Google Android aufgesetzt hat. Root-Abschirmung APK-Sandboxing und die ganze Rechteverwaltung.
 
Keylan schrieb:
Wie schon geschrieben gibt es nicht den einen Kernel.
Ähm doch.

Alle Linux Distributionen inkl. Android bauen auf DEN EINEN Kernel auf.

Ansonsten habe ich ähnliche Informationen wie die KI im Bezug auf Unterschiede zwischen Android und Linux Kernel.
Man wollte damals als Android entwickelt wurde z.B. nicht die Energiespareinstellungen im Linux-Kernel haben, die Google gerne bei Android haben wollte. (Massive Fehlentscheidung meiner Meinung nach... )

Google bastelt wohl gerade an Fuchsia welches nicht auf dem Linux Kernel basiert.
Welchen Einsatz Google hierfür vorsieht, ist aber bisher unbekannt.

Ergänzung ()

scooter010 schrieb:
Eben das Androi UI, ein Desktop oder auch was vollkommen Anderes bei einem integriertem System, z.B. eine Kasse oder ein Getränkeautomat.
Eine Android UI oder ein Desktop haben rein GARNICHTS mit dem Linux Kernel zu tun...
Wenn es so wäre wie du beschreibst würde es nicht GNU/Linux sondern nur Linux heißen...
Das was du beschreibst sind eher die Linux Distributionen, aber eher nicht der Linux-Kernel...
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Pummeluff und Der_Dicke82
CoMo schrieb:
Ging das wirklich schneller, den Post zu verfassen, als eine Google-Suche durchzuführen? Da gibt es doch wahrlich genug Ressourcen zu.

Gefunden in unter 5 Sekunden: https://sergioprado.blog/what-differs-android-from-other-linux-based-systems/
Naja, vielleicht tut er sich mit Englisch schwer? Kann ja durchaus sein.

Und auf Deutsch hab ich jetzt auf die Schnelle auch nicht besonders tolle Antworten gefunden. Hab aber auch nicht intensiv gesucht muss ich sagen.

Die Ironie ist, dass dieser Thread und die Antworten bei mir nun ganz oben in der Google Suche aufgetaucht ist. 😁
 
jonderson schrieb:
Eine Android UI oder ein Desktop haben rein GARNICHTS mit dem Linux Kernel zu tun...

Stimmt nur mittelbar. Es kommt nun daraud an, was wir als Kernel sehen. Alles was zum Kernel Projekt gehört, der gesammte Source Code, der source code, den man mittels Compiler-Optionen tatsächlich "aus wählt" oder etwa das Binary am Ende?

Für mich ist der Kernel eines Systems entweder das Binary und vielleicht noch der Teil des Source-Codes, der tatsächlich kompiliert wird. Und da liegen dann die Unterschiede.

Aber ja,, auch das sollte am Ende posix sein, auch bei android.
 
scooter010 schrieb:
Es gibt keinen "richtigen" Linux Kernel.
https://kernel.org/

scooter010 schrieb:
Je nach Zweck und Zielplattform bündelt ein Hersteller/Distributor die erforderlichen und gewünschten Teile des Kernels und liefert/programmiert dazu die User-Space Anwendungen, die auf die bereit gestellten APIs zu greifen und die für den Benutzer sichtbaren Funktionen bereit stellen.
Nein. Natürlich gibt es Patches verschiedenster Leute/Organisationen, die nicht in den offiziellen Kernel aufgenommen werden. Auch werden unterschiedliche Module aktiviert und andere Parameter in der Kernelkonfiguration gesetzt, was dann zu den Unmengen an verschiedenen Kerneln führt. Das hat aber alles rein gar nichts mit dem Userspace und irgendwelchen APIs zu tun.


scooter010 schrieb:
Eben das Androi UI, ein Desktop oder auch was vollkommen Anderes bei einem integriertem System, z.B. eine Kasse oder ein Getränkeautomat.
Hat auch überhaupt gar nichts mit dem Kernel zu tun. Im Kernel gibt's Grafiktreiber und ein paar Einstellungen dazu (u.a. Framebufferauflösung).

Keylan schrieb:
Wie schon geschrieben gibt es nicht den einen Kernel.
Auch mit der Wiederholung wird die Aussage nicht korrekter.

Keylan schrieb:
Es kommen diverse Schichten an Architekturunterschieden zusammen. In der Regel läuft Android schon mal auf ARM-Devices und im Gegensatz zu x86_64 Systemen wird dort die dynamische Erkennung von Hardware nicht unterstützt.
Und was hat das jetzt mit dem Linux-Kernel zu tun? Bei meinem älteren Oneplus stand bei Kernel sogar noch Ubuntu im Namen drin.

Keylan schrieb:
Deshalb geht es auch grade nur langsam voran diverse ARM-Geräte mit Linux zu Portieren.
Du wolltest jetzt irgendwie den Zusammenhang zwischen der Unterstützung der neuen Snapdragon-Elite-Notebooks und dem Kernel herstellen, oder?

scooter010 schrieb:
Es kommt nun daraud an, was wir als Kernel sehen.
Nein, es kommt nicht darauf an, was du als Kernel siehst.

Die Grenze zwischen Kernelspace und Userspace ist klar definiert. Siehe Wikipedia.
 
  • Gefällt mir
Reaktionen: jonderson
Krik schrieb:
Ist vielleicht etwas faul, aber ich hab mal die allmächtige KI gefragt:
Ach, KI kann also auch nicht richtig zwischen Kernel und Userspace unterscheiden.
 
Das Android Ökosystem missachtet weite Teile der Standards und Konventionen des Linuxkernels. So werden beispielsweise die ALSA PCM Kanäle wie gewohnt benutzt. Die 'Control' Leitungen aber nicht. Gesteuert wird die Soundkarte stattdessen über eigene proprietäre Treiber und Schnittstellen. Viele Treiber sind closed-source (Kamera, 2ch voice cancelation, fingerprint, etc) und verhindern so eine ordnungsgemäße Integration. Manch einer mag behaupten, das sei Absicht. So viele Finger hat Linus gar nicht, um all jenen den Schweigewurm zu zeigen.
 
Zuletzt bearbeitet:
Man muss aber Google zu Gute halten und zunehmend auch Geräteherstellern das die Unterschiede abnehmen.
Einige Dinge sind die letzten Jahre in den Mainline Linux Kernel eingepflegt worden um die Wartung einfacher zu machen.
Sonst hast du Linux Kernel->Android Common Kernel->BoardSupplyPackage->Gerätespezifischer Kernel.
Das ist viel zu komplex als Abstrahierungsbaum und sorgt dafür dass viele Geräte relativ schnell nicht mehr gepflegt werden. Ist einfach zu viel Aufwand.
 
Zurück
Oben