¿Por qué mi kernel de Mac OS X 10.6 se ejecuta en modo de 32 bits?

Tengo un MacBook Pro (5,1) con 4 GB de memoria ejecutando 10A432 – pero está ejecutando el núcleo de 32 bits.

¿Alguna idea de por qué no se ejecuta en modo de 64 bits, y cómo puedo conseguir que lo haga?

En la Revisión de Jon Siracusa de Snow Leopard habla de la transición de 64 bits .

TigreLeopardoLeopardo de nieve

La versión corta es: porque no hay 'mixed-mode' un kernel de 64 bits requiere 64-bit Kernel Extensions and Drivers .

Como no están ampliamente disponibles todavía, Apple optó por predeterminar a 32 bits para evitar romper muchas cosas.

Instrucciones del artículo:

Para todos los Mac compatibles con K64, arranque mientras mantiene presionadas las teclas "6" y "4" simultáneamente para seleccionar el kernel de 64 bits. Para una solución más permanente, utilice el comando nvram para agregar arch=x86_64 a su cadena de boot-args , o edite el archivo /Library/Preferences/SystemConfiguration/com.apple.Boot.plist y agregue arch=x86_64 a la cadena Flags de Kernel :

 ... <key>Kernel</key> <string>mach_kernel</string> <key>Kernel Flags</key> <string>arch=x86_64</string> ... 

Para volver al kernel de 32 bits, mantenga pulsadas las teclas "3" y "2" durante el arranque, o utilice una de las técnicas anteriores, sustituyendo "x86_64" por "i386".

De acuerdo con lo que se ha filtrado a MacRumors (ya que los documentos oficiales están bajo NDA) ( Source ) sólo los siguientes ordenadores soportan la ejecución del kernel de 64 bits:

  • A principios de 2008 Mac Pro (MacPro 3,1)
  • A principios de 2008 Xserve (Xserve 2,1)
  • MacBook Pro (15 "/ 17") (MacBook Pro 4,1)
  • 2008 iMacs (iMac 8,1)
  • Unibody MacBook Pros (MacBook Pro 5,1 y 5,2)
  • A principios de 2009 Mac Pro (MacPro 4,1)
  • 2009 iMacs (iMac 9,1)
  • A principios de 2009 Xserve (Xserve 3,1).

Sólo los XServes usan el kernel de 64 bits de forma predeterminada.

Si arranca la computadora con las teclas 6 y 4 , arrancará el kernel de 64 bits, o según otra fuente que rompa su NDA, puede editar /Library/Preferences/SystemConfiguration/com.apple.Boot.plist añadiendo un kernel Bandera o hacerlo en el nvram.

No hay mucho beneficio para ejecutar un kernel de 64 bits en Snow Leopard, a diferencia de la mayoría de los otros sistemas operativos. En Windows y Linux, necesita un kernel de 64 bits para ejecutar aplicaciones de 64 bits. En OS X, puede ejecutar aplicaciones de 64 bits con el kernel de 32 bits.

A la mayoría de las personas les preocupa que ejecutar el núcleo de 32 bits en OS X limite el rendimiento o las capacidades de sus máquinas, pero en la práctica esto no tiene un impacto material significativo. El kernel de 32 bits admite ejecutar aplicaciones de 64 bits, y esas aplicaciones tienen un espacio de direcciones virtual de 64 bits que se asigna a un espacio de direcciones PAE de 36 bits por el núcleo, por lo que se comportan igual que lo harían en un 64- Bit kernel, sólo con un uso de memoria más restringido y memoria-mapeado E / S a la gama utilizable. La forma en que Apple maneja este espacio de direcciones en el kernel de 32 bits da como resultado un límite de 32 GB para la memoria física, rompiendo el límite de 32 GB de 4 GB con PAE. En cuanto a rendimiento, no hay mucho de un beneficio, si hay un medible en absoluto con el uso de un kernel de 64 bits con 32 GB de memoria o menos. Si lo desea, puede probar algunos puntos de referencia cuando arranca forzosamente con el núcleo de 64 bits manteniendo pulsadas las teclas 6 y 4 al inicio. Dudo que lo veas y una diferencia significativa en el rendimiento.

El otro problema es la compatibilidad con los controladores de dispositivos, las extensiones del núcleo y el firmware del dispositivo. Para los controladores de dispositivo y las extensiones del kernel, es necesario que coincidan con bit-ness, se recompilen o se reescriban (especialmente si tienen cualquier ensamblado, qué partes son comunes en esos tipos de código). El EFI de Apple originalmente era de 32 bits solamente, y más recientemente algunos modelos tienen firmware de 64 bits. Para que el sistema operativo hable con el firmware, la bit-ness del kernel y el EFI tienen que coincidir. Las cosas que implican hablar con EFI son cosas como elegir un disco de inicio o algunos controles de administración de energía (como si tiene más de una instalación de OS X y necesita despertarse después de que la batería se haya agotado).

¿Un kernel de 64 bits sería un beneficio? En lo que respecta a los resultados no es realmente práctica, y puedo ver la sabiduría con Apple utilizando núcleos de 32 bits para la mayoría de las máquinas que ejecutan Snow Leopard para una mejor compatibilidad.

El enlace , desafortunadamente ofuscado de Jason, escondió una información muy útil:

 ioreg -l -p IODeviceTree | grep firmware-abi 

Los Macs EFI de 64 bits informarán

 | | "firmware-abi" = <"EFI64"> 

Hasta que Snow Leopard sea lanzado, no sabremos qué sistemas soportarán el modo de 64/32 bits … Pero todas las indicaciones son que Snow Leopard será transparente con el soporte del kernel …

Pero, por desgracia, siento ser un "downer", si usted es un miembro registrado de Appleseed, el foro de Appleseed discute cómo forzar el kernel al modo 64bit. De lo contrario, si ha recibido Snow Leopard en otro lugar, no se preocupe.

El lanzamiento de Snow Leopard está a la vuelta de la esquina …

Está bien, aquí está el motivo:

  • 32 bits SL ejecutará aplicaciones de 64 bits; SL es compatible con 64 bits independientemente de la versión del kernel que arranque

  • SL, incluso si arrancado con el kernel de 32 bits todavía será capaz de ejecutar aplicaciones de 64 bits y la dirección de más de 4 GB de RAM

  • Razón por la que necesitaría el kernel de 64 bits es si el kernel necesitaba dirigirse a más de 32 GB de RAM (por lo tanto, es el predeterminado en el Xserve) o tiene un solo 64 bits (desarrolladores)

  • Los núcleos de 64 bits no hacen su computadora mágicamente más rápida; A menos que necesite más de 32 GB de RAM (IOW sólo Xserves de todos modos) no lo necesita para abordar las razones ya sea

  • Haciendo 32 bits por defecto en los sistemas de consumo y dando a los profesionales y desarrolladores la opción del kernel de 64 bits Apple mantiene la máxima compatibilidad Y máxima flexibilidad

  • 64 bits es principalmente una opción de desarrollador; Pueden usarlo para probar sus nuevos drivers / kexts de 64 bits para asegurarse de que funcionan con el kernel de 64 bits

Parafraseado y cotizado de Snow Leopard cargas 32-bit kernel por defecto