|
XNU
Apple Darwin / Mac OS X kernel
Guida alla compilazione
by hany@hanynet.com
Cos'e' XNU?
XNU e' il kernel di Darwin. Darwin e' un sistema operativo
della famiglia UNIX basato su BSD4.4 e NextStep. Mac OS X
10.3 e' una delle distribuzioni di Darwin 7.0.
XNU e' un kernel monolitico modulare basato sull'unione del
kernel Mach e del kernel BSD. XNU e' un progetto opensource
distribuito da Apple sotto licenza APSL. XNU e' compatibile
con le architetture PowerPC (32 e 64 bit) e IA32 (intel x86/32
bit e compatibili). La versione 517 di XNU corrisponde a quella
installata da Mac OS X 10.3.
Requisiti di sistema
Per compilare con successo XNU 517 occorre un Mac PowerPC
con Darwin 7.x oppure MacOSX 10.3 . E' possibile compilare
XNU-517 anche su PC Intel/x86 con Darwin 7.0.1.
Inoltre e' necessario installare i Developer Tools piu' recenti
(gcc 3.3) 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
•
IOKitUser
•
kext_tools
• cctools
Come installare i Support Tools
Consiglio di utilizzare la shell bash
per installare i tools e il kernel: Se utilizzate csh/tcsh
e' bene eseguire rehash
prima di ogni make.
Copiare i 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.3 . Per cambiare la versione di gcc in uso
digitare sudo gcc_select 3.3
.
(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
PRIMA FASE - compilazione e installazione
di cctools
Digitare:
cd cctools-495
cd libstuff
make all
cd ../misc
make macos_all
sudo cp seg_hack.NEW /usr/bin/seg_hack
cd ../libmacho
make macos
sudo cp otmp_obj/libmacho_static.a /usr/local/lib/
cd ../ld
make kld_build
sudo cp static_kld/libkld.a /usr/local/lib/
cd ../include/mach-o
sudo cp kld.h /usr/include/mach-o/
cd ../../../
SECONDA FASE - compilazione e
installazione di kextsymboltool
Digitare:
cd IOKitUser-174
sudo mv kext.subproj kext
sudo mkdir /usr/include/IOKit
sudo cp -R kext /usr/include/IOKit/kext
cd ../kext_tools-42
make kextsymboltool
sudo cp kextsymboltool /usr/local/bin/
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.sh
Se si sta usando tcsh digitare source
SETUP/setup.csh
Anche nel caso del kernel, suggerisco l'uso di gcc 3.3 .
Modificate i files bsd/conf/MASTER* e osfmk/conf/MASTER*
o create nuove configurazioni con lo script doconf per modificare
i parametri di compilazione del kernel.
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
.
*** ATTENZIONE ***
La compilazione di XNU con la configurazione di default produrra'
un kernel con abilitato il supporto a diverse funzioni di
debug che rallentano il sistema. Occorre quindi sperimentare
diverse configurazioni di XNU per ottenere un kernel stabile
e performante.
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 .
------------
XNU building how-to
version 1.1 (it) 3.December.2003
http://www.hanynet.com/xnu
by hany el imam - hany@hanynet.com
.
|