Qu'est-ce que le noyau Linux ? C'est le coeur de ton nouveau système d'exploitation. C'est lui qui fait l'interface entre les programmes et le matériel, c'est lui qui gère les processus, la mémoire, les droits d'accès, etc... C'est ce noyau qui est sous licence GPL (General Public Licence) et que l'on retrouve dans toutes les distributions. C'est ce noyau qui a fait la preuve de sa stabilité et de sa rigueur au niveau de la sécurité.
  1. Pourquoi recompiler un noyau ? Le noyau qui tourne en ce moment sur ton Linux faîchement installé est le noyau fournit en standard dans la distribution Debian. C'est un noyau assez gros qui est destiné à pouvoir fonctionner sur la plupart des machines. Ce que nous allons faire est "personnaliser" le noyau pour qu'il supporte nos périphériques et eux seulement. Plus le noyau est petit, plus le système d'exploitation est rapide. L'étape la plus difficile sera la configuration du noyau, pour qu'il supporte bien tous nos périphériques.
  2. Quel noyau choisir ? Il faut aujourd'hui choisir entre la branche "2.2" et la branche "2.4" du noyau Linux. Ces deux branches sont dites "stables". En effet, les branches "instables", qui servent au développement, ont le deuxième chiffre impair : "2.1" pour le développement de la branche "2.2", "2.3" pour le développement de la branche "2.4", et maintenant "2.5" pour le développement de la future branche stable "2.6". La branche "2.4" est la plus récente, et c'est elle que nous utiliserons. Cependant, elle n'est pas supportée en standard par la version "stable" de la Debian, appellée "Potato". Si tu veux mettre un noyau "2.4" sur une "Potato", va sur le site officiel de Debian www.debian.org, clique sur "News" et suis les instructions écrites dans la nouvelle du 15 Avril 2001 intitulée "Running Linux 2.4.x with Debian GNU/Linux 2.2". Dans les deux cas, il faut prendre le dernier noyau de chaque branche. A l'heure où j'écris cette page, il s'agit du noyau : La version "woody" de la Debian que nous utilisons supporte en standard le noyau 2.4. C'est donc le noyau 2.4.17 que nous allons utiliser.
  3. C'est parti... La plus grande partie de la procédure ne nécessite pas d'être root. Cependant, il va falloir d'abord ajouter l'utilisateur que tu es au groupe "src". En root, tape :
    adduser toto src où toto est ton nom d'utilisateur. Il te faudra aussi installer le package "libncurses5-dev", qui n'est pas installé par défault :
    apt-get install libncurses5-dev
    Maintenant que tu as les droits et les packages nécessaires, nous allons repasser en simple utilisateur et télécharger les sources du noyau :
    Place-toi dans le répertoire /usr/src et tape : lftp ftp.via.ecp.fr
    cd pub/linux/kernel/v2.4
    get linux-2.4.17.tar.gz
    exit
    Décompresse les sources :
    tar -xvzf linux-2.4.17.taz.gz Il te crée alors un nouveau répertoire "linux" que tu vas t'empresser de renommer en "linux-2.4.17" :
    mv linux linux-2.4.17
  4. Configurer le noyau C'est de loin la partie la plus difficile. Mets-toi dans le répertoire /usr/src/linux-2.4.17. Pour te faciliter la tâche, j'ai mis sur ftp.via.ecp.fr dans le répertoire pub/via/formation-linux un fichier config-2.4.17 qui est un bon fichier de configuration du noyau pour un ordinateur avec une carte 3Com PCI (celles de VIA), une carte son SB PCI 128 et un Disque Dur IDE, un lecteur de CD ou DVD IDE et un graveur IDE. Même si ta config est différente, n'hésite pas à prendre ce fichier comme base de travail. Pour cela :
    lftp ftp.via.ecp.fr
    cd pub/via/formation-linux
    get config-2.4.17
    exit
    mv config-2.4.17 .config
    Pour lancer l'utilitaire de configuration du noyau avec ce fichier de configuration, tape, toujours en tant que simple utilisateur :
    make menuconfig Tu arrives dans l'interface de configuration du noyau. Tu peux naviguer avec les flèches et entrer dans les menus en appuyant sur Enter.

    Menu de configuration du noyau

    Pour certaines options du noyau, tu as le choix entre mettre l'option "en dur" ou "en modules". Les modules sont comme des "morceaux de noyau" qui peuvent être insérés ou enlevés sans devoir rebooter le système. Cette configuration présente l'intéret de générer un noyau de taille raisonnable, et de supporter de très nombreux matériels. Nous allons donc mettre un maximum de périphériques en modules... mais pas tous ! Il y a donc deux types d'options (on passe d'une option à la suivant en appuyant sur espace) : Certaines options ne sont destinées qu'à faire apparître de nouvelles options. C'est par exemple le cas du premier menu. Dans tous les cas, n'hésite pas à lire l'aide qui est attachée à chaque option. Tu y trouveras généralement des informations pertinantes te permettant de juger si tu dois activer l'option ou pas. Pour cela, place-toi sur une option et appuie sur "Tab" jusqu'à être positionné sur "Help" et appuie sur "Enter". Nous allons maintenant passer en revue chaque menu :
    1. Code maturity level options ---> Ce menu ne contient qu'une seule option qui, si elle est cochée, fait apparaître les options considérées comme "instables". Ces options apparaissement alors avec un flag [EXPERIMENTAL] ou même [DANGEROUS].
    2. Loadable module support ---> C'est là que tu lui dis que ton noyau doit être capable d'insérer et d'enlever des modules à la volée sans rebooter. Il faut donc activer au minimum les options "Enable loadable module support" et "Kernel module loader".
    3. Processor type and features ---> Dans ce menu, tu commences par définir ton type de processeur. Ensuite, il faut activer "MTRR (Memory Type Range Register) support" et, si tu as la chance d'avoir une babasse multi-processeur, il faut aussi activer "Symmetric multi-processing support".
    4. General setup ---> Dans tous les cas, tu auras besoin des options "System V IPC", "BSD Process Accounting", "Sysctl support" et "Kernel support for ELF binaries". Mets toutes ces options en dur. En plus, il faut activer, si tu en as besoin :
      • le support du bus PCI : coche "PCI support" et "PCI device name database". Pour "PCI access mode" mets "Any".
      • le support du bus ISA : coche "EISA support".
      • le support du bus PCMCIA : coche "Support for hot-pluggable devices" et va dans le sous-menu "PCMCIA/CardBus support" qui apparaît. Dans ce sous-menu, mets en dur "PCMCIA/CardBus support", "CardBus support", "i82092 compatible bridge support" et "i82365 compatible bridge support".
      • le support du Power Management : mets en dur "Power Management support", "Advanced Power Management BIOS support" et "Enable PM at boot time".
    5. Memory Technology Devices (MTD) ---> Tu n'en as pas besoin.
    6. Parallel port support ---> Tu peux mettre, si tu en as un, le port parallèle en module. Pour cela, met les options "Parallel port support" et "PC-style hardware" en modules.
    7. Plug and Play configuration ---> Tu peux activer le support du Plug & Play pour tes périphériques, mais ce n'est pas obligatoire.
    8. Block devices ---> Met le lecteur de disquettes "Normal PC floppy disk support" en modules. Tu peux aussi mettre "Loopback device support" en modules, ça peut toujours servir pour plus tard...
    9. Multi-device support (RAID and LVM) ---> Si tu as une babasse "normale", ne mets rien.
    10. Networking options ---> C'est là qu'il faut demander à ton noyau de supporter le protocole TCP/IP et d'autres choses nécessaires au bon fonctionnement du réseau. Les quatres options :
      • "Packet socket"
      • "Unix domain sockets"
      • "TCP/IP networking"
      • "IP Multicast" (pour faire marcher VideoLAN...)
      • "IP: TCP syncookie support (disabled per default)"
      sont à mettre en dur dans le noyau. Pour info, le dernier sous-menu intitulé "QoS and/or fair queueing" est ce qui est utilisé par VIA pour réguler la bande passante Internet au niveau de son Firewall.
    11. Telephony Support ---> Ne rien mettre.
    12. ATA/IDE/MFM/RLL support ---> C'est là qu'il ne faut pas se tromper. Nous supposons que tu bootes sur un disque dur IDE qui contient ton noyau Linux. Il faut donc que ton disque dur soit "en dur" dans le noyau et non en module... car Linux à bien entendu besoin du support du disque dur dans le noyau pour pouvoir ensuite lire les modules qui sont écrits sur le disque dur.
      • Tu vas donc mettre "en dur" l'option "ATA/IDE/MFM/RLL support", aller dans le sous-menu qui s'affiche, et mettre en dur "Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support" et "Include IDE/ATA-2 DISK support".
      • Tu vas mettre l'option pour le lecteur de CD-ROM "Include IDE/ATAPI CDROM support" en module.
      • Ensuite, on trouve l'option "SCSI emulation support" qui est nécessaire pour graver avec un graveur IDE : si tu as un tel graveur, met cette option en module.
      • Il faut mettre en dur les options "Generic PCI IDE chipset support", "Sharing PCI IDE interrupts support", "Generic PCI bus-master DMA support" et "Use PCI DMA by default when available".
      • Enfin, tu trouves une liste de chipsets. Ces options servent à optimiser les performances du chipset de ta carte mère. Si tu ne trouves pas ton chipset, ce n'est pas grave du tout, on survit très bien sans ça.
    13. SCSI support ---> Si tu veux graver sous Linux, il faut encore mettre en modules les options "SCSI support", "SCSI CD-ROM support" et "SCSI generic support". Si tu as un disque dur ou un lecteur de CD SCSI, il faut activer "SCSI disk support" (en dur si il est destiné à accueillir ton noyau) et/ou "SCSI CD-ROM support" et trouver ta carte SCSI dans la liste du sous-menu "SCSI low-level drivers" (la mettre en dur si ton disque dur SCSI accueille le noyau).
    14. Fusion MPT device support ---> Ne rien mettre.
    15. I2O device support ---> Ne rien mettre.
    16. Network device support ---> Il faut trouver ton modèle de carte réseau. Coche "Network device support" pour voir apparaître les options et les sous-menus.
      • Si tu as une carte réseau PCI, ISA ou intégrée à ta carte mère, vas dans le sous-menu "Ethernet (10 or 100Mbits" :
        • si tu as une carte PCI de VIA, coche "3COM cards" et mets en module "3c590/3c900 series (592/595/597) 'Vortex/Boomerang' support",
        • si tu as une carte ISA de VIA, coche "3COM cards" et mets en module "3c509/3c529 (MCA)/3c579 "EtherLink III" support",
        • si tu as une carte perso... il va falloir essayer de trouver une option qui la supporte dans la liste...
      • Si tu as une carte réseau PCMCIA, vas dans le sous-menu "PCMCIA network device support" :
        • si tu as une carte PCMCIA 10Mb de VIA, met en module "3Com 3c589 PCMCIA support",
        • si tu as une carte PCMCIA 100Mb de VIA, met en module "3Com 3c574 PCMCIA support",
        • si tu as une carte PCMCIA perso... il va falloir essayer de trouver une option qui la supporte dans la liste...
        • si tu as une carte PCMCIA pour réseau sans-fil (VIA n'a pas encore de réseau sans-fil, mais ça ne saurait tarder...), coche la case "Pcmcia Wireless LAN" et choisi ton modèle de carte dans la liste qui apparaît.
      C'est tout ce qu'il y a à faire, sauf si tu veux pouvoir te connecter par modem à Internet : il faut alors mettre en module le protocole "PPP (point-to-point protocol) support".
    17. Amateur Radio support ---> Ne rien mettre.
    18. IrDA (infrared) support ---> Sauf si tu veux faire joujou avec de l'infrarouge, il ne faut rien mettre.
    19. ISDN subsystem ---> C'est pour les modems ISDN (RNIS ou Numéris en français). Ne rien mettre.
    20. Old CD-ROM drivers (not SCSI, not IDE) ---> Ne rien mettre, sauf si tu as un très vieux matériel (genre un CD-ROM qui se branche sur la carte son...)
    21. Input core support ---> Ne rien mettre, sauf si tu as une souris USB (expliqué sur www.linux-usb.org).
    22. Character devices --->
      • Certaines options sont à mettre "en dur" pour tout le monde : "Virtual terminal", "Support for console on virtual terminal" et "Unix98 PTY support".
      • Pour tout le monde, mettre en module "Enhanced Real Time Clock Support".
      • Si tu as un port série, tu peux mettre en module "Standard/generic (8250/16550 and compatible UARTs) serial support".
      • Pour activer le support de la souris, va dans le sous-menu "Mice" et sélectionne, en dur ou en module :
        • "Bus Mouse Support" si tu as une souris sur port série,
        • "Mouse Support (not serial and bus mice)" et "PS/2 mouse (aka 'auxiliary device') support" si tu as une souris sur port PS/2.
      • Si tu as une carte video sur port AGP, sélectionne "/dev/agpgart (AGP Support)" et éventuellement l'option qui correspond à ton chipset si tu en trouves une.
    23. Multimedia devices ---> Sauf si tu as une carte Télé que tu veux faire marcher sous Linux, ne mets rien.
    24. File systems ---> Là aussi, il ne faut pas se tromper.
      • On va commencer par mettre le système de fichier sur lequel est stocké le noyau "en dur" dans le noyau. Comme on utilise LILO, notre noyau va se trouver sur une partition de type "LINUX NATIVE" aussi appelée "Ext 2". Il faut donc absolument mettre en dur l'option "Second extended fs support".
      • Il faut aussi mettre en dur "/proc file system support" et "/dev/pts file system for Unix98 PTYs".
      • Ensuite, on peut passer au facultatif : mettre "DOS FAT fs support" et "MSDOS fs support" en modules pour pouvoir lire des disquettes formatée en DOS.
      • Met en plus "VFAT (Windows-95) fs support" en module pour pouvoir lire et écrire sur des partitions FAT 16 ou FAT 32, qui est le système de fichier utilisé par Windows 3.x, 95, 98, ME.
      • Ajoute "ISO 9660 CDROM file system support" en module et "Microsoft Joliet CDROM extensions" en dur pour pouvoir lire des CD-ROMs.
      • Pour ceux qui ont des partitions NTFS (système de fichier utilisé par Windows NT4, 2000 et XP) et qui veulent y accéder en lecture seule sous Linux, mettre "NTFS file system support (read only)" en module. L'option "NTFS write support" est flaggée [DANGEROUS], donc je ne te la conseille pas...
      En bas, on trouve trois sous-menus :
      • Network File Systems ---> Nous allons activer les options "NFS file system support" en module et "Provide NFSv3 client support" en dur pour pouvoir monter des répertoires en partage NFS. De même, nous allons activer "SMB file system support (to mount Windows shares etc.)" en module pour pouvoir monter des répertoires en partage sur le voisinage réseau. Il est bon de cocher "Use a default NLS" et de mettre la code page 850 pour avoir les caractères européens dans les noms des fichiers et des répertoires. Pour cela, on fait enter sur "Default Remote NLS Option:" en on tape "cp850".
      • Partition Types ---> Ne rien mettre.
      • Native Language Support ---> Met en module les Codepages 437 et 850, ainsi que "NLS ISO 8859-1" et "NLS ISO 8859-15". C'est pour pouvoir avoir des caractères européens sur les noms des fichiers et des répertoires des partitions Windows et des CD-ROMs.
    25. Console drivers ---> Active "VGA text console" et éventuellement "Video mode selection support" pour pouvoir sélectionner la "résolution" en mode console dans LILO. Nous n'activerons pas le "Frame-Buffer" pour l'instant.
    26. Sound ---> C'est là qu'il va falloir trouver ta carte son. Ce n'est pas toujours évident. Par exemple, si tu as une carte SB PCI 128, met en module l'option "Creative Ensoniq AudioPCI 97 (ES1371)". N'hésite pas à utiliser l'aide.
    27. USB support ---> Ne sert que si tu veux faire marcher des périphériques USB. Je ne détaillerais pas cette partie, qui ne te seras nécessaire dans l'immédiat que si tu as une souris USB.
    28. Bluetooth support ---> Pour les périphériques Bluetooth : ne rien mettre.
    29. Kernel hacking ---> Il peut être utile d'activer les options "Kernel debugging" et "Magic SysRq key".
    Une fois que tu penses que ton noyau est bien configuré, fais "exit" et accepte d'enregistrer la nouvelle configuration du noyau. Voilà, c'est un permier essai dans l'objectif d'avoir le noyau parfait, c'est à dire un noyau qui te permet de faire marcher tous tes périphériques sans option inutile. Tu verras, tu auras probablement à t'y reprendre à plusieurs fois avant d'avoir un noyau parfait... mais après, la configuration du noyau Linux n'aura plus aucun secret pour toi !
  5. Compiler le noyau C'est la partie la plus simple. Toujours en simple utilisateurs, tape :
    make dep
    pour les dépendances, Puis, il faut faire le ménage :
    make clean
    On peut ensuite recompiler le noyau en lui-même :
    make bzImage
    Compile les modules :
    make modules
    Installer les modules : loggue-toi en root, puis tape :
    make modules_install
  6. Préparer le reboot Pour changer de noyau, il faut rebooter. C'est en théorie la seule raison de rebooter pour un ordinateur sous Linux... enfin... en théorie. En root, on va déplacer le nouveau noyau dans le répertoire /boot : > cp /usr/src/linux-2.4.17/arch/i386/boot/bzImage /boot/vmlinuz-2.4.17> Il faut aussi bouger la map du system :> cp /usr/src/linux-2.4.17/System.map /boot/System.map-2.4.17 On va aussi sauvegarder dans /boot le fichier de configuration du noyau : > cp /usr/src/linux-2.4.17/.config /boot/config-2.4.17 Il faut maintenant dire à LILO que l'on veut pouvoir choisir ce nouveau noyau au démarrage. Pour cela, édite /etc/lilo.conf et rajouter un paragraphe qui ressemble à ça : image=/boot/vmlinuz-2.4.17> label=2417> read-only Si tu veux booter sur ce nouveau noyau par défault, il faut changer la ligne qui commence par "default=" en "default=2417". Une fois que tu as enregistré les modifications et que tu es sorti de ton éditeur de texte favori, ne pas oublier d'exécuter LILO pour qu'il écrive les changements sur le MBR : il suffit de taper lilo.
  7. Rebooter Soit tu fais Ctrl+Alt+Suppr, comme sous Windows, soit tu tapes reboot en root. Si le reboot sur le nouveau noyau se passe mal et que ton Linux se bloque au démarrage, il va falloir booter sur ton ancien noyau. Pour cela, Ctrl+Alt+Suppr, puis quand "LILO" s'affiche, appuie sur Majuscule, puis sur Tab pour avoir la liste des choix possibles. Tu ancien noyau s'appelle probablement "linux". Tapes "linux" puis Enter. Tu n'as plus qu'à recommencer... en t'aidant des dernières lignes qu'il t'as affiché avant de se bloquer au démarrage pour essayer de trouver l'origine du problème et de changer la configuration du noyau en conséquence. Bonne chance ! Si le reboot s'est bien passé... passe à la page suivante où on va tester ce nouveau noyau.


  Précédent   Index   Suivant