Configurer et compiler un noyau Linux
Configurer
Le fichier .config se trouve initialement dans /lib/modules/`uname -r` (/build pour SLES et
Ubuntu, ou /source pour RHEL), on le copie dans la_racine ; la configuration se fait par l'outil menuconfig (ou xconfig) qui va
configurer le fichier .config, que l'on recopiera ensuite en /boot/config-`uname -r`.
Exemple
CONFIG_MODULES doit être activé
pour que le noyau Linux utilise les modules.
Liens
Compiler
Packages
Fichiers
la_racine :
- /usr/src/linux (lien vers le dossier du noyau local)
- /usr/src/linux-source-x.y.z (Ubuntu 12, 11, etc.)
- /usr/src/linux-x.y.z... (SLES 10 SP3)
- /usr/src/kernels/x.y.z.... (RHEL 5.3)
Fichiers d'aide
- /la_racine/README
- /la_racine/Documentation
- /usr/share/doc/kernel-package, etc.
Liens utiles
Modification de paramètres noyau lors de sa compilation
- Ex : optimisation au niveau périphs (d durs)
- # Generic PCI (IDE chipset & Bus Master DMA) support
# Use DMA by default
Installation des sources noyau Linux sur GNU/Linux Ubuntu 11.04
- l'installation du package linux-source par Synaptic a créé /usr/src/linux-source-2.6.38
- cd /usr/src ; tar -xvjf linux-source-2.6.38.tar.bz2
- l'installation du package libncurses5-dev a été nécessaire pour pouvoir exécuter "make menuconfig".
Compilation/configuration d'un noyau Linux sur GNU/Linux Ubuntu 6.10
-
Installation des packages
- sudo apt-get install linux-kernel-devel fakeroot kernel-wedge kernel-package
- installé par synaptic le package "linux-source"
- Il a mis linux-source-2.6.17.tar.bz2 dans /usr/src ; et a mis des infos dans /usr/share/doc
-
Installation des sources
- cd /usr/src
- tar xvjf linux-source-2.6.17.tar.bz2
- ln -sfn linux-source-2.6.17 linux ; cd linux
-
Récolte d'infos
- linuxinfo
- cat /proc/cpuinfo
- update-pciids ; lspci
- identifiants des périphériques : lspci -nn ; lsusb
- uname -r
-
Configuration du noyau
- cd /usr/src/linux
- cp /boot/config-2.6.17-11-generic .config (ou : cp /boot/config-`uname -r` .config)
- make menuconfig (ou : make xconfig)
- Modifications des paramètres noyau
- Processor type and features > Timer frequency (250 Hz) => modifié en 1000 Hz
- Enlevé le driver wireless, car pb à la compilation
- Notes
- vérifier qu'on a dans le fichier .config : CONFIG_MODULES=y (dans ce cas le noyau
Linux supporte les modules noyau, et on peut utiliser les commandes modprobe, lsmod, modinfo, insmod et rmmod).
- dans ce cas il faudra également exécuter : make modules_install
-
Compilation du noyau
- script compil_noyau.res (facultatif, script permet de garder une trace dans compil_noyau.res)
- fakeroot make-kpkg --initrd --append-to-version -vic1 kernel-image
- => compil réussie (après avoir enlevé le driver wireless),
"/usr/src/linux-image-2.6.17.14-ubuntu1-vic1_2.6.17.1-50.50_i386.deb" a été créé.
- exit (facultatif, pour sortir de script)
- Notes
- make-kpkg est un outil du paquet kernel-package (Debian, Ubuntu, etc.) - voir doc : /usr/share/doc/kernel-package.
-
Installation du noyau
- dpkg -i ../linux-image-2.6.17.14-ubuntu1-vic1_2.6.17.1-50.50_i386.deb
-
Résultat
- ls -s /boot| grep vic
76 config-2.6.17.14-ubuntu1-vic1
5300 initrd.img-2.6.17.14-ubuntu1-vic1
712 System.map-2.6.17.14-ubuntu1-vic1
1588 vmlinuz-2.6.17.14-ubuntu1-vic1