IOS
IOS, kurz für IOP Operating System, ist das Betriebssystem der Wii und der vWii, welches auf dem Starlet- bzw. IOP-Koprozessor im Hollywood läuft. Es stellt Services bereit, die von der Wii benutzt werden können, um auf viele Systemgeräte zuzugreifen: USB, Networking, Sicherheit, App-Management, NAND, SD-Karte, optische Medien und WiiConnect24-Features. Programmiert wurde IOS von BroadOn Communications Corporation in Kalifornien.
Jegliche Software, die das Wii SDK oder libogc nutzt, benötigt ein laufendes IOS auf dem Starlet. IOS wird nicht im Gamecube-Modus (stattdessen wird MIOS benutzt) oder in BootMii und verwandter Software (Wii Linux) genutzt (MINI).
IOS wird in einem eigenartigen Weg versioniert - es gibt nicht ein einziges IOS, auf dem jegliche Software läuft, sondern mehrere Zweige (sogenannte Branches), die typischerweise zu einer oder mehreren Versionen des Wii SDKs passen. Jeder Branch hat eine stabile, eingefrorene API und alte Versionen erhalten nur noch Bugfixes. Nintendo hat sogar einen komplett neuen IOS-Branch erstellt, der sich nur im Standardwert der TCP-Buffergröße unterschied. Eine voll aktualisierte Wii enthält eine aktuelle Kopie für jeden Branch von IOS. Diese sind als separate Titel vorhanden, oft "IOS-Slots" genannt. Aufgrund dessen ist es normalerweise sicher, ein IOS zu patchen, zu deinstallieren oder neu zu installieren, solange es nicht vom Systemmenü genutzt wird. Falls etwas schiefgeht, kann eine funktionierende Version einfach drüberinstalliert werden. Hohe, ungenutzte IOS-Slots (wie 249, 250, etc.) werden genutzt, um gepatchte IOS (sogenannte cIOS) oder alternative Starlet-Software (BootMii als IOS254, welches die armboot.bin (MINI) von der SD-Karte lädt) zu installieren und die bestehenden nicht anzufassen.
IOS ist kein Hypervisor, da es auf einer dedizierten, separaten CPU läuft. Jedoch isoliert IOS seinen Speicher von der Haupt-CPU Broadway ab, kann die Wii neu starten und ist sicher, wenn der PPC kompromittiert wird (allerdings wurden viele Lücken gefunden). IOS ist also in der Sicherheitshierarchie höher, als Code, der auf dem PowerPC läuft.
Da die IOS-API oft aufwärtskompatibel ist, kann offizielle Software auch mit einem anderen IOS geladen werden (allerdings wird dies nicht empfohlen). Homebrew-Software kann unter einer Vielzahl von IOS laufen, oft nur eingeschränkt von speziellen Features (wie USB).
Wenn die Wii im Standby-Modus (WiiConnect24) ist (orange LED), ist die Haupt-PowerPC-CPU ausgeschaltet, aber IOS läuft noch.
Im internen Dateisystem befinden sich die installierten IOS in dem Verzeichnis /title/00000001/000000xx/, wobei xx für eine hexadezimale Zahl steht, welche von 03 (für IOS3) bis FF (für IOS255) reicht. Daraus ergeben sich die zuvor erwähnten "IOS-Slots". Zahlen über FF werden für andere Systemtitel verwendet; so befindet sich z.B. BC in /title/00000001/00000100/. Aus diesem Grund werden BC und MIOS manchmal fälschlich als "IOS256" und "IOS257" (ergibt sich aus den hexadezimalen Pfad-Endungen 100 bzw 101) identifiziert. Der Verzeichnispfad entspricht dabei auch der Title-ID. So befindet sich z.B. IOS58 mit der Title-ID 000000010000003A auch an dem Pfad /title/00000001/0000003A/.
Eine Ausnahme gibt es bei der vWii: Hier lautet der Pfad /title/00000007/000000xx/, und auch die Title-ID verändert sich entsprechend.