Warum gibt es keine generischen Telefon-OS-Installer? [Duplikat]

Ich bin es gewohnt, verschiedene Betriebssysteme auf meinen PCs zu installieren und zu entfernen, sogar mehrere gleichzeitig.

Normalerweise bedeutet die Installation eines neuen Betriebssystems:

  1. Brennen Sie die ISO auf eine CD/DVD/USB.

  2. Fügen Sie es ein.

  3. Stiefel. (Vielleicht müssen Sie zuerst das BIOS ein wenig optimieren).

Der einzige Unterschied zwischen PCs ist ihre CPU-Architektur: x86, x86_64, Arm usw. Abhängig davon müssen Sie die eine oder andere ISO herunterladen. Aber ich muss mir nie Gedanken darüber machen, welche Grafikkarte, Maus, Tastatur, Bildschirm, Netzwerkkarte usw. es hat. Der Installationsassistent erkennt dies automatisch und installiert die entsprechenden Treiber. Wenn sie nicht gebündelt sind, lädt das Installationsprogramm sie manchmal auch herunter. Wie auch immer, der entscheidende Punkt hier ist, dass die ISO immer gleich ist .

Jetzt kommen viele mobile Betriebssysteme heraus: Ubuntu, Tizen, Firefox OS, das allgegenwärtige Android und warum nicht irgendeine Linux-ARM-Distribution da draußen!. Leider habe ich ein zufälliges chinesisches Handy, das sicherlich auf keiner Plattform offiziellen Support erhalten wird, und ich werde es niemals testen können.

Aber ... Sind die heutigen Telefone nicht nur winzige ARM-PCs? Warum ist die Installation so anders? Warum brauche ich immer ein vorkompiliertes monolithisches ROM speziell für mein Telefonmodell? Warum nicht einfach ein einziges "ISO" pro Betriebssystem für jedes Telefon, das die benötigten Treiber automatisch erkennt und installiert, so wie es immer auf dem PC-Markt war?

Anmerkung: Ich verstehe das Problem mit privativen Treibern, aber ich erinnere mich, dass Debian mich nach diesen gefragt hat, als es bei der Installation keine freien Alternativen gab, und ich sie dann oder später installieren könnte. Ich nehme an, dass auch in diesen Fällen eine Problemumgehung verwendet werden könnte. Korrigieren Sie mich, wenn ich falsch liege.

Treiber ... das Mobilteil ist je nach Chipsatz und Variationen sehr unterschiedlich, ein ROM für ein Mobilteil funktioniert definitiv nicht für ein anderes Mobilteil ... denken Sie darüber nach, nicht standardisiert, aber mit dem Aufkommen von ICS / JB arbeitet Google hin zu diesem vorletzten Ziel der Standardisierung.
Haben Sie bei CyanogenMod für Ihr Gerät nach der gewünschten Version gesucht?

Antworten (3)

Kurz gesagt, es liegt an der unterschiedlichen Verbreitung von Android und MS Windows. MS Windows ist ein Einzelhandelsprodukt, das direkt an PC-Besitzer verkauft wird. Daher ist Microsoft dafür verantwortlich, dass es auf PCs ausgeführt wird. PCs sind standardisiert und verfügen (heute) über einen Hardwareerkennungsmechanismus, sodass Microsoft den Windows-Installer so gestalten kann, dass er auf jedem PC-kompatiblen Computer ausgeführt werden kann. Es liegt in ihrem Interesse, Treiber für alte Windows-Versionen mit neueren Versionen kompatibel zu machen, damit sie weiterhin neue Windows-Versionen an Benutzer verkaufen können.

Das hat auch eine technische Dimension. Telefone sind nicht nur "winzige ARM-PCs", wie Sie vorschlagen. Das Besondere an einem PC ist, dass er die PC-Spezifikation erfüllt , die von IBM stammt, aber jetzt von einem Industriekonsortium spezifiziert wird. Es gibt mehrere weitere Standards dafür, wie Komponenten eines PCs interagieren, und sie ermöglichen eine automatische Treiberkonfiguration, wie Sie sie auf einem Desktop-PC finden. Grafikkarten bieten eine VESA-Schnittstelle, mit der Grafiken angezeigt werden können, bevor ein GPU-Treiber konfiguriert wurde.

Alle PC-Hardware bietet heutzutage Plug N Play, was es dem Betriebssystem ermöglicht, Hardware zu erkennen und die Speicherzuordnung beim Booten zu konfigurieren. Vor Plug N Play mussten Sie physische Jumper auf jeder PCI-Karte ändern und dann der Software mitteilen, welchen Speicherbereich, IRQ usw. Sie auf den Jumpern eingestellt hatten. Und in den Tagen vor DirectX und seinesgleichen musste man das für jedes Spiel, das diese Hardware verwenden wollte, separat tun. Plug N Play entstand hauptsächlich, damit Hersteller von Soundkarten (und anderen diskreten Komponenten) einfacher zu installierende Hardware herstellen konnten.

