Generalmente hablando, hay dos sistemas operativos que conviven en la Wii. Uno es ejecutado en el Broadway (CPU principal) y el otro en el Starlet (CPU de I/O). Ambos residen dentro de los 512 MB de memoria de la NAND y pueden ser actualizados.
SO del Starlet
El Starlet ya es una pieza de hardware interesante, pero su software es aún más intrigante. Verás, este sistema operativo no solo tiene acceso completo a cada rincón de la consola, sino que también es lo primero que se ejecuta cuando se presiona el botón de encendido.
El Starlet ejecuta un sistema extraoficialmente denominado Sistema Operativo de Entradas/Salidas o "IOS" (por favor, no confundir esto con el iOS de Apple) . IOS es un sistema operativo con todas las funciones compuesto por:
- Un Microkernel: controla la CPU ARM9, ejecuta procesos y se comunica con otro hardware mediante los controladores.
- Controladores: Habilitan la comunicación con hardware externo a la CPU (I/O).
- Procesos: realizan una tarea, como la gestión de la red o la implementación de un sistema de archivos.
- Núcleo criptográfico: acelera las operaciones relacionadas con el cifrado (solo AES y SHA-1).
Con esto en mente, la tarea principal de IOS es aliviar la carga de trabajo de la CPU principal abstrayendo I/O y seguridad. Por este motivo, los programadores no tienen que preocuparse de esos asuntos. Para lograr esto, el Starlet reserva entre 12 y 16 MB de RAM GDDR3 para sus tareas, el resto es utilizado por el Broadway y la GPU.
El Broadway y el Starlet se comunican entre sí mediante un protocolo de comunicación entre procesos o "IPC": en pocas palabras, ambas CPU comparten dos registros cada una. Una CPU puede escribir en los registros de la otra (los datos escritos pueden representar un comando o un valor) y desde allí, la CPU receptora puede realizar una función en respuesta.
El sistema de actualización de IOS es un poco complicado: las versiones actualizadas de IOS no se instalan sobre las antiguas, sino en otra ranura (el área reservada en NAND para IOS está dividido en "ranuras"). Esto es puramente por razones de compatibilidad, ya que permite que el software antiguo de la Wii siga usando la misma versión de IOS para la que fue desarrollado.
Nintendo lanzaba a menudo actualizaciones de IOS para mejorar la compatibilidad con el hardware (lo cual era necesario cuando se enviaba un nuevo accesorio). Únicamente hay una excepción cuando las actualizaciones de IOS realmente reemplazan a las anteriores: cuando se descubre que una versión específica tiene una vulnerabilidad explotable. Esto era sólo por razones de seguridad.
Cuando se inserta un juego de la GameCube, sucede algo diferente: el Starlet inicia un MIOS en su lugar. Esta variante de IOS solo ordena al Starlet emular la IPL original.
SO del Broadway
Este se conoce comúnmente como el menú del sistema y se ejecuta efectivamente en la CPU PowerPC principal (Broadway).

Menú del sistema con muchos canales instalados.

Menú de ajustes utilizado para cambiar la configuración.

El tablón de mensajes almacena cartas agrupadas por fecha.
En comparación con IOS, no lo consideraría un sistema operativo "completo", sino más bien un "programa" que permite al usuario realizar las siguientes operaciones:
- Iniciar el juego de Wii/GameCube: solo si hay uno válido insertado.
- Cambiar la configuración de la consola: Incluyendo hora, fecha, modo de vídeo o ubicación de la barra de sensores, entre otros.
- Ejecutar aplicaciones: Una de las novedades de esta consola es la posibilidad de instalar pequeños juegos de Wii (llamados "WiiWare"), juegos retro (juegos de la "Consola Virtual") o simplemente aplicaciones convenientes (como un navegador de Internet). Nintendo llamó a esto canales, pero el sistema operativo también los denomina títulos.
- Los usuarios pueden descargar/comprar canales a través de un canal preinstalado llamado Canal Tienda Wiil.
- Los títulos de la consola virtual incorporan un emulador para ejecutar el juego. Curiosamente, el emulador no se comparte en todo el sistema ni siquiera entre juegos de la misma plataforma. Esto permite optimizar el emulador para juegos específicos.
- Enviar/Recibir mensajes: las Wii tienen una identificación única (grabada en su chip SEEPROM) que se puede compartir para intercambiar mensajes con otras Wii. Los mensajes se pueden ver en el Tablón de mensajes.
- Nintendo y los juegos de Wii también utilizaron este medio para proporcionar un diario.
Al igual que IOS, Nintendo también lanzó múltiples actualizaciones para este sistema. Algunos arreglaron agujeros de seguridad, otros agregaron más funciones. Una nueva característica notable fue la capacidad de almacenar canales en la tarjeta SD.
Cualquier programa que se ejecute en el Broadway (incluido el menú del sistema) depende de una versión específica de IOS para funcionar. Cuando se inicia un juego o un canal, el Starlet se reinicia usando la versión declarada de IOS necesaria.
Medio de actualización
Nintendo se refiere a ellas como ** Actualizaciones del sistema **. Contienen los dos sistemas operativos en el mismo paquete y utilizan números ordinales para el control de versiones. La última versión conocida es 4.3E, lanzada en junio de 2010.
Los paquetes de actualización del sistema se pueden obtener de los servidores de Nintendo o de los discos de juegos. Los usuarios pueden buscar actualizaciones manualmente usando el menú del sistema. Las actualizaciones son obligatorias si un juego requiere una versión específica de IOS que no está instalada (y el disco contiene los paquetes necesarios).
Secuencia de arranque
Hasta ahora hemos analizado dos sistemas operativos muy diferentes que residen en esta consola y se ejecutan simultáneamente. Esto parece bastante sencillo, aunque ambos deben coordinarse cuidadosamente durante el inicio de la consola para que funcione correctamente después.
Dicho esto, el proceso de arranque de esta consola es el siguiente :
- El usuario toca el botón ON en la consola.
- Etapa Boot0: El Starlet ejecuta un programa cableado que se encuentra en su Mask ROM integrada (1,5 KB).
- En pocas palabras, el Starlet descifra y verifica la integridad de los primeros 96 KB de la NAND, luego el Starlet calcula su hash y lo compara con un hash guardado que se encuentra en la memoria OTP integrada del Starlet. Si ambos hashes no coinciden, entonces la consola se induce en un bucle infinito.
- Etapa Boot1: El Starlet ejecuta un pequeño programa que se encuentra en los 96 KB de la NAND antes mencionados.
- Este programa simplemente le indicará al Starlet que inicialice (borre) los 64 MB de RAM GDDR3, luego descifre y verifique el resto de la NAND.
- Etapa Boot2: El Starlet carga el IOS inicial (necesario para el menú del sistema) y luego inicia el Broadway.
- El Broadway arranca el menú del sistema. El usuario toma ahora el control.