by IceEyes
Premessa:
Qualche giorno fa mi sono trovato nel bel mezzo di una discussione con un mio amico e mi sono reso conto che, pur essendo abbastanza ferrato sulla gestione degli homebrew e degli IOS, non aveva ben chiaro quale fosse l’esatta sequenza della procedura di avvio di una Wii.
Ho iniziato a spiegarglielo, ma mi sono reso subito conto che usare termini strettamente tecnici non avrebbe portato a nulla di buono per cui ho cercato di usare terminologia ed esempi, diciamo “poco ortodossi” o per meglio dire “terra terra”. Alla fine, almeno apparentemente, credo di avere ottenuto il risultato voluto…
Premesso questo, rendo partecipi tutti quelli del forum che si trovano nella stessa condizione del mio amico e mi scuso nuovamente per il linguaggio, sicuramente (ma volutamente) poco tecnico.
Introduzione:
La wii, come tutte le console, ha un “software” interno che ne consente l’inizializzazione dell’hardware, cioè la configurazione per l’uso dei componenti esterni (periferiche usb, controller, ecc…) e la gestione del sistema operativo vero e proprio.
Gli IOS, per chi non lo sapesse, non sono altro che parte di questo “software” e consentono l’input e l’output dei dati rispettivamente verso e dalla console. Detto in parole povere, gli IOS consentono di usare il wiimote, di usare gli hard disk o i microfoni, consentono di gestire il sistema operativo, ecc… i cIOS sono versioni modificate di questi IOS e aggiungono funzioni supplementari agli IOS originali (ad esempio il cIOSx di Waninkoko e i cIOS di Hermes).
Il boot della Wii:
Per boot della wii si intende l’insieme di procedure che consentono l’avvio della console. Il boot è suddiviso in tre parti: il boot0, il boot1 ed infine il famoso boot2, di cui tutti hanno capito l’importanza, ma pochi hanno capito perché.
Boot0
Il boot0 è una parte di codice che risiede dentro ad un chip chiamato Hollywood ed è la prima cosa che viene eseguita quando accendiamo la wii. E’ stato impostato in fabbrica in modo che possa essere letto ma non sovrascritto e la sua funzione principale è quella di inizializzare il sistema.
Boot1
Il boot0 carica il boot1, che si trova nella parte iniziale della NAND (software interno alla wii), lo decripta (lo rende leggibile) e lo esegue. Il boot1 a differenza del boot0 è modificabile, è scritto cioè su una memoria accessibile sia in lettura che in scrittura, ma la sua modifica comporta la morte della wii in quanto il boot0, se il boot1 viene modificato, “se ne accorge” e blocca la procedura di avvio della console.
Boot2
Il boot1 carica il boot2, che si trova in una parte della NAND indipendente dal sistema operativo, lo decripta (lo rende leggibile) e lo esegue. Il boot2 quindi è scritto anch’esso su una parte di memoria accessibile sia in lettura che in scrittura ed è su questo che noi agiamo, quando possibile, per “manomettere” l’avvio della wii.
Perché hai detto: “quando possibile”? Mi ha chiesto l’amico.
E’ presto detto: come avviene per il boot0, che si accorge se il boot1 è stato “taroccato”, anche il boot1 si accorge se il boot2 è stato “taroccato”, ma in alcuni casi (a seconda della versione del boot1) noi possiamo far credere al boot1 che il boot2 non è stato modificato, ma che è ancora quello originale della Nintendo. Questo è possibile tramite un bug (“errore”) nel codice del boot1, chiamato trucha bug, che ci consente, come ho detto, di “aggirare” il controllo dell’autenticità del boot2 (a questo punto all’amico fumavano le orecchie, ma credo avesse capito, più o meno… ).
Le versioni che consentono di modificare il boot2, senza che la wii s’inchiodi (per i motivi appena detti), sono:
Il boot1a, presente nelle Wii più vecchie e poco comune;
Il boot1b, presente nelle maggior parte delle Wii più vecchie dal momento del lancio della console sul mercato.
Le versioni che NON consentono di modificare il boot2, perché è stato corretto il bug per la verifica della firma, invece sono:
Il boot1c, prima versione (sembra sia stato usato per la prima volta nel 2008);
Il boot1d, relativamente recente.
Cosa facciamo in pratica: andiamo a modificare il boot2 installando un software che si chiama BootMii che ci consente di:
- Ingannare il boot1, in modo che questo non si accorga che la sequenza di avvio è stata modificata;
- Avviare, se richiesto, il codice del BootMii (con cui possiamo gestire la NAND o avviare l’Homebrew Channel);
- Avviare il sistema operativo originale della wii.
“Ma cosa facciamo se il boot1 non è del tipo a o b?”, mi ha chiesto l’amico.
Beh!!! In quel caso, purtroppo per noi, abbiamo un’unica possibilità e cioè installare il BootMii come IOS aggiuntivo che, in quanto tale, non ci protegge in modo totale dai brick della Wii, come avviene se installato nel boot2, ma ci consente comunque di gestire la NAND (ad esempio per farne un backup per eventuali ripristini futuri).
Riassumendo:
Il boot1, del tipo a e b, è affetto dal trucha bug e quindi è possibile modificare il boot2 a piacimento in modo da avviare un nostro codice (BootMii o in teoria qualunque altra cosa) prima dell’avvio del sistema operativo. Questo significa che, se facciamo casini sugli IOS o installiamo wad corrotti, abbiamo la possibilità di ripristinare il tutto avviando gli homebrew adeguati al ripristino.
Il boot1, del tipo c e d, NON è affetto dal trucha bug, per cui non possiamo modificare il boot2 senza che la wii si blocchi in fase di avvio (brick). In questo caso possiamo installare il BootMii esclusivamente come IOS aggiuntivo, che dovrà essere avviato tramite altro software (ad esempio l’HomeBrew Channel).
E’ importante ripetere che il BootMii installato come IOS non fornisce alcuna protezione dai brick, per cui è essenziale installare altri programmi (ad esempio il PriiLoader) che seppur non come il BootMii su boot2 (che ripeto, fornisce una copertura quasi totale) consentono di avviare le procedure per il recupero, prima dell’avvio del sistema operativo. In questo caso però, se ci sono danni all’IOS del sistema operativo stesso… o usiamo la wii come fermacarte oppure la mandiamo in assistenza!!!
Conclusione:
Un modo per capire la versione del boot1 sembra essere quello di leggere il "date code" sul chip Hollywood interno alla console. Se questo risulta essere inferiore a 0830 allora molto probabilmente la Wii contiene un boot1a o un boot1b.
Per chi, come è comprensibile, non vuole smontare la wii, esiste un software che si chiama WiiNand. Questo software ci mostra la versione del boot1 e le varie keys (chiavi di codifica, ecc..) incluse nella NAND. La versione 0.2 (l’ultima), sembra avere problemi con il riconoscimento delle versioni superiori alla 1b ma in quel caso sapremmo in automatico che si tratta di boot1 senza trucha bug. Esistono ovviamente metodi più complicati per essere sicuri via software di che tipo di boot1 si ha nella propria Wii, ma qui andremmo a finire troppo sul complicato (uno di questi è la lettura tramite editor esadecimale del backup della nand…)
Note:
Questo post non è finalizzato alla risoluzione dei problemi che possono insorgere durante l’avvio della wii, per questo ci sono le apposite guide e il forum. Serve invece a rendere più chiaro cosa andiamo a modificare nella sequenza di avvio della wii quando installiamo una softmod e a chiarire l’importanza del BootMii come Boot2 e del PriiLoader se il BootMii viene installato come IOS aggiuntivo.
Spero di essere stato d’aiuto. Se il post è di vostro gradimento, fatemelo sapere. Un è sempre gradito!!!
Guide di riferimento:
Registrati o effettua il Login per visualizzare il link!.
Registrati o effettua il Login per visualizzare il link!.
Registrati o effettua il Login per visualizzare il link!.
AVVISO
LA GUIDA E' STATA REDATTA DAL SOTTOSCRITTO , QUINDI E' ASSOLUTAMENTE VIETATA LA COPIA PARZIALE O TOTALE DEL CONTENUTO, SALVO PREVIA AUTORIZZAZIONE DELLO STAFF DI HACKWII.IT