Changes

14 bytes added ,  02:41, 12 March 2021
fix redlink
Line 1: Line 1:  
boot0 is the first-stage bootloader in the [[Starlet]] ARM core on board the [[Hollywood]]; it's contained in 4K of Mask ROM (only 1.5K of which is actually used).
 
boot0 is the first-stage bootloader in the [[Starlet]] ARM core on board the [[Hollywood]]; it's contained in 4K of Mask ROM (only 1.5K of which is actually used).
   −
It contains code to read the first 48 pages of the attached [[NAND flash]], decrypt them with a fixed AES key, hash them with {{hw|SHA-1 Engine}}, and compare the hash with a value read from {{hw|OTP}} memory. If the hashes do not match. The system will refuse to boot. If the hash in OTP is all zeroes. Then the system will always boot -- this is true of development consoles and probably also during the manufacturing process. For more discussion on this subject, see [http://hackmii.com/2008/05/boot0/ bushing's HackMii post].
+
It contains code to read the first 48 pages of the attached [[Hardware/NAND|NAND flash]], decrypt them with a fixed AES key, hash them with {{hw|SHA-1 Engine}}, and compare the hash with a value read from {{hw|OTP}} memory. If the hashes do not match. The system will refuse to boot. If the hash in OTP is all zeroes. Then the system will always boot -- this is true of development consoles and probably also during the manufacturing process. For more discussion on this subject, see [http://hackmii.com/2008/05/boot0/ bushing's HackMii post].
    
The division between boot0/boot1 allows the RSA signature verification to be done using trusted code loaded from flash. It would not have fit into the 4K of space available. It is coded in a mixture of C and assembly.
 
The division between boot0/boot1 allows the RSA signature verification to be done using trusted code loaded from flash. It would not have fit into the 4K of space available. It is coded in a mixture of C and assembly.
303

edits