Kernel 2.4.x

Dernière mise à jour : 15/05/2002

    Vous consultez actuellement la troisième édition de la page sur le kernel 2.4.x et sa compilation. J'ai reçu en effet de nombreuses demandes pour mettre à jour cette page ainsi que tenter de la rendre un peu plus explicite. Vous découvrirez ici comment passer un système d'un kernel 2.2 vers le 2.4 (c'est encore le cas de quelques distributions dont je vais citer les versions citées plus loin.

    Le kernel constitue la couche matérielle de linux, vous paramétrez dans celle-ci les modules qui vous serviront à déclarer vos périphériques : carte vidéo, souris, usb, tablette graphique, webcam, scanner, matériel SCSI, chipset de carte mère, optimisations de disques dur, réseau, protocoles. Contrairement à windows, linux vous donne la possibilité de faire un kernel à votre mesure. Vous pouvez pour se faire compiler vos pilotes de périphérique à l'intérieur du kernel (option Y dans la configuration) ou bien compiler un module qui sera déclaré lors du démarrage de la machine (option M). L'avantage certain de choisir un module est que le kernel sera plus petit donc plus rapide à charger mais aussi le fait que vous pourrez dynamiquement charger/décharger des modules sans redémarrer ce qui s'avère pratique.

    Hormis les nombreux pilotes rajoutés à la liste du kernel 2.4, précisons qu'il comporte des changements importants sur la manière dont il est présenté et certaines sections sont désormais regroupées là où elles auraient du se trouver dès le début.

Kernel : concepts de compilation et points importants.

    Dans l'ordre, les options importantes du kernel sont de savoir : quel type de processeur vous possédez, si vos disques durs sont IDE ou SCSI et quels sont les principaux périphériques de votre machine. Compilez toujours les modules SCSI ou IDE en Y pour éviter de vous retrouver avec un kernel panic. Les raisons d'un kernel panic sont diverses mais si il apparaît dès le redémarrage d'un nouveau kernel compilé par vos soins, vous avez fait une erreur ...

    Comme indiqué précedemment, plus le kernel est petit, mieux c'est. Il tiendra parfaitement sur une disquette, ce qui peut se révéler utile. Si votre distribution comporte déjà un kernel avec les sources (toujours situé dans /usr/src et portant le nom : linux ou linux-2.4, il y a des chances qu'un .config se trouve dans /usr/src/linux(-2.4). Copiez alors ce .config dans /usr/src sous le nom : config24x. Attention : cette manipulation n'est valide que si votre kernel est déjà un 2.4. Pour connaître la version actuelle de votre kernel, tapez : uname -a. Cela vous indiquera le kernel utilisé et la date de compilation.

    Avant la mise à jour vers un 2.4 de chez http://www.kernel.org, vérifiez si votre distribution n'a pas de sources personnalisés. J'ai tendance à ne pas aimer ce type de sources mais il faut savoir que la sainte trinité : Redhat, SuSE et Mandrake patchent le kernel de façon relativement complète afin de supporter plus de matériel et de livrer une distribution qui devrait comporter moins de problèmes de compatibilités avec les machines. Si c'est le cas, vous pouvez installer un kernel en téléchargeant un rpm/pkg qui portera le nom : kernel-sources-2.4.xx.rpm, si vous en possédez déjà un (vérifiez par : rpm -qa |grep kernel-source), effacez-le auparavant pour éviter les problèmes (commande : rpm -e kernel-source-xxx).

    Si vous téléchargez un kernel source de la maison mère, téléchargez donc un kernel chez : http://www.kernel.org. Pour ceus qui l'ignorent, les numéros de versions sont importants. Ainsi un kernel comporte un numéro majeur et mineur. Si un kernel s'appelle : 2.4.18, comprenez que 2 est la version majeure, 4 est la version mineure mais stable (un numéro impair indique une version expérimentale) et les derniers chiffres définissent sont évolution, ici : 18. Les dernières évolution du kernel pour le mois d'avril 2002 sont : les séries 2.5 pour les kernels instables, les séries 2.4 pour les kernels actifs et stables, les séries 2.2 toujours maintenues mais moins suivies. Une fois que vous avez votre kernel 2.4 (extension tar.gz ou tar.bz2), décompactez-le, pour se faire, faîtes les commandes suivantes (passez ensuite à la section : compilation et installation d'un kernel 2.4) :

Distributions en kernel 2.2 : mise à jour.

    Voici la liste des distributions touchées :

    Ces distributions nécessitent un peu plus qu'une simple mise à jour du kernel. En effet, pour compiler et marcher correctement (surtout au niveau des modules), le kernel nécessite des versions récentes des utilitaires suivants : modutils, util-linux et pppd. Ce dernier devra être de version supérieure à 2.4 si vous voulez espérer vous connecter à l'internet. Voici les liens des utilitaires à télécharger pour passer vers le kernel 2.4, ces utilitaires sont à installer avant toute mise à jour.

    Je vous conseille de consulter les listes de mises à jour de votre distribution, vous constaterez que nombre d'entres elles proposent des versions mises à jours de ces utilitaires auquel cas, il suffit de remplacer les packages plutôt que d'installer les sources. Si vous choisissez les sources, n'oubliez pas de désinstaller le package présent sur votre distribution sinon, il y aura conflit ou bien l'utilitaire présent sur votre distribution précédera celui que vous avez installé et la mise à jour ne se fera pas correctement.

Compilation et installation d'un kernel 2.4

    Si vous possédez un fichier .config que vous avez recopié sous le nom config24x, faîtes ceci :
    Linux ne vous demandera alors de configurer que les options supplémentaires entres la version du .config de votre kernel et le nouveau kernel que vous installez. Je préconise quand même d'aller dans le kernel afin de personaliser au moins : le type de processeur, les disques durs, les pilotes vidéo, réseau, son et usb. Retirez tout ce qui ne semble pas utile et qui semble également secondaire (ne retirez pas par exemple le support IDE, sinon, votre kernel ne démarrera pas ...). Pour configurer un kernel, vous devez être root, placez vous dans le répertoire /usr/src/linux. Pour appellez la configuration en ligne de commande, tapez make menuconfig, pour ce qui est de la configuration en mode graphique (sous X), tapez : make xconfig. Vous devriez alors obtenir la fenêtre ci-dessous.



    Comme le montre la capture ci-dessous, sélectionnez le type de processeur que vous désirez paramétrer. Une erreur sur le type conduira à un kernel panic. Activez également MTRR, cela concerne la mémoire vidéo sur les cartes AGP, votre carte ira alors beaucoup plus vite (en particulier sur les opérations 3D si votre pilote le supporte). Plus tard dans les sections, n'oubliez pas de configurer AGPGart ainsi que DRI pour XFree. Si vous avez un doute sur une quelconque option, une aide est la plupart du temps disponible. Sachez également que des fichiers de documentation complets rangés par section sont fournis dans : /usr/src/linux/Documentation. Ce sont des fichiers texte expliquant toutes les options, lecture plus que conseillée si vous avez un doute.



    Pour ce qui est des autres périphériques : son, réseau, etc ... Préférez la compilation en modules. Vous pouvez alors sélectionner autant de modules que vous voulez et les charger ultérieurement pour utiliser celui qui marche le mieux (je fais surtout référence à l'USB ici pour lequel 3 pilotes de base existent : uhci, usb-uhci et ohci). Sachez que les distributions de type redhat compilent presques tous les périphériques en modules et utilisent ensuite initrd pour les charger en fonction de votre système. Initrd est un programme bien pratique permettant de tout garder en module. Je le déconseille pour les débutant car une erreur est vite arrivée. Si vous désirez néanmoins conserver un kernel fournit par votre distribution, consulter leur documentation pour savoir comment ça marche.



    La configuration de l'usb est relativement importante si on considère le nombre de personnes possédant désormais des périphériques de ce type. L'écran ci-dessous vous montrera les options nécessaires pour l'usb. Celles-ci incluent le très fameux : preliminary usb filesystem (/proc), ne l'oubliez pas, une fois redémarré sur le nouveau kernel, vous pourrez interroger /proc/bus/usb/devices pour savoir ce que votre système a détecté. Si vous désirez plus d'infos sur l'usb sous linux, les périphériques supportés ainsi que leur installation, consultez http://www.linux-usb.org.



    Une fois le paramétrage terminé, passons à la compilation. Sauvez alors vos options de kernel. Dès que vous avez accès à la ligne de commande, sauvez votre .config par un : cp /usr/src/linux/.config /usr/src/config24x_perso. Il ne reste qu'à recompiler, les temps sont variables, ainsi un PIII-866 prendra environ 5 minutes, un Athlon 1400 : 3 minutes, etc ... Dans les commandes suivantes, la première crée les dépendances entre les fichiers du kernel, la seconde nettoie si besoin est (surtout nécessaire si vous recompilez), la troisième crée une image compressée (oui, il s'agit de votre kernel) et les dernières compilent et installent les modules du kernel (ne les oubliez pas !).

    Nous avons quasimment terminé l'installation. Si vous n'avez pas d'erreur, recopiez le kernel vers le boot de votre système : cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinux24xx. 24xx contient ici la version de votre kernel, ainsi pour un 2.4.18, nommez-le : vmlinux2418. Notez également que l'image se trouve dans i386 car j'utilise une architecture x86, ainsi un sparc aura /usr/src/linux/arch/sparc.

    Il s'agit maintenant d'installer le kernel sur votre système. Les fichiers de configuration sont dans /etc/lilo.conf (pour les utilisateurs de lilo) ou /etc/grub.conf (pour les utilisateurs de grub). Pour lilo ajoutez ces lignes après une des images (ou tout à la fin de votre lilo.conf) :

    Il faut ensuite indiquer à lilo que vous désirez enregistrer un nouveau kernel à la liste du secteur de démarrage. Pour ce faire : lilo -v. Verifiiez bien qu'aucune erreur n'apparaît. Si vous désirez démarrer ce kernel par défaut (à chaque allumage de votre machine), modifiez la ligne : default= pour qu'elle mentionne le nouveau label, dans cet exemple : default=l2418. N'oubliez pas de réinscrire lilo à nouveau.

    Un piège classique consiste à oubliez deux lignes dans la configuration, ainsi une distribution normale contient également une ligne root= et boot= dans une image, si c'est le cas, recopiez également ces lignes, sinon : kernel panic. Enfin, si l'image contient une ligne initrd=, retirez-la, les conseils donnés ici n'en tiennent pas compte.

    Les utilisateurs de grub auront la vie un peu plus simple, ainsi prenant le même exemple, recopiez ceci :

    Notez ici la mention d'un root=, ne le changez pas. Notez aussi qu'on ne mentionne pas /boot car grub sait ou se trouve /boot en regardant /etc/fstab. Il n'y a pas besoin de réinscrire grub, c'est automatique.

Redémarrage

    A ce point, tout est normalement prêt pour lancer votre nouveau kernel. Vous avez recompilé et installé la nouvelle version et vous pouvez, le cas échéant, redémarrer sur l'ancienne version. Redémarrez alors votre machine et sélectionnez le nouveau kernel. Surveillez le démarrage, si vous arrivez au prompt de login, c'est presque gagné. Connectez vous en tant que root et faîtes un : dmesg |more. Consultez les lignes de démarrage afin de consulter les erreurs éventuelles. Les fichiers /var/log/messages ou s'il existe : /var/log/kernel ; var/log/errors/ vous indiqueront les autres problèmes suite à la compilation.

    Les modules sont la partie importante après une recompilation, ainsi, consultez ce que le système à chargé pour vous assurer qu'il ne manque rien. Les modules sont déclarés dans : /etc/modules.conf. Voici quelques commandes :

    S'il vous manque des modules, vous pouvez toujours recompiler et réinstaller les modules manquants. Pour ce faire, relancez l'interface menuconfig ou xconfig pour sélectionner et sauver les modules manquants et faîtes la commande suivante :

    Pour éviter les problèmes, je préconise un redémarrage. Je pense avoir couvert l'essentiel pour installer un nouveau kernel. Cet article se veut également plus clair afin d'aider les nombreuses personnes à m'avoir contacté pour l'installation d'une nouvelle version. Si vous avez des questions, n'hésitez pas à utiliser l'email.