[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ suivant ]


Guide de référence pour Debian
Chapitre 7 - Le noyau Linux et Debian


Debian a une manière de recompiler le noyau Linux et les modules associés qui lui est propre. Voir aussi Debian et le noyau, Section 2.7.


7.1 Recompilation du noyau

L'utilisation de gcc, binutils et modutils de Debian unstable peut aider lors de la compilation du dernier noyau Linux. Voir /usr/share/doc/kernel-package/README.gz, et spécialement la fin, pour l'information officielle.

Comme c'est en évolution constante, la compilation d'un noyau est difficile même pour les meilleurs développeurs :

Manoj Srivastava a écrit :

--initrd nécessite un patch cramfs de Debian.

Herbert Xu a écrit :

Non, il n'y en a pas besoin, tout ce qu'il faut faire pour utiliser un système de fichier autre que CRAMFS est de configurer MKIMAGE dans /etc/mkinitrd/mkinitrd.conf.

Attention et reposez-vous toujours sur /usr/share/doc/kernel-package/README.gz de Manoj et Kent. Assurez-vous d'obtenir la dernière version de kernel-package de unstable si vous voulez compiler la dernière version du noyau.

initrd n'est pas nécessaire pour un noyau compilé pour une seule machine. Je l'utilise parce que je veux que mon noyau soit presque identique à celui fournit par kernel-image. Si vous utilisez initrd, lisez bien mkinitrd(8) et mkinitrd.conf(5). Voir aussi http://bugs.debian.org/149236.


7.1.1 Méthode Debian standard

Soyez attentifs aux rapports de bogues relatifs à kernel-package gcc, binutils et modutils. Utilisez une nouvelle version de ceux-ci si nécessaire.

Sous Debian, compiler un noyau personnalisé à partir des sources nécessite de prendre certaines précautions. Utilisez la nouvelle option --append_to_version avec make-kpkg pour compiler plusieurs images du noyau.

     # apt-get install debhelper modutils kernel-package libncurses5-dev
     # apt-get install kernel-source-2.4.18   # utilisez la dernière version
     # apt-get install fakeroot
     # vi /etc/kernel-pkg.conf     # entrez votre nom et adresse électronique
     $ cd /usr/src                 # dossier où va se faire la compilation
     $ tar --bzip2 -xvf kernel-source-2.4.18.tar.bz2
     $ cd kernel-source-2.4.18     # si c'est votre source du noyau
     $ cp /boot/config-2.4.18-386 .config     # récupérez la configuration
                                                actuelle comme defaut
     $ make menuconfig             # personnalisez votre noyau
     $ make-kpkg clean             # obligatoire  (voir : man make-kpkg)
     $ fakeroot make-kpkg --append_to_version -486 --initrd \
             --revision=rev.01 kernel_image \
             modules_image # modules_image pour pcmcia-cs* etc.
     $ cd ..
     # dpkg -i kernel-image*.deb pcmcia-cs*.deb # installation

En réalité, make-kpkg kernel_image lance make oldconfig et make dep. N'utilisez pas --initrd si initrd n'est pas utilisé.

Si vous voulez les modules de pcmcia-cs, ou pas de support pcmcia, sélectionnez « General setup —> » dans « PCMCIA/CardBus support —> » dans make menuconfig et en mettant la configuration à « < > PCMCIA/CardBus support » (càd décocher la case).

Sur une machine SMP, configurez CONCURRENCY_LEVEL selon kernel-pkg.conf(5).


7.1.2 Méthode classique

Récupérez les sources officielles depuis :

ou utilisez les sources équivalentes dans Debian et faites ce qui suit :

     # cd /usr/src
     # tar xfvz linux-whatever.tar.gz
     # rm -rf linux
     # ln -s linux-whatever linux
     # tar xfvz pcmcia-cs-whatever.tar.gz
     # ln -s pcmcia-cs-whatever pcmcia
     # cd linux
     # make menuconfig
     ... configurez ...
     # make dep
     # make bzImage
     ... editions des fichiers de configuration pour lilo / grub ...
     ... déplacez /usr/src/linux/arch/i386/boot/bzImage vers boot ...
     ... /sbin/lilo ou ce qui se fait pour grub
     # make modules; make modules_install
     # cd ../pcmcia
     # make config
     # make all
     # make install
     ... ajoutez les noms des modules dont vous avez besoin dans /etc/modules
     # shutdown -r now
     ... redémarrez avec le nouveau noyau ...

