Ogólnie rzecz biorąc, w Wii znajdują się dwa systemy operacyjne. Jeden wykonywany jest w Broadway'u (głównym CPU), a drugi w Starlet (CPU WE/WY). Oba znajdują się w tych 512 MB NAND i mogą być aktualizowane.
System operacyjny Starlet
Starlet sam w sobie to już ciekawy sprzęt, ale jego oprogramowanie jest jeszcze bardziej intrygujące. Widzisz, ten system operacyjny nie tylko ma pełny dostęp do każdego zakątka konsoli, ale jest także pierwszą rzeczą uruchamianą na konsoli po wciśnięciu przycisku zasilania.
Starlet uruchamia system nieoficjalnie określany jako System Operacyjny Wejścia/Wyjścia [ang. Input/Output Operating System] lub 'IOS' (proszę, nie myl tego z iOS firmy Apple) . IOS to w pełni funkcjonalny system operacyjny składający się z:
- Mikrojądra: Kontroluje procesor ARM9, wykonuje procesy i komunikuje się z innym sprzętem przy użyciu sterowników.
- Sterowników: Umożliwiają komunikację ze sprzętem znajdującym się poza procesorem (WE/WY).
- Procesów: Wykonują zadanie, takie jak zarządzanie siecią lub wdrażanie systemu plików.
- Rdzenia kryptograficznego: Przyspiesza operacje związane z szyfrowaniem (Tylko AES i SHA-1).
Mając to na uwadze, głównym zadaniem IOS jest odciążenie głównego procesora poprzez abstrakcję WE/WY i bezpieczeństwa. Z tego powodu programiści nie muszą się nimi martwić. Aby to osiągnąć, Starlet rezerwuje od 12 do 16 MB RAM GDDR3 dla swoich zadań, reszta jest używana przez Broadway i GPU.
Broadway i Starlet komunikują się ze sobą za pomocą Komunikacji Międzyprocesowej lub protokołu 'IPC': W skrócie, oba procesory dzielą po dwa rejestry. Jeden CPU może zapisywać w rejestrach drugiego (zapisane dane mogą reprezentować polecenie lub wartość), a stamtąd CPU odbiorca może wykonać funkcję w odpowiedzi.
System aktualizacji IOS jest nieco skomplikowany: Zaktualizowane wersje IOS nie są instalowane na starych, ale w innym gnieździe (zarezerwowany obszar w NAND dla IOS jest podzielony na 'gniazda'). Jest to wyłącznie ze względu na kompatybilność, ponieważ pozwala starszemu oprogramowaniu Wii na używanie tej samej wersji IOS, dla której zostało opracowane.
Nintendo często publikowało aktualizacje IOS w celu poprawy obsługi sprzętu (co było konieczne, gdy dostarczono nowe akcesorium). Jest tylko jeden wyjątek, gdy aktualizacje IOS faktycznie zastępują starsze: Gdy wykryto, że konkretna wersja ma lukę, którą można wykorzystać. Robione to było tylko ze względów bezpieczeństwa.
Po włożeniu gry GameCube dzieje się coś innego: Startlet zamiast tego uruchamia MIOS. Ten wariant IOS po prostu nakazuje Starletowi emulację oryginalnego IPL.
System operacyjny Broadway
Ten jest powszechnie znany jako Menu Systemowe i działa na głównym procesorze PowerPC (Broadway).

Menu systemowe z wieloma zainstalowanymi kanałami.

Menu ustawień służące do zmiany ustawień.

