Compilazione del kernel Linux Corso Linux 2007 Compilazione del kernel Linux
Un passo indietro Il processo di compilazione
Ricompilare A chi serve? Agli sviluppatori del kernel A chi ha bisogno di qualche funzionalità esotica o sperimentale, non presente di default A chi vuole un sistema “su misura” Ai curiosi A chi non serve? A chi vuole installare un driver dai sorgenti
Due parole sul kernel Il kernel è il software che gestisce la macchina (CPU, RAM, filesystem, periferiche...) l'esecuzione degli altri software (esecuzione, priorità, comunicazioni...) Non si può parlare del kernel in due parole. Dovendo scegliere monolitico modulare
Ottenere il kernel Dal sito http://www.kernel.org Dagli archivi Ubuntu sudo apt-get install linux-source viene copiato un file in /usr/src Stasera compiliamo “alla Ubuntu”
Ottenere gli strumenti Servono gli strumenti necessari alla compilazione esiste un pacchetto che installa tutto il necessario sudo apt-get install linux-kernel- devel Opereremo come root, ma non è strettamente necessario compilare non è un'attività di amministrazione
Decomprimere i sorgenti Decomprimiamo il file scaricato cd /usr/src sudo tar xjf linux-source- 2.6.22.tar.bz2 Cosa abbiamo scaricato? cd linux-source-2.6.22 ls -l Potrebbe essere interessante chiedersi “quanto è grosso” du -h
E ora? Diventiamo root sudo su Le opzioni di configurazione sono in un file nascosto: .config Modificarlo a mano non sembra una buona idea vim .config Esiste un “programma” apposito make config
Esistono altre interfacce make menuconfig Interfaccia a caratteri, librerie ncurses apt-get install libncurses5-dev make gconfig Interfaccia grafica, librerie GTK (Gnome) apt-get install libgtk2.0-dev libglade2-dev make xconfig Interfaccia grafica, librerie Qt (Kde)
Configurazione (1) Cosa possiamo scegliere? Includere una funzionalità Includere una funzionalità come modulo Non includere una funzionalità I moduli vengono caricati solo in caso di necessità
Configurazione (2) Meglio partire dal config del kernel attuale cp /boot/config-`uname -r` .config È molto istruttivo leggere cosa fanno le varie opzioni Non sempre si capisce a che servono Bisogna avere una buona conoscenza dell'hardware
Compilazione Generiamo il pacchetto: make-kpkg clean make-kpkg --initrd --append-to- version=-xxx kernel_image kernel_headers Aspettiamo Potrebbe servire qualche minuto o anche più di un'ora
Installazione Abbiamo generato 2 file linux-headers-2.6.22.9- xxx_2.6.22.9-xxx- 10.00.Custom_i386.deb linux-image-2.6.22.9- xxx_2.6.22.9-xxx- 10.00.Custom_i386.deb Per installare (da root) dpkg -i linux-image-2.6.22.9- xxx_2.6.22.9-xxx- 10.00.Custom_i386.deb
Moduli Negli archivi di Ubunti troviamo molti moduli compilati per il kernel di default Se vogliamo compilare un modulo per un kernel specifico sorgenti del modulo header del kernel