EFI, boot en 64 bits et Windows sur Mac

Petit point sur un problème récurrent : les Mac qui démarrent en 64 bits. Pour bien comprendre, il faut prendre en compte deux choses : pour qu’un système démarre en 64 bits, il a besoin d’un EFI compatible et d’un processeur compatible.

Pour le processeur, pas grand chose à dire : il faut un modèle 64 bits, donc un Core 2 Duo ou un Core i. Les premiers modèles de Mac Intel sont en Core Duo ou en Core Solo et ne peuvent donc pas démarrer en 64 bits (le processeur est 32 bits).

Pour l’EFI, c’est plus compliqué. Mac OS X Snow Leopard (seul capable de démarrer avec un noyau 64 bits) nécessite un EFI 64 bits. Windows (7 ou Vista) nécessite simplement un processeur 64 bits, tout du moins en émulation BIOS. Il est aussi possible d’utiliser l’EFI pour démarrer (même si ça n’a aucun intérêt) mais il faut alors aussi un EFI 64 bits.

Petit problème, une partie des premiers Mac ont un EFI en 32 bits, parfois couplé à un processeur 64 bits. Et dans ce cas précis, impossible de démarrer Mac OS X avec un noyau 64 bits.

Les machines dotées d’un EFI 32 bits (et donc incompatibles) sont les MacBook Pro 1,2 et 1,2 (Core Duo), 2,1 et 2,2 (Core 2 Duo) et 3,1 (Santa Rosa). Pour les iMac, tous les modèles d’avant 2008 sont incompatibles, pour les Mac mini, MacBook et MacBook Air, tous les modèles sont incompatibles (même en EFI 64 bits avec processeur 64 bits). Pour les Mac Pro et les Xserve, il faut un modèle 2008 pour que ça fonctionne (les version 2006 restent en 32 bits).

Enfin, j’en ai déjà parlé, mais je le rappelle : la seule machine qui démarre par défaut en 64 bits est le Mac Pro 2010. Pour les autres modèles, c’est optionnel. Les Mac Pro (2008+), Xserve (2008+) et Mac mini Server (2010) démarrent en 64 bits par défaut, mais uniquement sous Mac OS X Server.

Pour booter en 64 bits, il faut presser 6 et 4 au lancement de l’ordinateur (avant le démarrage de Mac OS X, donc) ou tout simplement entrer une ligne de commande :

sudo nvram boot-args="arch=x86_64"

Attention, passer en 64 bits nécessite des pilotes (kext) en 64 bits.