miliuco
Activo
Instalación de EFI en Leopard y Pentium 4
¿Qué es EFI PC?
Volviendo atrás en la historia reciente, podemos recordar que Apple lanzó su primer Mac Intel en enero de 2006. Este ordenador utilizaba EFI (Extensible Firmware Interface) en lugar de BIOS que era lo que habían utilizado la mayoría de los PCs x86 hasta entonces. Ello añadía un obstáculo importante a la instalación de OSx86 en PCs, además de los que ya existían en la fase de versiones beta de OSx86 previas al lanzamiento oficial:
1. TPM o chip Trusted Platform Module que era necesario para que Rosetta funcionase
2. procesadores con instrucciones SSE3, tambíen necesarias para que Rosetta funcionase
3. procesadores con bit NX habilitado (No eXecute bit, llamado DEP en entornos Windows), técnica de protección de memoria
Cada uno de estos obstáculos fue solventado con sus correspondientes parches que aparecían con regularidad.
El primer MacIntel llevaba Mac OS X 10.4.4. A las pocas semanas, un hacker llamado Maxxuss puso en la Red las herramientas que permitieron instalar OSX 10.4.4 en PCs. A lo largo de las semanas siguientes, Apple fue lanzando nuevas versiones de OSX; estos lanzamientos eran respondidos en poco tiempo por hackers que sacaban los parches apropiados.
Hay que recordar los nombres del ya comentado Maxxuss, SemjaZa, JaS, Mifki, Vitaliy, Semthex, Rufus y, ya en la era Leopard, Uphuck, BrazilMac y ToH, como los más importantes creadores de parches y versiones aptas para PCs durante 2006 y 2007.
Pero el kernel constituía un gran problema hasta el punto que, desde la versión 10.4.4 hasta la 10.4.8, todas las versiones de OSx86 que se utilizaron en PCs llevaban el kernel 10.4.4 modificado. Incluso cuando se han utilizado kernels más modernos, siempre han sido kernels modificados (y casi siempre desactualizados) para esquivar la ausencia de EFI, con lo que se pierden algunas de sus características más importantes.
A finales de 2007, Netkas publicó su método para emular EFI en PCs mediante un cargador de arranque Darwin modificado. La importancia de esta propuesta radica en que, con el emulador de EFI instalado, el PC puede ser visto por el sistema operativo prácticamente como si de un Mac real se tratase, permitiendo la utilización del kernel original de Apple (Vanilla kernel, por similitud con el mundo Linux en el que los kernels directamente liberados por Linus Torvalds y su grupo se llaman así para indicar que todavía no los ha modificado nadie más). Las ventajas de ésto son enormes:
1. utilizar el kernel de Apple original
2. utilizar algunas extensiones de Apple originales de las que hasta ahora era obligatorio que fuesen modificadas
3. mayor protección frente a errores de memoria y ataques malintencionados
4. aumento teórico del rendimiento en procesadores Core 2 Duo
Existe abundante información en la Red sobre la emulación de EFI, sobre todo en los sitios web de Netkas (netkas.freeflux), DigitMemo (digitmemo.com), OSx86 Project, Applesana, etc. Es un proyecto muy joven que está en plena fase de desarrollo, con varias versiones sucesivas de lo que se ha dado en llamar PC_EFI. La más reciente a la hora de escribir este artículo es la versión 8.
Hardware requerido para usar emulador EFI
Procesadores Core Duo y Core 2 Duo, básicamente, con chipsets Intel en la placa base. Las instrucciones SSE3 y el bit NX habilitado son obligatorios. El emulador EFI puede ser instalado en hardware diferente pero las probabilidades de éxito disminuyen al alejarse de esa base.
¿Qué es el bit NX (No eXecute bit)?
Es una técnica que se puede implementar a nivel de procesador (hardware, verdadero NX bit)) o de sistema operativo (software, emulación muy inferior). En entornos Windows se llama DEP (Data Execution Prevention).
Mediante esta técnica se protege la memoria diferenciando las áreas de instrucciones de las áreas de datos para evitar su colisión. Se consigue una disminución de errores de memoria pero, sobre todo, una mayor protección frente a ataques malintencionados. Generalmente se puede habilitar o deshabilitar en BIOS, donde puede aparecer como NX bit o como DEP.
Procesadores sin DEP no pueden implementar emulación de EFI. Para saber si un procesador lo soporta:
1. consultar las páginas de BIOS
2. si se tiene Windows XP instalado en ese PC: botón derecho en Mi PC >> Propiedades >> Avanzadas >> Rendimiento >> Data Execution Prevention >> si las casillas de activar o desactivar DEP están deshabilitadas o si en la parte inferior dice que se utiliza DEP por software >> el procesador no tiene la opción del bit NX.
Si el procesador lo soporte, existe una forma sencilla de habilitar o deshabilitar DEP en Windows XP: modificar el parámetro noexecute en el archivo boot.ini de manera que, en la entrada correspondiente a Windows XP, si aparece
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP HOME" /noexecute=alwaysoff /fastdetect
DEP estará dehabilitado pero si aparece
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP HOME" /noexecute=optin /fastdetect
DEP estará habilitado.
Instalar el emulador de EFI en mi PC [/SIZE](P4 Prescott 3 GHz con SSE3 y NX bit)
Este proceso se ha hecho en un sistema Leopard funcionante, instalado desde el DVD RC2 de ToH. Es necesario disponer de algunos archivos:
1. Pc_Efi que incluya la herramienta startupfiletool y arrancadores Darwin modificados (boot_v8, etc.) así como el arrancador Darwin sin modificar (suele llamarse booti386 y su utilidad radica en que con él se puede revertir el proceso si algo sale mal)
2. kernel original (Vanilla) de Leopard
3. extensiones originales de Leopard (sobre todo ApleACPIPlattform.kext y AppleSMBIOS.kext)
4. extensión dsmos.kext (obligatoria si se quiere arrancar con kernel Vanilla pero no si se arranca con kernel modificado)
5. kernel modificado (el del sistema Leopard que se tenga en uso o el del DVD de instalación de ToH) que debemos conservar pues permite arrancar con EFI y sin ella por lo que es necesario en caso de que el proceso de arranque con el kernel Vanilla no salga bien
En la carpeta de Pc_Efi versión 8 (la más reciente) no aparece booti386 que viene en la carpeta de Pc_Efi versión 5.1. No conviene olvidar este archivo.
En mi PC, OSx está instalado en un disco duro particionado según el esquema MBR (clasico de sistemas DOS y Windows) pero la versión 8 de Pc_Efi permite su instalación tanto en particiones MBR como en particiones GUID (específicas de los MacIntel).
Los pasos necesarios para instalar el emulador EFI son:
Preparación
1. Crear una carpeta iamefi en / en la que depositaremos los archivos de Pc_Efi
sudo mkdir /iamefi
sudo cp /ruta_a_los_archivos_de_PcEfi/* /iamefi
2. Cambiar el nombre al kernel actual
sudo mv /mach_kernel /mach_kernel_toh
3. Copiar el kernel Vanilla a /
sudo cp /ruta_al_kernel_sin_modificar/mach_kernel /
4. Copiar dsmos.kext, ApleACPIPlattform.kext y AppleSMBIOS.kext de Pc_Efi a la carpeta Extensions
sudo cp -R /ruta_a_dsmos.kext /System/Library/Extensions
cd /System/Library/Extensions
sudo mv ApleACPIPlattform.kext ApleACPIPlattform.kext.back
sudo mv AppleSMBIOS.kext AppleSMBIOS.kext.back
(de esta manera las podemos recuperar fácilmente volviendo a su nombre original)
sudo cp -R /ruta_a_ApleACPIPlattform.kext /System/Library/Extensions
sudo cp -R /ruta_a_AppleSMBIOS.kext /System/Library/Extensions
5. Borrar estas 2 extensiones de la carpeta Extensions (pueden interferir con el sistema de gestión de energía)
sudo mv AppleEFIRuntime.kext AppleEFIRuntime.kext.back
sudo mv AppleIntelCPUPowerManagement.kext AppleIntelCPUPowerManagement.kext.back
(de esta manera las podemos recuperar fácilmente volviendo a su nombre original)
(estas extensiones pueden no estar presentes en algunos sistemas)
6. Borrar la caché de extensiones
sudo rm /System/Library/Extensions.mkext
7. Reparar permisos
sudo diskutil repairPermissions /
8. Conocer el identificador del disco o partición que contiene a Leopard
diskutil list
(apuntar el que corresponda a Leopard, por ej: disk0s1)
Instalar EFI
1. Reiniciar el PC pulsando F8 y tecleando en el menú de Darwin
mach_kernel_toh -s
(todavía no es posible arrancar con el kernel Vanilla)
2. Instalar EFI
cd /iamefi
./startupfiletool /dev/rdisk0s1 ./boot_v8
(el disco se nombra con la letra r seguido del identificador que se obtuvo anteriormente)
Ha de aparecer un mensaje que informa "HFS+ partition detected..."
Si el mensaje dice "Filesystem unrecognized" quiere decir que nos estamos dirigiendo a otro disco diferente al de Leopard por lo que habría que probar con otros identificadores (rdisk1s1...)
3. Reniciar (reboot + INTRO)
Arrancar con EFI
En mi caso el PC arranca con EFI solamente si utilizo el kernel modificado de ToH. Cualquier maniobra para arrancar con el kernel Vanilla cuelga el PC inmediatamente después del menú de Darwin. Pero arrancando con el kernel modificado, Leopard parece funcionar igual de bien con EFI que sin EFI.
Ello va a favor de la teoría que dice que en hardware como el mío la utilización del emulador de EFI es muy problemática.
Para desinstalar Efi_Pc hay que hacer lo mismo que para instalarla pero utilizando el cargador Darwin sin modificar (booti386):
./startupfiletool /dev/rdisk0s1 ./booti386
Y reiniciar con el kernel modificado de ToH que habrá de ser colocado de nuevo como mach_kernel principal, eliminando el kernel Vanilla, recuperando las extensiones que fueron renombradas con la extensión back y reparando permisos.
¿Qué es EFI PC?
Volviendo atrás en la historia reciente, podemos recordar que Apple lanzó su primer Mac Intel en enero de 2006. Este ordenador utilizaba EFI (Extensible Firmware Interface) en lugar de BIOS que era lo que habían utilizado la mayoría de los PCs x86 hasta entonces. Ello añadía un obstáculo importante a la instalación de OSx86 en PCs, además de los que ya existían en la fase de versiones beta de OSx86 previas al lanzamiento oficial:
1. TPM o chip Trusted Platform Module que era necesario para que Rosetta funcionase
2. procesadores con instrucciones SSE3, tambíen necesarias para que Rosetta funcionase
3. procesadores con bit NX habilitado (No eXecute bit, llamado DEP en entornos Windows), técnica de protección de memoria
Cada uno de estos obstáculos fue solventado con sus correspondientes parches que aparecían con regularidad.
El primer MacIntel llevaba Mac OS X 10.4.4. A las pocas semanas, un hacker llamado Maxxuss puso en la Red las herramientas que permitieron instalar OSX 10.4.4 en PCs. A lo largo de las semanas siguientes, Apple fue lanzando nuevas versiones de OSX; estos lanzamientos eran respondidos en poco tiempo por hackers que sacaban los parches apropiados.
Hay que recordar los nombres del ya comentado Maxxuss, SemjaZa, JaS, Mifki, Vitaliy, Semthex, Rufus y, ya en la era Leopard, Uphuck, BrazilMac y ToH, como los más importantes creadores de parches y versiones aptas para PCs durante 2006 y 2007.
Pero el kernel constituía un gran problema hasta el punto que, desde la versión 10.4.4 hasta la 10.4.8, todas las versiones de OSx86 que se utilizaron en PCs llevaban el kernel 10.4.4 modificado. Incluso cuando se han utilizado kernels más modernos, siempre han sido kernels modificados (y casi siempre desactualizados) para esquivar la ausencia de EFI, con lo que se pierden algunas de sus características más importantes.
A finales de 2007, Netkas publicó su método para emular EFI en PCs mediante un cargador de arranque Darwin modificado. La importancia de esta propuesta radica en que, con el emulador de EFI instalado, el PC puede ser visto por el sistema operativo prácticamente como si de un Mac real se tratase, permitiendo la utilización del kernel original de Apple (Vanilla kernel, por similitud con el mundo Linux en el que los kernels directamente liberados por Linus Torvalds y su grupo se llaman así para indicar que todavía no los ha modificado nadie más). Las ventajas de ésto son enormes:
1. utilizar el kernel de Apple original
2. utilizar algunas extensiones de Apple originales de las que hasta ahora era obligatorio que fuesen modificadas
3. mayor protección frente a errores de memoria y ataques malintencionados
4. aumento teórico del rendimiento en procesadores Core 2 Duo
Existe abundante información en la Red sobre la emulación de EFI, sobre todo en los sitios web de Netkas (netkas.freeflux), DigitMemo (digitmemo.com), OSx86 Project, Applesana, etc. Es un proyecto muy joven que está en plena fase de desarrollo, con varias versiones sucesivas de lo que se ha dado en llamar PC_EFI. La más reciente a la hora de escribir este artículo es la versión 8.
Hardware requerido para usar emulador EFI
Procesadores Core Duo y Core 2 Duo, básicamente, con chipsets Intel en la placa base. Las instrucciones SSE3 y el bit NX habilitado son obligatorios. El emulador EFI puede ser instalado en hardware diferente pero las probabilidades de éxito disminuyen al alejarse de esa base.
¿Qué es el bit NX (No eXecute bit)?
Es una técnica que se puede implementar a nivel de procesador (hardware, verdadero NX bit)) o de sistema operativo (software, emulación muy inferior). En entornos Windows se llama DEP (Data Execution Prevention).
Mediante esta técnica se protege la memoria diferenciando las áreas de instrucciones de las áreas de datos para evitar su colisión. Se consigue una disminución de errores de memoria pero, sobre todo, una mayor protección frente a ataques malintencionados. Generalmente se puede habilitar o deshabilitar en BIOS, donde puede aparecer como NX bit o como DEP.
Procesadores sin DEP no pueden implementar emulación de EFI. Para saber si un procesador lo soporta:
1. consultar las páginas de BIOS
2. si se tiene Windows XP instalado en ese PC: botón derecho en Mi PC >> Propiedades >> Avanzadas >> Rendimiento >> Data Execution Prevention >> si las casillas de activar o desactivar DEP están deshabilitadas o si en la parte inferior dice que se utiliza DEP por software >> el procesador no tiene la opción del bit NX.
Si el procesador lo soporte, existe una forma sencilla de habilitar o deshabilitar DEP en Windows XP: modificar el parámetro noexecute en el archivo boot.ini de manera que, en la entrada correspondiente a Windows XP, si aparece
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP HOME" /noexecute=alwaysoff /fastdetect
DEP estará dehabilitado pero si aparece
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Windows XP HOME" /noexecute=optin /fastdetect
DEP estará habilitado.
Instalar el emulador de EFI en mi PC [/SIZE](P4 Prescott 3 GHz con SSE3 y NX bit)
Este proceso se ha hecho en un sistema Leopard funcionante, instalado desde el DVD RC2 de ToH. Es necesario disponer de algunos archivos:
1. Pc_Efi que incluya la herramienta startupfiletool y arrancadores Darwin modificados (boot_v8, etc.) así como el arrancador Darwin sin modificar (suele llamarse booti386 y su utilidad radica en que con él se puede revertir el proceso si algo sale mal)
2. kernel original (Vanilla) de Leopard
3. extensiones originales de Leopard (sobre todo ApleACPIPlattform.kext y AppleSMBIOS.kext)
4. extensión dsmos.kext (obligatoria si se quiere arrancar con kernel Vanilla pero no si se arranca con kernel modificado)
5. kernel modificado (el del sistema Leopard que se tenga en uso o el del DVD de instalación de ToH) que debemos conservar pues permite arrancar con EFI y sin ella por lo que es necesario en caso de que el proceso de arranque con el kernel Vanilla no salga bien
En la carpeta de Pc_Efi versión 8 (la más reciente) no aparece booti386 que viene en la carpeta de Pc_Efi versión 5.1. No conviene olvidar este archivo.
En mi PC, OSx está instalado en un disco duro particionado según el esquema MBR (clasico de sistemas DOS y Windows) pero la versión 8 de Pc_Efi permite su instalación tanto en particiones MBR como en particiones GUID (específicas de los MacIntel).
Los pasos necesarios para instalar el emulador EFI son:
Preparación
1. Crear una carpeta iamefi en / en la que depositaremos los archivos de Pc_Efi
sudo mkdir /iamefi
sudo cp /ruta_a_los_archivos_de_PcEfi/* /iamefi
2. Cambiar el nombre al kernel actual
sudo mv /mach_kernel /mach_kernel_toh
3. Copiar el kernel Vanilla a /
sudo cp /ruta_al_kernel_sin_modificar/mach_kernel /
4. Copiar dsmos.kext, ApleACPIPlattform.kext y AppleSMBIOS.kext de Pc_Efi a la carpeta Extensions
sudo cp -R /ruta_a_dsmos.kext /System/Library/Extensions
cd /System/Library/Extensions
sudo mv ApleACPIPlattform.kext ApleACPIPlattform.kext.back
sudo mv AppleSMBIOS.kext AppleSMBIOS.kext.back
(de esta manera las podemos recuperar fácilmente volviendo a su nombre original)
sudo cp -R /ruta_a_ApleACPIPlattform.kext /System/Library/Extensions
sudo cp -R /ruta_a_AppleSMBIOS.kext /System/Library/Extensions
5. Borrar estas 2 extensiones de la carpeta Extensions (pueden interferir con el sistema de gestión de energía)
sudo mv AppleEFIRuntime.kext AppleEFIRuntime.kext.back
sudo mv AppleIntelCPUPowerManagement.kext AppleIntelCPUPowerManagement.kext.back
(de esta manera las podemos recuperar fácilmente volviendo a su nombre original)
(estas extensiones pueden no estar presentes en algunos sistemas)
6. Borrar la caché de extensiones
sudo rm /System/Library/Extensions.mkext
7. Reparar permisos
sudo diskutil repairPermissions /
8. Conocer el identificador del disco o partición que contiene a Leopard
diskutil list
(apuntar el que corresponda a Leopard, por ej: disk0s1)
Instalar EFI
1. Reiniciar el PC pulsando F8 y tecleando en el menú de Darwin
mach_kernel_toh -s
(todavía no es posible arrancar con el kernel Vanilla)
2. Instalar EFI
cd /iamefi
./startupfiletool /dev/rdisk0s1 ./boot_v8
(el disco se nombra con la letra r seguido del identificador que se obtuvo anteriormente)
Ha de aparecer un mensaje que informa "HFS+ partition detected..."
Si el mensaje dice "Filesystem unrecognized" quiere decir que nos estamos dirigiendo a otro disco diferente al de Leopard por lo que habría que probar con otros identificadores (rdisk1s1...)
3. Reniciar (reboot + INTRO)
Arrancar con EFI
En mi caso el PC arranca con EFI solamente si utilizo el kernel modificado de ToH. Cualquier maniobra para arrancar con el kernel Vanilla cuelga el PC inmediatamente después del menú de Darwin. Pero arrancando con el kernel modificado, Leopard parece funcionar igual de bien con EFI que sin EFI.
Ello va a favor de la teoría que dice que en hardware como el mío la utilización del emulador de EFI es muy problemática.
Para desinstalar Efi_Pc hay que hacer lo mismo que para instalarla pero utilizando el cargador Darwin sin modificar (booti386):
./startupfiletool /dev/rdisk0s1 ./booti386
Y reiniciar con el kernel modificado de ToH que habrá de ser colocado de nuevo como mach_kernel principal, eliminando el kernel Vanilla, recuperando las extensiones que fueron renombradas con la extensión back y reparando permisos.