Android Grundlagen – Firmware oder ROM, die Henne-Ei-Frage!

Ihr seid Modder, eine Art neugierige Wanderer, die ihre Nase gerne in Angelegenheiten stecken, die eigentlich zu groß für sie sind – kurz die Bilbo und Frodo Beutlins unter den Smartphone Nutzern. Nun dann seid Ihr hier genau richtig! Ihr besitzt ein Smartphone, mit einem wundervollen Äußeren, das Euch strahlen lässt, wenn ihr es anseht. Ihr liebt es neben ihm aufzuwachen und sanft sein Display zu streicheln, um den Wecker zum Schweigen zu bringen und nennt es „euren Schatz“, so wie Gollum den einen Ring. Aber Ihr wisst und versteht wenig von dem was in seinem Innern vor sich geht? Dann werde ich Euch versuchen Euer Smartphone ein wenig näher zu bringen.

Die Technologie – SoC & NAND

In seinem Innern werkelt im Kern ein Chip, der SoC (System-on-Chip), was im Grunde bedeutet, dass es sich um einen Chip handelt, der viele Dinge kombiniert, die – in gewöhnlichen Computern – für gewöhnlich durch unterschiedliche Chips abgebildet werden. Die unten gezeigte Abbildung soll verdeutlichen, was alles in diesem Silizium Quadrat vereint wird:

Qualcomm-Snapdragon

Der SoC, wie Ihr ihn in der Abbildung sehen könnt, erbringt lediglich Dinge, die mit Berechnungen zu tun haben. Er übernimmt in anderen Worten lediglich das Processing. Er besteht aus Prozessor (CPU), Graphiprozessor (GPU), Multimedia-Chip, RAM, sowie einigen Senoren. Da er offenkundig nicht über weiteren Speicher verfügt benötigen wir also noch einen zusätzlichen Chip, um die gesammelten Informationen abzulegen, sie zu speichern.

skhynix_nand_mlc_16nm

Dieser, oft als NAND oder eMMC bezeichnete, ist wiederum ein eckiger Silizium Chip. Eine solche eMMC (embedded Multimedia Card) ist ein – auf dem MMC-Standard aufbauendes – energie- und platzsparendes Speichermedium, welches speziell für die Verwendung als interner Datenspeicher in mobilen Geräten entwickelt wurde. Von seiner Leistung ist dieser Speicher vergleichbar mit einer SD-Karte. Da die eMMC zudem bootfähig ist, ist sie auch als Speichermedium für Betriebssysteme geeignet.

All dies scheint auf den ersten Blick noch nicht sonderlich wichtig zu sein, schafft aber die Basis, um ein Verständnis darüber zu entwickeln was Firmware und ROM eigentlich sind. Wichtig ist nämlich, dass die Software unserer Smartphones auf dem NAND Chip gespeichert wird, und dass Linux basierte Systeme – wie Android eines ist – für gewöhnlich mit Partitionen arbeiten anstatt mit Ordnerstrukturen. Als ich mein erstes Linux – damals war es Ubuntu – installierte, war ich darüber einigermaßen überrascht und musste das Speicherkonzept zuerst einmal umdenken lernen. Ihr seht also: nicht jede Welt ist eine Kugel, manchmal ist sie doch eine Scheibe …

ROM, Kernel, Recovery & Data

Betrachten wir also unser Android – als wahren Linux Ableger – stellen wir fest, dass die Speicherchips im Regelfall in eine Vielzahl von Partitionen unterteilt sind. HTC hat dabei die – mehr oder weniger schöne – Eigenschaft, eine ganze Menge davon zu nutzen. Das HTC One X hatte bereits 36, und ebenso viele hatte das One (M7) – beides Smartphones die ich noch immer besitze. Beim One (M8) waren es dann sogar schon 47 auf dem regulären Modell und 48 auf der Verizon Variante. Als ich dies das erste mal durch eine Abfrage herausfand, dachte ich: „Ich glaub‘ ich steh im Wald! Was machen die bloß mit all diesen Partitionen?“

Ich musste mein Modell und meine Vorstellung von der Struktur eines Betriebssystems vollständig überdenken!

Ihr könnt die Partitionen über den folgenden Befehl abfragen:

Code:

adb shell cat /proc/emmc

Die Ausgabe im Falle meines aktuellen Smartphone – dem HTC 10 – sieht wie folgt aus:

dev:        size     erasesize name