7.1.3 En-têtes du noyau

La plupart des programmes « normaux » n'ont pas besoin des en-têtes du noyau et peuvent même planter si vous les utilisez directement ; à la place, ils doivent être compilés avec les en-têtes avec lesquels la glibc a été compilée, qui sont les versions de /usr/include/linux et /usr/include/asm du système Debian.

Donc, ne créez pas de liens vers /usr/src/linux depuis /usr/include/linux et /usr/include/asm, comme suggéré par certains documents trop vieux.

Si vous avez besoin d'en-têtes du noyau particuliers pour une application spécifique à un noyau, changez le Makefile pour inclure les chemins vers rep-des-entêtes-particulières/include/linux et rep-des-entêtes-particulières/include/asm.


7.2 Le noyau 2.4 modulaire

Les nouveaux noyaux 2.4 Debian fournis dans kernel-image-2.4.NN sont très modulaires. Vous devez vous assurer que les modules effectuant les fonctions du noyau que vous recherchez sont là.

Bien qu'il y ait de nombreux exemples pour /etc/modules dans la section suivante, on me dit qu'un moyen correct de corriger les problèmes relatifs aux modules est de fournir un alias au périphérique dans un fichier de /etc/modutils/ puisqu'assez d'alias sont disponibles avec les noyaux actuels.

