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