mmcblk0p1: 00004000  00000200  "board_info"
mmcblk0p2: 00040000  00000200  "mfg"
mmcblk0p3: 00400000  00000200  "pg1fs"
mmcblk0p4: 017afc00  00000200  "pg2fs"
mmcblk0p5: 00200000  00000200  "xbl"
mmcblk0p6: 00200000  00000200  "tz"
mmcblk0p7: 00080000  00000200  "rpm"
mmcblk0p8: 00080000  00000200  "pmic"
mmcblk0p9: 00080000  00000200  "hyp"
mmcblk0p10: 00400000  00000200  "aboot"
mmcblk0p11: 04000000  00000200  "hosd"
mmcblk0p12: 00a00000  00000200  "tool_diag"
mmcblk0p13: 00000400  00000200  "devinfo"
mmcblk0p14: 00020000  00000200  "devcfg"
mmcblk0p15: 00020000  00000200  "lksecapp"
mmcblk0p16: 00040000  00000200  "cmnlib32"
mmcblk0p17: 00040000  00000200  "cmnlib64"
mmcblk0p18: 00040000  00000200  "apdp"
mmcblk0p19: 00040000  00000200  "msadp"
mmcblk0p20: 00000400  00000200  "dpo"
mmcblk0p21: 00a00000  00000200  "sp1"
mmcblk0p22: 00100000  00000200  "ddr"
mmcblk0p23: 00000400  00000200  "cdt"
mmcblk0p24: 00100000  00000200  "rfg_0"
mmcblk0p25: 00100000  00000200  "rfg_1"
mmcblk0p26: 00100000  00000200  "rfg_2"
mmcblk0p27: 00100000  00000200  "rfg_3"
mmcblk0p28: 00100000  00000200  "rfg_4"
mmcblk0p29: 00200000  00000200  "fsg"
mmcblk0p30: 04600000  00000200  "radio"
mmcblk0p31: 01400000  00000200  "adsp"
mmcblk0p32: 00200000  00000200  "fp"
mmcblk0p33: 00a00000  00000200  "slpi"
mmcblk0p34: 02000000  00000200  "mdtp"
mmcblk0p35: 00100000  00000200  "dip"
mmcblk0p36: 00200000  00000200  "venus"
mmcblk0p37: 00447400  00000200  "reserve1"
mmcblk0p38: 00100000  00000200  "misc"
mmcblk0p39: 00200000  00000200  "modemst1"
mmcblk0p40: 00200000  00000200  "modemst2"
mmcblk0p41: 01400000  00000200  "fataldevlog"
mmcblk0p42: 01e00000  00000200  "devlog"
mmcblk0p43: 00140400  00000200  "local"
mmcblk0p44: 00010000  00000200  "extra"
mmcblk0p45: 00000400  00000200  "fsc"
mmcblk0p46: 00100000  00000200  "rfg_8"
mmcblk0p47: 00002000  00000200  "ssd"
mmcblk0p48: 02000000  00000200  "persist"
mmcblk0p49: 00020000  00000200  "sec"
mmcblk0p50: 00080000  00000200  "frp"
mmcblk0p51: 00a00000  00000200  "ramdump"
mmcblk0p52: 00000400  00000200  "skylink"
mmcblk0p53: 02d00000  00000200  "carrier"
mmcblk0p54: 00080000  00000200  "keystore"
mmcblk0p55: 00080000  00000200  "keymaster"
mmcblk0p56: 00100000  00000200  "mota"
mmcblk0p57: 01000000  00000200  "dsp"
mmcblk0p58: 00d0d400  00000200  "reserve2"
mmcblk0p59: 04000000  00000200  "boot"
mmcblk0p60: 04000000  00000200  "recovery"
mmcblk0p61: 0e000000  00000200  "cache"
mmcblk0p62: ef000000  00000200  "system"
mmcblk0p63: 1e000000  00000200  "userdata"
mmcblk0p64: 03c00000  00000200  "apppreload"
mmcblk0p65: 03c00000  00000200  "cota"
mmcblk0p66: 01000000  00000200  "absolute"

Das sind 66 Partitionen! Wird ja immer besser…

Und wisst Ihr was Custom ROM Entwickler machen? Sie verändern genau EINE dieser 66 Partitionen! Dann bekommen Sie eventuell noch, von einem weiteren findigen Entwickler, einen modifizierten Kernel – „boot“ – oder nehmen einige findige Veränderungen am RamDisk – einem Teil des Kernel – vor und belassen den Rest im Originalzustand.

Eine weitere Sache von der Ihr in diesem Zusammenhang sicherlich schon gehört habt, ist die Recovery. Eben dies ist die Partition in die Ihr bootet um eine Custom ROM zu flashen, ein Backup durchzuführen, oder Dinge wiederherzustellen. Sie ist sozusagen das Pferd Schattenfell das Gandalf trägt. Mit ihr steht und fällt alles, denn ohne sie werdet Ihr niemals eine Custom ROM installieren können. Und die ROM ist lediglich eine weitere Partition, die auf dem Speicherchip vorhanden ist.