Voir Dispositions spéciales pour manipuler les modules, Section 2.7.3 et Documentation/*.txt dans les sources de Linux pour l'information précise.


7.2.1 PCMCIA

/etc/modules doit contenir les lignes suivantes pour que PCMCIA fonctionne :

     # driver ISA PnP 
     isa-pnp
     # driver PCMCIA bas niveau
     # yenta_socket # je n'en ai apparemment pas besoin

Le reste est pris en charge par des scripts PCMCIA (du paquet pcmcia-cs), depmod et kmod. J'ai besoin de isa-pnp, sûrement parce que mon portable possède une vieille interface ISA-PCMCIA. Des portables récents avec une interface Cardbus/PCMCIA peuvent ne pas en avoir besoin.

Miquel van Smoorenburg miquels@cistron.nl nous dit :

« J'ai tout simplement supprimé tout ce qui a rapport à pcmcia sur mon portable au travail, y compris cardmgr, et j'ai installé un noyau 2.4 avec le support cardbus, et le nouveau paquet hotplug de Woody.

Si vous avez une carte 32 bits, vous n'avez pas besoin du paquet pcmcia ; le noyau 2.4 comprend cardservices. Et le pilote tulip standard devrait marcher avec votre carte dlink.

—Mike »


7.2.2 SCSI

[NON TESTE] /etc/modules doit contenir les lignes suivantes pour que SCSI fonctionne :

     # noyau SCSI
     scsi_mod
     # driver générique SCSI
     sg
     # disque SCSI
     sd_mod
     # Tous les autres modules nécessaires pour le matériel
     ...

depmod peut peut-être se charger lui-même de certains de ces modules.


7.2.3 Fonctions réseau

/etc/modules doit contenir les lignes suivantes pour obtenir des fonctionnalités réseau supplémentaires :

     # net/ipv-4
     ip_gre
     ipip
     
     # net/ipv-4/netfilter
     # iptable (dans l'ordre)
     ip_tables
     ip_conntrack
     ip_conntrack_ftp
     iptable_nat
     iptable_filter
     iptable_mangle
     #
     ip_nat_ftp
     ip_queue
     #
     ipt_LOG
     ipt_MARK
     ipt_MASQUERADE
     ipt_MIRROR
     ipt_REDIRECT
     ipt_REJECT
     ipt_TCPMSS
     ipt_TOS
     ipt_limit
     ipt_mac
     ipt_mark
     ipt_multiport
     ipt_owner
     ipt_state
     ipt_tcpmss
     ipt_tos
     ipt_unclean
     #
     #ipchains
     #ipfwadm

Ces lignes ne sont pas optimisées. depmod pourrait se charger de certains des modules.


7.2.4 Système de fichiers EXT3 ( > 2.4.17)

Les étapes suivantes sont nécessaires pour activer le système de fichiers journalisé Ext3, en utilisant une image du noyau Debian précompilée ( > 2.4.17) :

     # cd /etc; mv fstab fstab.old
     # sed 's/ext2/ext3,ext2/g' <fstab.old >fstab
     # vi /etc/fstab
     ... mettre le type du système de fichiers racine à "auto"
         au lieu de "ext3,ext2"
     # cd /etc/mkinitrd
     # echo jbd >>modules
     # echo ext3 >>modules
     # echo ext2 >>modules
     # cd /
     # apt-get update; apt-get install kernel-image-2.4.17-686-smp
     ... installe le noyau le plus récent
         et configure le démarrage du système (lilo est exécuté)
     # tune2fs -j -i 0 /dev/hda1
     # tune2fs -j -i 0 /dev/hda2
     ... Pour tous les systèmes de fichier EXT2 convertis en EXT3
     # shutdown -r now

La journalisation EXT3 du système de fichier est maintenant activée. Une entrée « type » ext3,ext2 dans fstab assure un passage sûr à EXT2 si le noyau ne supporte pas EXT3 pour les partitions autres que la partition racine.

Si un noyau 2.4 est déjà installé et que vous ne souhaitez pas le réinstaller, faites la même chose jusqu'aux commandes apt-get et :

     # mkinitrd -o /boot/initrd.img-2.4.17-686-smp /lib/modules/2.4.17-686-smp
     # lilo
     # tune2fs -j -i 0 /dev/hda1
     # tune2fs -j -i 0 /dev/hda2
     ... pour tous les FS EXT2 convertis en EXT3
     # shutdown -r now

La journalisation EXT3 du système de fichier est maintenant activée.

Si /etc/mkinitrd/modules n'a pas été configuré quand mkinitrd a été exécuté et que vous souhaitez ajouter des modules au démarrage du système :

     ... à l'invite de initrd pour accéder au shell (5 sec.), appuyer sur RETURN
     # insmod jbd
     # insmod ext3 # modprobe ext3 prend peut-être tout en charge
     # insmod ext2
     # ^D
     ... continue le démarrage

Sur l'écran de démarrage (dmesg), « cramfs: wrong magic » apparaît mais cette erreur est connue pour être sans conséquence. Ce problème a été résolu dans Sarge (10/2002). Voir http://bugs.debian.org/135537 et le EXT3 File System mini-HOWTO ou /usr/share/doc/HOWTO/en-txt/mini/extra/ext3-mini-HOWTO.gz pour plus d'information.

Sur certains systèmes, le noyau se bloque lorsque EXT3 est activé mais je n'ai eu aucun problème (avec 2.4.17).


7.2.5 Support Realtek RTL-8139 dans le noyau 2.4

Pour une raison inconnue, le module RTL-8139 ne s'appelle plus rtl8139, mais 8139too. Éditez simplement votre fichier /etc/modules pour changer l'entrée correspondante lorsque vous mettez à jour un noyau 2.2 en 2.4.


7.2.6 Support du port parallèle

Avec kernel-image-2.4.*, le support du port parallèle est fournit en module. Activez-le avec :

     # modprobe lp
     # echo lp >> /etc/modules

Voir Documentation/parport.txt dans le source de Linux.


7.2.7 Trop de fichiers ouverts

Le noyau Linux peut se plaindre : « Too many open files » (trop de fichiers ouverts). Cela est dû à la petite valeur (8096) de file-max. Pour corriger ce problème, lancez les commandes suivantes en tant que root (ou mettez-les dans un script de démarrage de /etc/rcS.d/*.

     # echo "65536"  >/proc/sys/fs/file-max  # pour les noyaux 2.2 et 2.4
     # echo "131072" >/proc/sys/fs/inode-max # pour le noyau 2.2 seulement

Pour plus d'information sur le changement des paramètres du noyau dans le système de fichiers /proc, lisez Documentation/sysctl/* dans les sources de Linux.

D'autres exemples de manipulation des paramètres du noyau sont dans /etc/init.d/networking et Étranges problèmes d'accès à certains sites web, Section 3.7.5.


[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ suivant ]


Guide de référence pour Debian

CVS, jeu 18 jan 2007 11:52:23 UTC

Osamu Aoki osamu#at#debian.org
Traduction en Français : Guillaume Erbs gerbs#at#free.fr
Auteurs, Section A.1