In memory of Ben “bushing” Byer, who passed away on Monday, February 8th, 2016.

Difference between revisions of "Boot process"

From WiiBrew
Jump to navigation Jump to search
m (totally forgot that)
(not entirely sure this clarifies things...)
Line 1: Line 1:
 +
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:
 
The code components involved in the Wii's boot process are, in order:
  
* [[boot0]] A mask rom, run by the [[Starlet]]
+
* (ARM) [[boot0]] A mask ROM (1.5K) which loads boot1 and verifies its SHA1 hash against that stored in [[Hardware/OTP|OTP]]. If there is a mismatch, the system will halt.
* [[boot1]] Lives in a modifiable area of the NAND but cannot be changed due to its hash being stored in the [[Hardware/OTP|OTP]]. Run by the [[Starlet]].
+
* (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.
* [[boot2]] A modifiable area of Flash, signature checked by Boot1, Run by the [[Starlet]]. it writes to nand what state the wii is in and starts the system menu [[IOS]]
+
* (ARM) [[boot2]] A stripped-down version of IOS. It reads the NAND filesystem to load the System Menu's [[IOS]]
* [[IOS]] sees its being booted thanks to the writes of [[boot2]] and starts the [[System Menu]] title (00000001/00000002). also run by [[Starlet]]
+
* (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).
* [[System Menu]] / System Menu's IOS 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.
+
* (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.
 
{{stub}}
 
{{stub}}

Revision as of 07:42, 2 December 2009

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.