Tablica kontaktowa przechowuje listy pogrupowane według daty.
W porównaniu z IOS nie uważałbym tego za 'w pełni rozwinięty' system operacyjny, ale bardziej za 'program', który pozwala użytkownikowi wykonywać następujące operacje:
- Uruchom grę Wii/GameCube: Tylko wtedy, gdy włożona jest prawidłowa gra.
- Zmień ustawienia konsoli: W tym między innymi godzinę, datę, tryb wideo lub lokalizację czujnika.
- Uruchom aplikacje: Jedną z nowości tej konsoli jest możliwość instalacji niewielkich gier Wii (tzw. 'WiiWare'), gier retro (gry 'Virtual Console') lub po prostu wygodnych aplikacji (takich jak przeglądarka internetowa). Nintendo nazwało je kanałami, ale w systemie operacyjnym są one również określane jako tytuły.
- Użytkownicy mogą pobierać/kupować kanały za pośrednictwem wstępnie zainstalowanego kanału o nazwie Kanał Sklepowy Wii.
- Tytuły Virtual Console zawierały emulator do samodzielnego uruchamiania gry. Co ciekawe, emulator nie jest współdzielony w systemie ani nawet pomiędzy grami z tej samej platformy. Pozwala to zoptymalizować emulator dla określonych gier.
- Wysyłaj/Odbieraj wiadomości: Wii mają unikalny identyfikator (wypalony w ich chipie SEEPROM), który można udostępniać w celu wymiany wiadomości między innymi Wii. Wiadomości można zobaczyć na Tablicy Kontaktowej.
- Gry Nintendo i Wii również używały tego medium do dostarczania biuletynu.
Podobnie jak IOS, Nintendo również wydało wiele aktualizacji tego systemu. Niektóre naprawiły błędy bezpieczeństwa, inne dodały więcej funkcji. Godną uwagi nową funkcją była możliwość przechowywania kanałów na karcie SD.
Każdy program działający na Broadwayu (w tym Menu Systemowe) działa w oparciu o określoną wersję IOS. Po uruchomieniu gry lub kanału Starlet uruchamia się ponownie, używając zadeklarowanej wymaganej wersji IOS.
Nośnik aktualizacji
Nintendo nazywa je aktualizacjami systemowymi. Zawierają one oba systemy w tym samym pakiecie i używają numerów porządkowych do oznaczania wersji. Ostatnia znana wersja to 4.3E, wydana w czerwcu 2010 r.
Pakiety aktualizacji systemu można pobrać z serwerów Nintendo lub dysków z grami. Użytkownicy mogą ręcznie sprawdzać dostępność aktualizacji za pomocą Menu Systemowego. Aktualizacje są wymuszane, jeśli gra wymaga określonej wersji systemu IOS, która nie jest zainstalowana (a płyta zawiera wymagane pakiety).
Sekwencja rozruchowa
Do tej pory omówiliśmy dwa bardzo różne systemy operacyjne, które znajdują się w tej konsoli i działają jednocześnie. Wydaje się to dość proste, chociaż oba muszą być starannie skoordynowane podczas uruchamiania konsoli, aby później działały poprawnie.
Biorąc to pod uwagę, proces uruchamiania wygląda następująco :
- Użytkownik naciska przycisk ON na konsoli.
- Etap Boot0: Starlet uruchamia program znajdujący się we wbudowanym Mask ROM-ie (1,5 KB).
- Krótko mówiąc, Starlet odszyfrowuje i sprawdza integralność pierwszych 96 KB NAND, następnie oblicza swój hash i porównuje go z zapisanym hashem znalezionym we wbudowanej pamięci OTP Starlet. Jeśli oba hashe nie pasują, konsola jest indukowana w nieskończoną pętlę.
- Etap Boot1: Starlet uruchamia mały program znaleziony we wspomnianym 96 KB NAND.
- Ten program po prostu poinstruuje Starlet, aby zainicjowała (wyczyściła) 64 MB pamięci RAM GDDR3, a następnie odszyfrowała i zweryfikowała resztę NAND.
- Etap Boot2: Starlet ładuje początkowy system IOS (potrzebny do Menu Systemowego), a następnie uruchamia Broadway.
- Broadway uruchamia Menu Systemowe. Użytkownik ma teraz kontrolę.