Wir können Windows auf einer Reihe von Computern installieren, aber wenn man versucht, ein ROM auf einem anderen Android-Gerät zu flashen, funktioniert es nicht. Ich gehe davon aus, dass dies daran liegt, dass die Kernel- und Systemoptimierungen nur mit der spezifischen SOC-Batterie kompatibel sind. Das BIOS informiert Windows über die Funktionen verschiedener Geräte über ACPI-Tabellen und funktioniert mit einer Reihe von Hardwarekomponenten. Gibt es einen Grund, warum es auf Android-Geräten keine Hardware-Abstraktionsschicht im üblichen Sinne gibt, sind es nur die Hersteller, die davon profitieren?
-2
Antworten:
Wirtschaftliche Gründe:
Android-Geräte sind in der Regel Einplatinen-ARM-basierte Geräte mit eingebetteter Hardware, die sich über die Lebensdauer des Geräts nicht ändern. Der Benutzer kauft normalerweise nur ein neues Gerät.
Android ist ein "eingebettetes" Betriebssystem. Von Hardware, auf der Android ausgeführt wird, wird normalerweise nicht erwartet, dass sie ein anderes Betriebssystem unterstützt oder ausführt.
ACPI ist ein komplexer Standard, der schwer zu implementieren ist.
Für Unternehmen ist Time-to-Market mehr wert als die Entwicklung von Standards, die andere Unternehmen verwenden. Windows, das Betriebssysteme verkaufen wollte, die auf verschiedenen Intel-basierten Hardwareanbietern funktionieren, bevorzugte offensichtlich den Standard (und sowohl Intel als auch Microsoft hatten einen Einfluss auf das Design von ACPI.)
Technische Gründe:
Windows ist beim Start und während des Betriebs sehr stark von der Firmware (BIOS oder UEFI) abhängig. Linux kann so konfiguriert werden, dass es sich nach dem Laden überhaupt nicht auf Firmware stützt. Für ARM-Plattformen ist dies wahrscheinlich typisch.
Der Bootloader auf Android-Geräten ist häufig so konfiguriert, dass nur ein signiertes Image geladen wird. Wenn das Image, das das Betriebssystem enthält, nicht signiert ist, funktioniert es nicht.
Der Bootloader selbst ist häufig sehr hardwarespezifisch und für ein bestimmtes Board konzipiert. (Sie können kein BIOS für ein Modell eines Laptops verwenden und erwarten, dass es auch auf einem anderen Modell eines Laptops funktioniert. Als OEM müssten Sie ein neues BIOS für eine neue Plattform erstellen.) Wenn das ROM-Image den Bootloader enthält und Sie versuchen, ihn auf der falschen Plattform auszuführen, funktioniert er wahrscheinlich nicht.
Die Linux-Treiber für die Hardwaregeräte vieler Android-Geräte sind nicht Open Source. Umfasst Dinge wie Display, Wifi, Handy. Daher funktionieren sie mit späteren Kernelversionen nicht mehr. Wahrscheinlich ist dies der Hauptgrund, warum verschiedene ROMs nicht funktionieren, da die Kernelversion eine spätere, bessere ist, aber kein neuerer Treiber verfügbar ist (und einer ohne den Quellcode nicht erstellt werden kann).
Die Befehlszeilenoptionen, die an den Boot-Kernel übergeben werden, können von entscheidender Bedeutung sein. Diese Optionen können beispielsweise den Kernel anweisen, bestimmte Speicherbereiche zu vermeiden, die dazu führen, dass das System beim Zugriff abstürzt.
quelle