5. (Ri)Compilazione : i sorgenti
Tramite packet manager
Scaricandoli da www.kernel.org
Posti in /usr/src/linux-<versione>-<release>
/usr/src/linux -> /usr/src/linux-<versione>-<release>
Per consuetudine
# chown -R root:src /usr/src/
# chmod -R g+w /usr/src/*
# adduser <you> src
6. Configurazione iniziale
Se si vuole partire dalla configurazione attuale del kernel si
copi il file di configurazione attuale ( /boot/config<version> )
in /usr/src/linux/.config
Possono essere necessari i pacchetti
fakeroot e libncurses5-dev
Si accede all'interfaccia di configurazione tramite
[you@/usr/src/linux/] # make menuconfig
!!! Se il kernel che ci si appresta a configurare 竪 di una
versione LEGGERMENTE diversa rispetto a quella per la
quale 竪 scritto il config si usi prima # make oldconfig
8. Un kernel 'snello'
I kernel standard contengono il supporto per consentire il
funzionamento del maggior numero di piattaforme
Tutto e solo il supporto per il proprio hardware ?
Device drivers check pages
es. http://kmuto.jp/debian/hcl/
( il risultato 竪 affidabile se la Device Map 竪 la stessa )
9. (Ri)Compilazione
Standard :
# make && make modules_install
E per installarlo ?
Il bootloader deve sapere quale kernel caricare
Debian way:
# fakeroot make-kpkg --append-to-version
-nomepersonalizzato --revision=1 kernel_image
Crea un paccketto kernel-<versione>-nomepersonalizzato.<arch>.deb
Pu嘆 essere installato con # dpkg -i kernel-<versione>-...etc.etc.
Se si usa LILO come bootloader va aggiornato il MBR # lilo -v
Se non 竪 la prima volta, prima di tutto # make-kpkg clean
10. E I moduli ?
lsmod
modprobe / insmod
rmmod
Per caricare moduli all'avvio ?
/etc/modules
/etc/modules.autoload.d/kernel-<version>
11. initrd || !initrd ?
Risposta breve : !initrd
Risposta meno breve :
L'initial RAM Disk 竪 un filesystem minimale temporaneo montato al
boot che contiene drivers ed eseguibili (es. Insmod) necessari al
mount del filesystem radice vero e proprio. Una volta montato il
filesystem radice reale, viene smontato l'initrd e liberata la
memoria occupata. In molti sistemi embedded l'initrd 竪 proprio il
filesystem radice. Nei sistemi di uso comune l'uso dell'initrd
permette di non compilare all'interno del kernel tutti i supporti
per tutti i possibili tipi di filesystem. Se il supporto per il
filesystem radice 竪 incluso nel kernel, non occorre
necessariamente un initrd.
12. KSplice
Applicare patch al kernel senza bisogno di riavviare il sistema
automatizzato solo se le patch non introducono
cambiamenti semantici nelle strutture dati ( es. 84% delle
patch di sicurezza da maggio 2005 a dicembre 2007 )
Implementato (al momento) solo per x86-32 e x86-64
Solo per kernel 2.6.x
Testato su kernel da 2.6.8 a 2.6.25,
su distro Debian, Ubuntu, RHEL, Gentoo.
Pu嘆 essere pi湛 pericoloso che utile ?