x
x x  
x  
Mac OS X 10.2 JAGUAR


XNU
Apple Darwin / Mac OS X kernel

Guida alla compilazione
by hany@hanynet.com

Cos'e' XNU?
XNU e' il kernel di Darwin e di MacOSX. XNU e' un kernel monolitico basato sull'unione del kernel Mach e del kernel BSD.
XNU e' un progetto opensource distribuito da Apple sotto la licenza APSL. XNU e' compatibile con le architetture PowerPC (32 e 64 bit) e IA32 (intel x86/32 bit e compatibili).

Requisiti di sistema
Per compilare con successo XNU 6.6 occorre un Mac PowerPC con Darwin 6.x oppure MacOSX 10.2.x oppure MacOSX 10.3 .
Inoltre e' necessario installare i Developer Tools piu' recenti (gcc 3.1) e ovviamente avere accesso al sistema come amministratore o root.

Come ottenere il software
Il sito Apple offre la registrazione gratuita sia all'ADC (Apple Developer Connection) sia alla APSL (Apple Public Software License). Una volta registrati e' possibile ottenere a questo indirizzo http://www.opensource.apple.com/darwinsource/index.html i sorgenti delle distribuzioni di Darwin, incluso il kernel XNU.

Per compilare il kernel XNU occorre installare anche alcuni software aggiuntivi (Support Tools).
Elenco dei pacchetti da scaricare:

kernel:
xnu

support tools:
bootstrap_cmds
Libstreams
cctools

Come installare i Support Tools

Copiare i 4 files .tar.gz nella home e scompattatarli con il comando tar -zxf <nomefile.tar.gz>.
A questo punto occorre verificare la versione del compilatore gcc in uso. Digitare gcc -v per ottenere questa informazione. Sebbene i Support Tools siano compilabili con gcc 2.95, 3.1 e 3.3, consiglio l'uso della versione 3.1 . Per cambiare la versione di gcc in uso digitare sudo gcc_select 3.1 .

(1) bootstrap_cmds
Per installare il pacchetto bootstrap_cmds digitare:
cd bootstrap_cmds-version/relpath.tproj
make
sudo make install
cd ../..


(2) Libstreams
Per installare il pacchetto Libstreams digitare:
cd Libstreams-version
make
sudo make install
cd ..


(3) cctools
Il pacchetto cctools fornito da Apple presenta dei bug risolti da alcune patch fornite da terze parti. Qui di seguito la spiegazione dettagliata di come patchare e installare il pacchetto.

PRIMA FASE
Digitare:
cd cctools
scaricare la prima patch con il seguente comando:
curl -O http://opendarwin.org/~jpm/naughty/darwin/cctools-Makefile.diff
proseguire con la compilazione:
patch Makefile cctools-Makefile.diff
make RC_OS=macos
sudo cp misc/seg_hack.NEW /usr/local/bin/seg_hack


SECONDA FASE
Digitare:
cd ld
scaricare la seconda patch con il seguente comando:
curl -O http://opendarwin.org/~jpm/naughty/darwin/cctools-ld-Makefile.diff
aggiungere un header mancante al kernel framework:
sudo cp /usr/include/sys/unistd.h /System/Library/Frameworks/Kernel.framework/Headers/sys/
procedere con la compilazione:
patch Makefile cctools-ld-Makefile.diff
make RC_OS=macos kld_build
sudo cp static_kld/libkld.a /usr/local/lib/
sudo ranlib /usr/local/lib/libkld.a
cd ../..

A questo punto in sistema e' configurato per poter compilare il kernel XNU.

Come compilare il kernel XNU
Dopo aver installato i Support Tools e dopo avere scompattato l'archivio xnu.tar.gz, spostarsi nella cartella xnu con il comando cd xnu .
Digitare source SETUP/setup.csh
Se si sta usando bash digitare source SETUP/setup.sh
Anche nel caso del kernel, suggerisco l'uso di gcc 3.1 .
A questo punto basta digitare:
make exporthdrs
make all

Alla fine della compilazione (da 10 a 200 minuti a seconda del tipo di processore) si ottiene il file BUILD/obj/RELEASE_PPC/mach_kernel .

Come testare il nuovo kernel
Il kernel originale si trova nella directory root / del sistema e si chiama mach_kernel . E' sconsigliabile la rimozione o la modifica del nome del kernel originale. La procedura piu' sicura e' quella di copiare il nuovo kernel sulla directory / con un nuovo nome, ad esempio mach_kernel.test1 .
sudo cp BUILD/obj/RELEASE_PPC/mach_kernel /mach_kernel.test1
A questo punto installiamo kswap.sh, uno script che permette di modificare il kernel da utilizzare al boot.
curl -O http://opendarwin.org/~jpm/naughty/darwin/kswap.sh
chmod ugo+x kswap.sh
sudo cp kswap.sh /bin/
rehash

Per attivare il kernel di test digitare:
sudo kswap.sh --test mach_kernel.test1
Per tornare al kernel originale:
sudo kswap.sh --stable
Ovviamente per rendere effettivo il cambiamento del kernel occorre un reboot...

IMPORTANTE:
Se eseguite modifiche alla configurazione del kernel dovete aspettarvi qualsiasi risultato, compresa l'impossibilita' di bootare il sistema. In casi simili per tornare al kernel originale basta resettare la pram premendo command-option-p-r per 3 boot consecutivi.
In alternativa si puo' entrare nell'openfirmware premendo command-option-o-f e digitare reset-all seguito da mac-boot. E' anche possibile resettare le nvram premendo command-option-n-v .
------------

URL ALTERNATIVE:
http://opendarwin.org/~jpm/naughty/darwin/bootstrap_cmds-35.tar.gz
http://opendarwin.org/~jpm/naughty/darwin/Libstreams-23.tar.gz
http://opendarwin.org/~jpm/naughty/darwin/cctools-435.tar.gz

XNU building how-to version 1.0 (it) 17.July.2003
http://www.hanynet.com/xnu
by hany el imam - hany@hanynet.com

Valid HTML 4.01! Valid CSS!.