Después de varios días intentando instalar Snow Leopard en el portátil con vanilla leí en varios foros que se trataba de un problema de la bios. Después de probar chameleon de meklort sin exito he conseguido compilar el kernel 10.6.8 y el 11.1 (xnu-1504.15.3 y xnu-1699.22.81) para solucionar el problema.
1 - Instalar XCode. (Para compilar 11.x y para evitar el bug Install Xcode.app 99% de la instalación usar al menos la versión 4.1.1)
2 - Seguir el manual de Roisoft hasta la parte donde toca compilar (sin compilar claro).
3 - Hacer las modificaciones explicadas mas abajo.
4 - Compilar.
5 - Probar.
Manual para compilar el kernel xnu por Roisoft: (he modificado la versión 10.6 a 10.8 y a 11.1 por si alguien hace copy&paste)
Cómo compilar kernel xnu Mac OS X Para compilar necesitaremos previamente compilar una serie de herramientas que no se instalan via xcode, para ello las descargaremos de la pagina opensource de apple y las compilaremos: 1. abrimos un terminal y nos logueamos como root, seguidamente tecleamos : curl -s -O http://www.opensource.apple.com/tarballs/cxxfilt/cxxfilt-9.tar.gz curl -s -O http://www.opensource.apple.com/tarballs/dtrace/dtrace-90.tar.gz curl -s -O http://www.opensource.apple.com/tarballs/kext_tools/kext_tools-180.2.1.tar.gz curl -s -O http://www.opensource.apple.com/tarballs/bootstrap_cmds/bootstrap_cmds-79.tar.gz curl -s -O http://www.opensource.apple.com/tarballs/xnu/xnu-1504.15.3.tar.gz (10.8) curl -s -O http://www.opensource.apple.com/tarballs/xnu/xnu-1699.22.81 (11.1) 2. descomprimimos los archivos que hemos descargado tar zxf cxxfilt-9.tar.gz tar zxf dtrace-90.tar.gz tar zxf kext_tools-180.2.1.tar.gz tar zxf bootstrap_cmds-79.tar.gz tar zxf xnu-1504.15.3.tar.gz (10.8) tar zxf xnu-1699.22.81.tar.gz (11.1) 3. empezamos a compilar las herramientas 3.1. compilamos cxxfilt cd cxxfilt-9 mkdir -p obj sym dst make install RC_ARCHS="i386 x86_64" RC_CFLAGS="-arch i386 -arch x86_64 -pipe" RC_OS=macos RC_RELEASE=SnowLeopard SRCROOT=$PWD OBJROOT=$PWD/obj SYMROOT=$PWD/sym DSTROOT=$PWD/dst //esperamos a que termine ditto $PWD/dst/usr/local /usr/local cd .. 3.2 compilamos dtrace cd dtrace-90 mkdir -p obj sym dst xcodebuild install -target ctfconvert -target ctfdump -target ctfmerge ARCHS="i386 x86_64" SRCROOT=$PWD OBJROOT=$PWD/obj SYMROOT=$PWD/sym DSTROOT=$PWD/dst // esperamos a que termine ditto $PWD/dst/usr/local /usr/local cd .. 3.3 Compilamos kext_tools cd kext_tools-180.2.1 mkdir -p obj sym dst xcodebuild install -target kextsymboltool -target setsegname ARCHS="i386 x86_64" SRCROOT=$PWD OBJROOT=$PWD/obj SYMROOT=$PWD/sym DSTROOT=$PWD/dst // esperamos a que termine ditto $PWD/dst/usr/local /usr/local cd .. 3.4 Compilamos bootstrap_cmds cd bootstrap_cmds-79 mkdir -p obj sym dst make install RC_ARCHS="i386" RC_CFLAGS="-arch i386 -pipe" RC_OS=macos RC_RELEASE=SnowLeopard SRCROOT=$PWD OBJROOT=$PWD/obj SYMROOT=$PWD/sym DSTROOT=$PWD/dst // esperamos a que termine ditto $PWD/dst/usr/local /usr/local cd .. 3.5 Compilamos Xnu cd xnu-1504.15.3 (10.8) cd xnu-1699.22.81 (11.1) //si queremos los distintos mach_kernel por separado (i386 y x86_64) make ARCH_CONFIGS="I386 X86_64" KERNEL_CONFIGS="RELEASE" //si queremos el mach_kernel con todas las arquitecturas incorporadas make ARCH_CONFIGS="I386 X86_64" KERNEL_CONFIGS="RELEASE" installFuente: aquí
Modificaciones 10.8:
Añadir en la línea 1 de ~/xnu-1504.15.3/makedefs/MakeInc.def
export BUILD_STABS = 1De lo contrario no compila...
Fuente: aquí
Definir CPUFAMILY_INTEL_SANDYBRIDGE en ~/xnu-1504.15.3/osfmk/mach/machine.h
#define CPUFAMILY_INTEL_SANDYBRIDGE 0x5490b78cDe lo contrario no compila... El código para Sandy Bridge lo encontré aquí
No viene en el código fuente de momento.
Y la solución al problema de la Bios:
Añadir LAPIC_WRITE(LVT_LINT1, LAPIC_LVT_DM_NMI); en ~/xnu-1504.15.3/osfmk/i386/lapic.c
lapic_configure(void) {
...
LAPIC_WRITE(LVT_LINT1, LAPIC_LVT_DM_NMI);
...
}
Fuente: aquíModificaciones 11.1.0:
Añadir en la línea 1 de ~/xnu-1699.22.81/makedefs/MakeInc.def
export BUILD_STABS = 1De lo contrario no compila...
Fuente: aquí
Y la solución al problema de la Bios:
Añadir LAPIC_WRITE(LVT_LINT1, LAPIC_LVT_DM_NMI); en ~/xnu-1699.22.81/osfmk/i386/lapic_native.c
lapic_configure(void) {
...
LAPIC_WRITE(LVT_LINT1, LAPIC_LVT_DM_NMI);
...
}
Fuente: aquíUna vez compilado el kernel 10.8 y 11.1.0 funciona perfecto en mi HP DV6-6090es. Sin necesidad de cpus=1.
Captura:


Kernel 10.8 Appleworm
Kernel 11.1.0 Appleworm
Saludos



Sign In
Create Account











