MacBook Pro 2010 triple boot (OS X 10.6, Win 7 y Linux on macbookpro2,6)

Antes de empzar

El simple proceso de instalar Mac OS X y Windows en la misma computadora implica que el sistema de partición GPT será parchado con un “MBR híbrido”, lo cual es un monstruo horrible y la fuente de todos los problemas para el triple booteo. Si no tienes idea de lo hablo te recomiendo mucho, pero mucho leas la siguiente pagina GPT fdisk Tutorial y todas sus sub-páginas.

Entonces por el monstruo “MBR híbrido” estamos limitados a 4 particions y sin la posiblidad de particiones extendidas, pues eso no es compatible con GPT, lo que nos obliga a instalar linux sin partición SWAP.

Use las siguientes cosas:

  • Mac OS X 10.6.6 que a la fecha de escribir esto es la actualización mas reciente.
  • Boot Camp Assistant, viene con Mac.
  • Disk Utils, viene con Mac.
  • GPT fdisk para Mac que a la fecha esta en la version 0.6.14. Para poder instalarlo necesita instalar en tu mac Xcode.
  • El particionador Gparted, uso la version mas reciente que hay (gparted-live-0.7.1-5) para asegurarme que sepa manegar particiones GPT.
  • rEFIt (0.14) que es un manejador de booteo para computadoras EFI.
  • DVD de Windows 7 version 64 bits.
  • Linux y mi versión favorita es openSUSE (va en la version 11.3).

A trabajar

Empecé con una instalación limpia de Mac OS X 10.6 (Snow Leopard) y la actualicé.

Luego instalé Xcode con el DVD de instalación de Mac.

Instalé GPT fdisk y lo probe:

Paris-Mac:~ paris$ sudo gdisk /dev/disk0
Password:
GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): q
Paris-Mac:~ paris$ 

Instalé Windows 7 de 64 bits usando Boot Camp Assistant, es realmente simple, pero si quieres una guía de como hacerlo búscalo en Google, seguro salen muchas :3

Cambié el tamaño de la partición de mac para hacer espacio para la partición de Linux usando la herramienta diskutil. Primero averiguo el numero de disco duro y la particion:

Paris-Mac:~ paris$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            391.9 GB   disk0s2
   3:       Microsoft Basic Data BOOTCAMP                107.8 GB   disk0s3
Paris-Mac:~ paris$

Segundo, le quito al a la particion de mac 30Gb se la siguiente forma:

Paris-Mac:~ paris$ diskutil resizeVolume disk0s2 360G
Started partitioning on disk0s2 Macintosh HD
Verifying disk
Resizing
Finished partitioning on disk0s2 Macintosh HD
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk0
   1:                        EFI                         209.7 MB   disk0s1
   2:                  Apple_HFS Macintosh HD            360.0 GB   disk0s2
   3:       Microsoft Basic Data BOOTCAMP                107.8 GB   disk0s3
Paris-Mac:~ paris$ 

Preparo el disco durox con GPT fdisk, el comando es gdisk, para luego formatearlo, si algo sale mal salgo de gdisk con la letra q.
Inicio gdisk:

Paris-Mac:~ paris$ sudo gdisk /dev/disk0
Password:
GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with hybrid MBR; using GPT.

Uso la letra p para enlistar las particiones y mas detalles del disco duro:

