TP compilation noyau

Transcription

TP compilation noyau
Université Louis Pasteur
UFR de Mathématiques et Informatique
Licence Informatique (L2)
Année 2007/2008
Pratique et administration des systèmes
TP05 : Compilation noyau
1 But du TP
Dans ce TP vous allez apprendre à paramétrer, installer et moduler un noyau linux ou kernel en anglais.
2 Introduction
Le noyau est la partie fondamentale de tout système d’exploitation. En effet, un système d’exploitation est divisé
en 2 modes distincts :
– Le mode utilisateur qui permet de lancer des applications (par exemple "bash", "firefox", "SIP-Communicator",
"amarok", "vlc", etc.). Ces applications ne vont pouvoir utiliser les capacités de la machine sous-jacente que de
manière indirecte au moyen de l’A.P.I. (Application Programming Interface) fournit par le noyau.
– Le mode noyau qui gère toutes les fonctions vitales du système :
– Gestion de la mémoire physique.
– Gestion du matériel.
– Ordonnancement des tâches et processus.
Le noyau fournit une A.P.I. utilisable par le mode utilisateur qui donne accès aux fonctionnalités du matériel
et aux accès mémoire de façon indirecte. De cette manière le noyau filtre les requêtes indésirables venant de la
couche utilisateur.
Il est important de noter que si une application en mode utilisateur fait une erreur (par exemple un "segmentation
fault"), seul ce programme risque de terminer sur une erreur et le reste du système peut continuer à fonctionner
normalement. Par contre, si le noyau fait une erreur (par exemple un "kernel panic"), c’est toute la machine qui
devient inutilisable.
Un noyau est monolithique, mais peut comporter également des modules. L’intérêt des modules est de pouvoir charger
ou enlever une fonctionnalité à la volée et ainsi d’optimiser les performances et l’espace utilisé par le noyau. Il est donc
conseillé de compiler en module les fonctionnalités qui ne sont pas utilisées en permanence (par exemple le module
du lecteur CD, le module du firewire, etc.).
3 Installation d’un nouveau noyau
L’installation d’un nouveau noyau peut se décomposer en 3 phases comprenant :
– La configuration du noyau.
– La compilation et l’installation du noyau.
– La configuration du "loader".
La suite de ce document détaille comment réaliser ces 3 phases.
3.1
Configuration du noyau
La première étape est de télécharger la version du noyau qui vous intéresse. Les différentes versions du noyau
sont disponibles sur le site : http://kernel.org (choisissez la version complète "F"). Déplacer cette archive
dans /usr/src et décompressez la. Créez ensuite un lien symbolique /usr/src/linux avec le répertoire décompressé.
1
Entrez dans le répertoire /usr/src/linux et faites un make proper pour supprimer toute pré-configuration et
pré-compilation. Pour avoir une configuration de base vous pouvez copier le fichier /boot/config dans
/usr/src/linux/.config. Ensuite pour choisir les différents paramètres et modules de votre futur noyau,
faites un make menuconfig. Cela vous permet de définir si vous souhaitez 1 :
– Ne pas compiler (touche "n").
– Compiler en tant que module (touche "m").
– Compiler en "dur" dans le noyau (touche "y").
Si vous ne savez pas ce que fait tel ou tel fonctionnalité, appuyer sur la touche "h" pour afficher l’aide. N’oubliez pas
d’activer les pilotes pour votre disque dur et le système de fichier qui concerne la racine.
3.2
Compilation et l’installation du noyau
Une fois configuré, la compilation d’un noyau est simple. Pour cela, il suffit de faire un make. Attendez. Une fois
la compilation terminée faites un make install modules_install pour copier les fichiers dans /boot et les
modules dans /lib/modules/versions_du_noyau_compilé. Entrez ensuite dans /boot et créer l’image
initramfs correspondante en faisant mkinitramfs -o initrd.img-kernelversion kernelversion.
3.3
Configuration du "loader"
Au démarrage de la machine, le BIOS ou l’EFI lance le programme installé au niveau du Master Boot Record
(MBR). Ce programme est un "loader" qui permet de choisir le système d’exploitation et le noyau à démarrer. Les 2
"loader" les plus répandus sous Linux sont GRUB et LILO. Nous allons donc voir comment les configurer.
Pour GRUB il suffit d’éditer le fichier /boot/grub/menu.lst et d’y ajouter une nouvelle entrée correspondant
au nouvel noyau créé. Par exemple :
title
root
kernel
initrd
savedefault
Debian GNU/Linux, kernel 2.6.24.2
(hd0,0)
/boot/vmlinuz-2.6.24.2 root=/dev/hda1 ro fb=false
/boot/initrd.img-2.6.24.2
Attention, GRUB ne vérifie pas si vous avez renseigné correctement la nouvelle entrée. Faites donc bien attention à ne
pas donner un mauvais chemin d’accès.
Pour LILO il faut d’abord éditer le fichier /etc/lilo.conf et y ajouter une nouvelle entrée correspondant au
nouvel noyau créé. Par exemple :
image=/boot/vmlinuz-2.6.24.2
label=2.6.24.2
read-only
append="noapic irqpoll acpi=force"
initrd=/boot/initrd.img-2.6.24.2
Pour LILO il faut ensuite compiler la nouvelle configuration en appelant le programme lilo. Ainsi LILO vérifie que
votre nouvelle configuration est valide.
4 Redémarrer sous votre nouveau noyau
Pour redémarrer votre machine, faites simplement un reboot et au démarrage, choisissez l’entrée correspondante
à votre nouveau noyau. Une fois lancé, vous pouvez vérifier que vous utilisez bien votre nouveau noyau avec la
commande uname -a.
1 Pour
connaître les composants de votre machine utilisez les commandes lspci et hwinfo
2
5 Utilisation des modules
Si pour le noyau courant vous souhaitez ajouter un module. Vous pouvez sans redémarrer :
– Le compiler (make).
– L’installer (make modules_intall).
– Régénérer la liste des modules disponibles (depmod -a).
Une fois le module listé vous pouvez :
– Voir si ce dernier est déjà chargé (lsmod).
– Le charger manuellement (depmod nom_du_module).
– L’enlever manuellement (rmmode nom_du_module).
3

Documents pareils