Im Gegensatz dazu ist Android kein Produkt, das an Benutzer verkauft wird, sondern an Gerätehersteller. Telefone (auch Tablets, STBs, Mediaplayer usw.) haben nichts Vergleichbares mit der PC-Spezifikation, daher ist es Google nicht möglich, ein „Android-Installationsprogramm“ zu erstellen, das auf jedem Gerät ausgeführt werden kann. Selbst die Anzeige der Batterieanimation bei ausgeschaltetem Telefon erfordert das Laden des Linux-Kernels mit einem Framebuffer-Treiber und einem Batterietreiber. Es liegt in der Verantwortung des Geräteherstellers, den Android-Quellcode so zu ändern, dass er auf seinem Gerät ausgeführt werden kann, und das resultierende Android-Firmware-Image gehört dem Hersteller: Sie müssen diese Änderungen nicht an Google oder andere Personen weitergeben (müssen).

Die Telefonwelt hat diese Art von Standards nicht, weil es keine Nachfrage danach gibt. Es gibt niemanden, der versucht, selbst zusammengestellte Telefonkomponenten zu verkaufen. Niemand in der Telefonbranche ist daran interessiert, ein Betriebssystem zu entwickeln, das Sie auf jedem Telefon installieren können – nur Ubuntu und Mozilla, die Außenseiter sind und keinen Beitrag zu Hardwarestandards leisten.

Das erste Problem ist der Platz. Die meisten Telefone hatten bis vor kurzem zu wenig Speicherplatz, um den gesamten generischen Kernel und das Android-Framework aufzunehmen. Hinzu kommt, dass Telefonhardware im Allgemeinen vielfältiger und weniger standardisiert ist als PC-Hardware, was aufgrund des begrenzten Platzes unvermeidlich sein kann.

Das andere Problem ist, dass es unter den Standard-Bootloadern keinen einheitlichen Standard für die Flash-Methode gibt. Beim PC haben Sie die Standardmethode zum Booten von CD und zum Booten von einem USB-Laufwerk; Bei der standardmäßigen Bootmethode für externe Laufwerke ist der PC der USB-Host, aber Android fungiert im Allgemeinen als USB-Client. Dies spiegelt sich auch in der Wahl der Kabel wider, die Android-Seite des USB-Kabels ist normalerweise ein USB-Micro und die meisten externen Laufwerke verwenden auch USB-Mini, was bedeutet, dass Sie für die physische Verbindung ein USB-Micro-zu-USB-Micro-Kabel benötigen relativ selten.

Schließlich ist das letzte Problem ein politisches. Hersteller und Netzbetreiber haben keinen Anreiz, den Status quo zu ändern, nur eine sehr kleine Minderheit von Benutzern wird ihr Gerät flashen, wodurch die Garantie normalerweise erlischt. Sie haben keinen Anreiz, Leute zu ermutigen, einen Bootloader zu installieren, der es einfach macht, die Garantie aufzuheben, und der oft einen Support-Albtraum verursacht.

Abgesehen von den in Lie Ryans Antwort erwähnten Punkten gibt es ein großes Problem, das die Leute tendenziell unterschätzen: Treiber .

Erinnerst du dich an Windows 95? Die meisten Leute erinnern sich daran als ein schlechtes und instabiles Betriebssystem. Warum war es instabil? Weil die Treiber anfangs nicht von Microsoft, sondern von den Hardwareherstellern kamen und einige (die meisten?) von schlechter Qualität waren und das ganze System zum Absturz brachten. Natürlich gab der Benutzer vor dem PC dem Betriebssystem die Schuld, denn das schien abzustürzen, und nicht der Treiber.

Das Schreiben von Hardwaretreibern ist keine leichte Aufgabe: Sie müssen die Betriebssystem-API kennen, Sie müssen die Hardware kennen, Sie müssen die Computerarchitektur kennen, und wenn Sie nur einen kleinen Fehler machen, stürzen die meisten Betriebssysteme (diese ohne gute Isolation) ab.

Werfen wir einen Blick auf die anderen Open-Source-Betriebssysteme, die meisten von ihnen verfügen über eine überlegene Architektur und verwenden mehr Hardwarefunktionen als Linux. Warum benutzt sie dann nicht jeder? Ich würde sagen, es liegt daran, dass ihnen Fahrer fehlen . Warum sollte ich ein Betriebssystem wählen, das meine WLAN-Hardware nicht unterstützt?

Schauen wir uns nun die Zielplattform an, über die Sie sich wundern, warum kein Installationsmedium verfügbar ist. Android-Geräte sind hochspezialisiert und verwenden diese Hardware

  1. ist nicht für die breite Masse verfügbar (z. B. kann man normalerweise nicht, aber der Soundchip, der in einem typischen Android-Gerät verwendet wird)
  2. benötigen Treiber, die proprietär sind (dh nur der Hardwarehersteller hat Zugriff auf die Quelle des Treibers)
  3. ist vielfältig

Das macht es schwierig, ein Installationsmedium zusammenzustellen, das für alle oder sogar die meisten Geräte funktioniert.

Der übliche Ansatz, GNU/Linux auf einem Android-Gerät zu installieren, ist die Verwendung der verfügbaren Umgebung (Bootloader, Kernel (inkl. Treiber), libc). Dadurch werden alle in den Antworten erwähnten Probleme vermieden.

Die aktuelle im Web verfügbare Android-Treiberquelle deckt vermutlich einen großen Teil der Hardware ab. Das Problem, das diese Antwort nicht erwähnt, ist die fehlende Hardware-Erkennbarkeit. Selbst wenn Sie ein generisches Android mit allen Treibern der Welt ausliefern würden, würde es nicht funktionieren, weil es nicht zu groß wäre, sondern weil der Kernel ohne einen Gerätebaum nicht wissen würde, welche Treiber er verwenden soll.