Innanzi tutto dovremo assicurarci di avere un kernel funzionante, in caso il nuovo kernel non si avvii. Avendo un kernel funzionante, ad esempio quello che state utilizzando in questo momento, ci permetterà di avviare il PC come abbiamo sempre fatto. Inoltre, se si stesse partendo da zero, è più che consigliabile avere sotto gli occhi le specifiche del proprio hardware e soprattutto i moduli che lo gestiscono. Un buon punto di partenza potrebbe essere questo: http://kmuto.jp/debian/hcl/. Oltre ad indicarci i moduli necessari per i nostri dispositivi pci, rispetto ad altri metodi (come quelli indicati successivamente) ci permette di testare l'hardware di una particolare macchina (vedendo con quali moduli del kernel potrebbe funzionare l'hardware presente) senza dover installare un sistema operativo (ma inserendo i dati necessari [lspci -n] ad esempio da una live).
Se si volesse invece semplicemente compilare un kernel sulla base di quello attuale, gli unici dati che ci interesseranno saranno il file system della partizione d'avvio ("/boot" e/o "/") e il controller del disco nel quale sono queste partizioni (per vedere come ottenere questi dati si legga il capitolo "File System, controller del disco e initrd".
Un altro metodo per trovare i moduli necessari per il nostro hardware è consultare il libro "Linux Kernel in a Nutshell" (tradotto completamente in italiano dalla comunità e disponibile all'indirizzo: http://guide.debianizzati.org/index.php/Linux_Kernel_in_a_Nutshell. Il manuale è da considerarsi fra le referenze migliori in ambito di compilazione del kernel Linux). Si tratta dello script find_all_modules.sh che vi riporto qui di seguito (ignorate le righe con errori nell'output):
#!/bin/bash # # find_all_modules.sh # for i in `find /sys/ -name modalias -exec cat {} \;`; do /sbin/modprobe --config /dev/null --show-depends $i; done | rev | cut -f 1 -d '/' | rev | sort -u
La guida "Linux Kernel in a Nutshell" ci propone ancora un altro script (get-driver.sh) per trovare in modo semplice i moduli relativi ad un dispositivo (ad es. hda, sda, ...):
#!/bin/sh # # Find all modules and drivers for a given class device. # if [ $# != "1" ] ; then echo echo "Script to display the drivers and modules for a specified sysfs class device" echo "usage: $0 <CLASS_NAME>" echo echo "example usage:" echo " $0 sda" echo "Will show all drivers and modules for the sda block device." echo exit 1 fi
(continua nella prossima pagina)