Cómo compilar kernel xnu Mac OS X

roisoft

New member
Cómo compilar kernel xnu Mac OS X

Quizás a algunos os interesa aprender tb a compilar el kernel, bueno pues para eso pondremos como ejemplo el xnu kernel 10.6

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-78.tar.gz
curl -s -O http://www.opensource.apple.com/tarballs/kext_tools/kext_tools-177.tar.gz
curl -s -O http://www.opensource.apple.com/tarballs/bootstrap_cmds/bootstrap_cmds-72.tar.gz
curl -s -O http://www.opensource.apple.com/tarballs/xnu/xnu-1456.1.26.tar.gz


2. descomprimimos los archivos que hemos descargado


tar zxf cxxfilt-9.tar.gz
tar zxf dtrace-78.tar.gz
tar zxf kext_tools-177.tar.gz
tar zxf bootstrap_cmds-72.tar.gz
tar zxf xnu-1456.1.26.tar.gz


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-78
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-177
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-72

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-1456.1.26

//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" install



con esto conseguireis compilar xnu (mach_kernel) , ahora si quereis aplicarle los distintos patches que la comunidad osx86 ha ido usando pues requerirá ciertos conocimientos y vuestra habilidad para incorporarlos..

para los que no quieran descargar desde apple todas las utilidades de las que he hablado en el post os las he subido
Entrar or Registrarse para completar la lectura
 

mesi13

New member
compilar el kernel

oye compa me marca error al querer descomprimir los archivos que descargue, lo hice primero por el terminal, pero no se pudo descomprimir me marcaba un error y este es lo que me ponia:
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
 
Arriba