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