A Ovest Di Paperino

Welcome to the dark side.

Hello I am a hack

Avevo promesso che sarei tornato sull’argomento hackintosh per raccontare qualche novità interessante che ho scoperto nel mettere su il sistema che funziona in dual boot in maniera magnifica: lo scopo non è mai stato quello di violare la licenza, ma di cercare di capire a fondo le differenze minime tra un Mac ed un PC. Sono ancora in fase di comprensione, quindi qualche affermazione potrebbe risultare grossolanamente inaccurata. Ovviamente il post è infarcito di considerazioni personali a cominciare dall’interpretazione delle motivazioni dietro alcune scelte di Apple. booloader

Tutto è cominciato ovviamente quando Apple ha deciso di abbandonare l’architettura PPC e passare ad Intel: non a x86 ma all’implementazione x86 di Intel. Il primo problema che Apple ha dovuto risolvere è il boot, visto che i Mac si sono sempre differenziati dai cugini IBM&Co. fin dalla schermata di boot, decisamente semplificata. Il secondo problema è stato quello di proteggere l’IP, la proprietà intellettuale e fare in modo che fosse molto difficile far girare OSX su un comune PC. Il tutto è stato poi vincolato dal fatto che su tali Mac ci doveva comunque poter girare anche Windows: sono convinto che Apple non faccia niente “per caso” ed il supporto a Windows XP è stato ingegnerizzato nel sistema sin dal primo giorno di progettazione (ovviamente sempre secondo me). La parte più semplice del lavoro è stato il porting di tutto il codice visto che ormai tutti i SO sono disegnati per essere portati su diverse architetture. Per tutti questi motivi Apple ha scelto di supportare il boot tramite EFI che altro non è che un BIOS molto evoluto, cosa che secondo me è un ossimoro. Infatti il compito del BIOS è di controllare l’integrità del sistema il più velocemente possibile, interrogare e configurare tutte le periferiche installate e passare il controllo in men che non si può al boot loader vero e proprio. Quest’ultimo è il primo pezzo di software vero che a differenza del firmware viene letto dal supporto di massa.

Il boot-loader ovviamente si incaricherà di controllare l’integrità del sistema da un punto di vista più comprensivo (leggasi: controllare che effettivamente sia un Mac), settare una serie di parametri e passare il controllo al sistema vero e proprio caricando ed eseguendo il kernel. Il boot-loader perciò è la prima misura di difesa che Apple ha a disposizione per evitare che il sistema operativo giri sui cloni. Il secondo espediente usato è ancora più convoluto: ogni periferica hardware PnP ha un suo identificativo particolare pre-stampato nella ROM della periferica come da specifiche PnP. A questo punto basta sostituire l’identificativo associato con uno personalizzato e quella periferica, nonostante sia dal punto di vista elettrico identica ad un’altra, non verrà più riconosciuta come tale e avrà bisogno di driver specializzati. Per fare un esempio se la scheda grafica NVidia GT 9800 viene normalmente riconosciuta come XYZ1, nel caso dell’equivalente Apple la firma viene cambiata in XYZ2. Apple poi ha associato i propri driver al nuovo ID e quindi se teoricamente si sostituisse la scheda grafica con l’equivalente per PC non verrebbe riconosciuta. A conferma quanto appena detto si può fare un esperimento: installare Windows su un Mac via boot-camp e cercare di configurare le periferiche di sistema senza usare i driver scritti ad-hoc da Apple e disponibili sul “lato Windows” del disco di installazione.

Ora tutta questa serie di protezioni funziona solo se si ha la certezza che il software parlerà sempre direttamente con l’hardware: qualora questa assunzione viene a cadere, lo schema di protezione può essere aggirato. Apple ha persino provato a fare in modo che questo fosse impossibile da ottenere introducendo in alcuni modelli un dispositivo TPM: mossa rivelatasi inutile quando a Cupertino hanno capito che il TPM serve a proteggere l’integrità di un sistema dal punto di vista dell’utente finale. E se l’utente finale è il farabutto della questione, come nel caso degli hackintosh, non c’è nulla da fare.

Per aggirare perciò tutte le protezioni imposte basta appunto scrivere un boot-loader che sostituisca quello di sistema. La cosa è estremamente semplificata dal fatto che il boot-loader, per natura sua stessa, è un componente estremamente piccolo. Gli hackintosh-boot-loader moderni fanno (quasi) tutti la stessa cosa seppur con funzionalità diverse tra loro.

La dongle hardware (niente nomi!!) ad esempio, a differenza di altre soluzioni più “soft”, è in grado di riconoscere anche il DVD originale e di fare il boot di quest’ultimo. La cosa buffa della dongle è che è stata ingegnerizzata per non essere copiata perché sotto tutti i punti di vista si comporta semplicemente come una chiavetta USB. Tale ingegnerizzazione ha fatto in modo che la casa produttrice fosse in grado di farsi pagare un sacco di soldi per un accrocchio da 15$ di hardware, riuscendo a battere Apple sullo stesso terreno (overpricing). Nel frattempo anche le soluzioni fatte in casa si sono evolute fino al punto che c’è un boot-loader in grado di fare tutto quello che fa la dongle e di più, supportando ad esempio il patching del DSDT al volo richiesto per il supporto di Snow Leopard (non saprei se è una nuova misura di protezione o semplicemente una modifica necessaria per alcune nuove funzionalità introdotte): purtroppo tale boot-loader avanzato e made in China rilasciato senza nessuna garanzia, leggasi: codice sorgente; qualcuno specula che possa essere un trojan viste le origini ed il discreto supporto finanziario dietro il progetto.

Come si tira su il miglior hackintosh possibile? Prima bisognerebbe definire cosa può essere considerato “miglior hackintosh”: tutti tendono a concordare con il fatto che il MH è quello che non richiede driver di terze parti per funzionare completamente. Per far ciò c’è bisogno di una scheda madre apposita che abbia gli stessi chipset di quelli di un Mac (e qui entra in gioco la Gigabyte GA-EP45-UD3P) e stessa cosa dicasi per la scheda video. Dopodiché basta installare il boot-loader ad hoc, ed il gioco è fatto. Di guide passo passo su come fare ce ne sono a bizzeffe: io sono stato invogliato da un post su lifehacker fatto molto bene che però richiede l’accesso ad un Mac; volendo è possibile fare il tutto via Windows o Linux, però il perché o meglio ancora il per come esula completamente dallo scopo di questo post che è di raccontare a parole mie quanto appreso durante il processo.

-quack