Das System hat die Partition Nummer 62 und ist eben Eure ROM. Der Kernel – oder boot – die Partition Nummer 59 und die Recovery Nummer 60. Oh, bevor ich es vergesse! Die userdata – was Ihr als Interne SD-Card kennt – liegt auf Partition Nummer 63. Nach ihr kommen lediglich drei verbleibende Partitionen. Wir befassen uns also im Wesentlichen mit vier Partitionen, richtig!?

Nicht ganz! Die Partition namens „apppreload“ ist beim ersten Gerätestart ebenfalls wichtig. Auf ihr befinden sich – in Ordnern sortiert – alle betreiberabhängig zu installierenden Apps. Beim ersten Starten und Einrichten Eures Handys – beispielsweise dem HTC 10 – erkennt die ROM aus der Kombination von CID und SKU bei welchem Mobilfunktbetreiber das Gerät gekauft wurde, und installiert bereits im Zuge dessen alle in dem jeweiligen Ordner der /preload Partition enthaltenen – oft als Bloatware bezeichneten – Anwendungen vor.

Und der gesamte Rest? Es ist so denkbar einfach. Ihr kennt ihn als, na ratet mal?

Firmware – Ja. Henne und Ei.

Was bedeutet es also jetzt, wenn man sagt “Update Deine Firmware”?

Ich habe Euch zwei Partitonen zugestanden, das System und den Kernel, das TWRP (Team Win Recovery Project) stellt Euch eine weitere zur Verfügung, die Recovery. Allerdings aktualisiert Euer OEM – ebenso wie HTC – über ein OTA Update im Regelfall viele viele Partitionen mehr. Die Anzahl der Partitionen, die aktualisiert werden hängt dabei sehr davon ab woran sie gearbeitet haben und welche Aktualisierungen in Folge dessen notwendig sind.

So wird der Bootloader – aboot/hboot – bei nahezu jedem Update aktualisiert, während der Touchpanel Treiber – für Euer Display – meist nur ein oder zweimal innerhalb des Lebenszyklus Eures Smartphone aktualisiert wird. Bei meinem One (M8) wurde eine Partition aktualisiert, die man so vorher nicht erlebt hatte – der Controller für den NAND Chip. Verrück, nicht wahr. Das Radio – welches für alle kabellosen Verbindungen Eures Smartphone zuständig ist – wird recht häufig aktualisiert.

Letzlich gibt es noch Dinge, wie TZ (trusted zone) wo DRM Keys und ähnliches gespeichert sind/werden, und sicherheitsrelevante Dinge, wie die Logging Partitionen, der Splashscreen ( Startbildschirm) usw. …

Normalerweise werdet Ihr in der Lage sein ein neueres System zu flashen – wie das installieren hier heißt – ohne die anderen Partitionen anfassen zu müssen. Entwickelt sich die ROM aber weiter und entfernt sie sich somit immer mehr von der genutzten Firmware – vor allem wenn Ihr lediglich Custom ROMs nutzt – fallt Ihr irgendwann von einer Klippe. Eure ROM wird nicht mehr laufen, oder abstürzen, weil die darunterliegende Firmware nicht mehr länger kompatibel ist. Solltet Ihr Euer Gerät nicht verändern und immer die – durch den Hersteller – bereitgestellte ROM und damit verbundene OTA Updates nutzen, kann Euch dies nicht passieren, da zu jeder Zeit alle relevanten Dinge – inklusive der Firmware – aktualisiert werden.

Aber so funktionieren Custom ROMs leider nicht. Auch nicht wenn der Entwickler die Funktion eines OTA Update anbietet, ist dies bei Weitem nicht so vollständig wie ein Hersteller Update, da es NIE eine aktualisierte Firmware beinhalten wird! Nutzt Ihr also eine Custom ROM, oder wollt Diese nutzen, stellt zu jeder Zeit sicher, dass ihr selbst die Firmware aktualisiert, damit Euer Smartphone weiterhin so läuft und funktioniert, wie Ihr es Euch vorstellt.

Ich hoffe dieser Artikel hilft Euch daabei die Welt eines Androiden ein wenig klarer zu sehen!

Advertisements

5 Kommentare zu „Android Grundlagen – Firmware oder ROM, die Henne-Ei-Frage!

Gib deinen ab

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

w

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Create a website or blog at WordPress.com

Nach oben ↑

%d Bloggern gefällt das: