Dieser Artikel betrifft die Nintendo Wii U

IOSU

Aus WiiDatabase Wiki
Wechseln zu:Navigation, Suche

IOSU ist das Betriebssystem der Wii U, welches auf dem ARM läuft und Titel- und Hardware-Zugriffe verwaltet. Zu den Aufgaben zählen die Durchsetzung des Code-Signings, das Verifizieren aller Titel vor der Installation und dem Start und dem Verwalten des Zugriffes auf Hardware, wie Speicher, Netzwerk, USB und dem GamePad. Der PowerPC kann mit IOSU über ein IPC-Interface kommunizieren und Sicherheits- und Hardware-Anfragen durchführen.

Bei IOSU handelt es sich um einen kompletten Rewrite von IOS der Wii. Im Gegensatz zu IOS existiert allerdings nur ein IOSU, da die Wii U ein "richtiges" Betriebssystem hat, welches auch im Hintergrund läuft (auf der Wii laufen die Spiele direkt auf dem "blanken Metall").

IOSU wurde von Nintendo entwickelt und stellt eine Mikrokernel-Architektur dar. Es enthält einen einfachen Kernel, der Speicher-, Prozess- und Threadmanagement implementiert. Gerätetreiber und Security-Handler laufen als Prozesse im ARM Usermode und werden "Resource Managers" (RM) genannt. Diese können sich als Request-Handler für Ressourcen registrieren, welche als Knoten unter /dev in einem virtuellen Dateisystem repräsentiert werden. Sie kommunizieren miteinander per standardisierten Unix-Dateioperationen über den Kernel (open, close, read, write, seek, ioctl, ioctlv).

Der PowerPC-Teil des Betriebssystems heißt Cafe OS.

ELF-Loader

Das IOSU Firmware-Abbild (fw.img) beinhaltet zwei verschiedene Code-Teile: einen kleinen ELF-Loader und die eigentliche Firmware-Binary (ELF-Datei). Jedes Mal, wenn IOSU gestartet wird, ist der ELF-Loader der erste Code-Teil, der ausgeführt wird und Vorbereitungen für die eigentliche IOSU-Binary durchführt. Während des Starts der Wii U (Coldboot) lädt boot1 das Abbild. Allerdings muss IOS-MCP dies auch bei einem Neustart (Warmboot) tun. Das IOS-MCP-Modul leert zuerst den MEM1 und lädt dann die fw.img vom NAND. Es verifiziert den Header des Abbilds, entschlüsselt es mit dem Starbuck Ancast Key und nutzt zuletzt den execute_privileged Systemaufruf, um den Speicherschutz zu deaktivieren und zu IOSUs ELF-Loader-Code zu springen.

Nachdem der IOSU-Kernel vom ELF-Loader geparst wurde, wird er vom SRAM der Wii U (0xFFFF0000) gestartet. Der Kernel folgt einer Standard ARM-Mikrokernel-Architektur.

Weblinks