Boot process

From WiiBrew
Jump to navigation Jump to search

The Wii has two processors -- an ARM core (inside the Hollywood, known as "Starlet") and a PowerPC (Broadway). The boot process starts on the ARM, which eventually bootstraps the PPC.

The code components involved in the Wii's boot process are, in order:

  • (ARM) boot0 A mask ROM (1.5K) which loads boot1 and verifies its SHA1 hash against that stored in OTP. If there is a mismatch, the system will halt.
  • (ARM) boot1 Lives in the first block of NAND; loads one of two copies of boot2 from blocks 1-7 of NAND and verifies it using RSA / SHA1.
  • (ARM) boot2 A stripped-down version of IOS. It reads the NAND filesystem to load the System Menu's IOS
  • (ARM) IOS sees its being booted thanks to the (lowmen?) writes of boot2 and bootstraps the PPC to start the System Menu title (1-2).
  • (PPC) System Menu The System Menu is the first visible user interface since it is the first code running on the PowerPC. It has higher access privileges compared to games (e.g. it can read and write to every savegame). Its signature is only checked upon installation. boot2 only makes sure that the HMAC signatures on the NAND's filesystem are valid.