Command (? for help): p
Disk /dev/disk0: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 94500E05-EE4F-433A-9AE3-31A884F6BA21
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 8-sector boundaries
Total free space is 62599653 sectors (29.8 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              40          409639   200.0 MiB   EF00  EFI System Partition
   2          409640       703534639   335.3 GiB   AF00  Macintosh HD
   3       766134272       976773119   100.4 GiB   0700  BOOTCAMP

Uso la letra n para crear la nueva partición y como todas las opciones predeterminadas coinciden con lo que deseo de partición simplemente doy Enter:

Command (? for help): n
Partition number (4-128, default 4): 
First sector (34-976773134, default = 703534640) or {+-}size{KMGTP}: 
Last sector (703534640-766134271, default = 766134271) or {+-}size{KMGTP}: 
Current type is 'Linux/Windows data'
Hex code or GUID (L to show codes, Enter = 0700): 
Changed type of partition to 'Linux/Windows data'

En listo de nuevo las particiones, sólo para confirmar que el número de la particion Linux e el 4:

Command (? for help): p
Disk /dev/disk0: 976773168 sectors, 465.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 94500E05-EE4F-433A-9AE3-31A884F6BA21
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 976773134
Partitions will be aligned on 8-sector boundaries
Total free space is 21 sectors (10.5 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              40          409639   200.0 MiB   EF00  EFI System Partition
   2          409640       703534639   335.3 GiB   AF00  Macintosh HD
   3       766134272       976773119   100.4 GiB   0700  BOOTCAMP
   4       703534640       766134271   29.8 GiB    0700  Linux/Windows data

A las particiones GPT se les puede poner nombre y se hace con la letra c, luego seleccione el número de particion y por ultimo le pongo nombre:

Command (? for help): c
Partition number (1-4): 4
Enter name: Linux

Por últmo verifico que no haya errores en el disco:

Command (? for help): v
No problems found. 21 free sectors (10.5 KiB) available in 2
segments, the largest of which is 15 (7.5 KiB) in size.

Y escribimos los cambios:

Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed, possibly destroying your data? (Y/N): y
OK; writing new GUID partition table (GPT).
Warning: The kernel may continue to use old or deleted partitions.
You should reboot or remove the drive.
The operation has completed successfully.
Paris-Mac:~ paris$ 

Formateo con Gparted la partición 4 con ext4. Esta operación sobre escribe el “MBR híbrido” por un “MBR protected” y hace imposible iniciar Windows, pero lo arreglaré después.

Instalo openSUSE prestando atencion de: 1. No formatear nada, pues a mí me borró la partición de windows. 2. No hacer partición SWAP, lo que lanzara una advertencia. 3. Instalar el boot loader en la particion 4 y NO en el MBR.
Unavez que termino de instalase reinicias y arrancara Mac.

Para el múltiple booteo instalo en Mac rEFIt y en la consola escribo

Paris-Mac:~ paris$  cd /efi/refit/
Paris-Mac:refit paris$ sudo ./enable-always.sh 
Password:
+ sudo bless --folder /efi/refit --file /efi/refit/refit.efi --labelfile /efi/refit/refit.vollabel --setBoot
Paris-Mac:refit paris$ 

y reinico.

Ahora sale el menú de rEFIt y si tienes suerte, puedes iniciar Linux, pero no windows y si tienes muchísima suerte Linux y Windows bootean sin problemas. Pero ese no es el caso, pues el instalador de openSUSE sobre escribe el “MBR protected” por un “MBR híbrido” que no funciona, y ¡lo peor! la herramienta gptsync de rEFIt no sabe como arreglarlo.

Para arreglarlo inicia Mac y usa de nuevo GPT fdisk de la siguiente forma:

Paris-Mac:~ paris$ sudo gdisk /dev/disk0
Password:
GPT fdisk (gdisk) version 0.6.14

Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with hybrid MBR; using GPT.

v para verificar el disco:

Command (? for help): v

Warning! Mismatched GPT and MBR partition! MBR partition 2, of type 0xAF,
has no corresponding GPT partition! You may continue, but this condition
might cause data loss in the future!

Warning! Mismatched GPT and MBR partition! MBR partition 3, of type 0x83,
has no corresponding GPT partition! You may continue, but this condition
might cause data loss in the future!

Warning! Mismatched GPT and MBR partition! MBR partition 4, of type 0x07,
has no corresponding GPT partition! You may continue, but this condition
might cause data loss in the future!

Identified 3 problems!

Y como ves esta mal, asi que para arreglarlo entro en el modo experto de GPT fdisk con el comando x, escribo un nuevo “MBR protected” con el comando n y aplico los cambios con el comando w:

Command (? for help):  x

Expert command (? for help): n

Expert command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed, possibly destroying your data? (Y/N): y
OK; writing new GUID partition table (GPT).
Warning: The kernel may continue to use old or deleted partitions.
You should reboot or remove the drive.
The operation has completed successfully.
Paris-Mac:~ paris$ 

Con eso Linux ya puede bootear.

Para que Windows pueda arrancar de nuevo reinicio y en el menú de rEFIt selecciona la opcion Start Partitioning Tool Partitioning Tool rEFIt. Esta herramienta te preguntará si quieres sincronizar el GPT con el MBR y le dices que si. Reinicias, seleccionas Windows y si arranca es por que eres muy afortunado, pero seguramente no, por que sobre escribiste el “MBR protected” por uno híbrido nuevo que no tiene la información para arrancar windows y obtienes un error del arranque de windows, asi que pones el DVD de instalación de windows y usas la herramienta de recuperación y eso es todo.