Le HOWTO du noyau de Linux (Kernel HOWTO) par Brian Ward, ward@blah.tu-graz.ac.at Version 0.80, 26 Mai 1997 (Adaptation francaise par Eric Dumas dumas@freenix.fr, 4 Juin 1997). Il s'agit d'un guide detaille sur la configuration du noyau, sa compi- lation et ses mises a jour pour les plates-formes x86. 11.. IInnttrroodduuccttiioonn Faut-il que vous lisiez ce document ? Oui, si vous avez les symptomes suivants : +o " Arg ! cette archive TrucBidule-46.5.6 necessite la version du noyau 1.1.193 et je n'ai que la version 1.0.9 ! " +o Il y a un pilote de peripherique dont vous avez besoin dans l'un des nouveaux noyaux. +o Vous n'avez aucune idee de la maniere dont il faut s'y prendre pour recompiler le noyau. +o "Est-ce que ce truc dans le fichier _R_E_A_D_M_E decrit toute la marche a suivre ?" +o Vous avez essaye, ca ne marche pas ! +o Vous devez donner un conseil a une personne qui a certains problemes. 11..11.. LLiisseezz cceeccii eenn pprreemmiieerr ((eennffiinn bboonn,, cc''eesstt uunn ccoonnsseeiill)) !! Certains exemples presentes dans ce document presupposent que vous possedez les programmes GNU tar, find et xargs. Ils sont assez standard, et ne devraient pas vous poser trop de probleme. On suppose egalement que vous connaissez la structure de votre systeme de fichiers. Si vous ne le savez pas, il est imperatif que vous gardiez une copie sur papier du resultat de l'execution de la commande mount (ou bien une copie du fichier /etc/fstab, si vous savez le lire). Cette information est importante, et ne change pas a moins que vous ne repartionniez votre disque, en ajoutiez un nouveau, reinstalliez votre systeme, ou quelque chose de similaire. La derniere version du noyau a l'heure a laquelle j'ecris ces mots est la 2.0.30, ce qui signifie que les references et les exemples donnes correspondent a cette version. Meme si j'ai essaye de faire en sorte que ce document soit aussi independant que possible des versions, le noyau est en perpetuel developpement, donc si vous recuperez une nouvelle version, il risque d'y avoir quelques differences. Cela ne devrait pas poser trop de problemes mais risque de semer un peu la confusion. Il existe deux versions des sources du noyau : une version dite "stable" et une version de developpement. Les version stables ont des numeros de version paires : 1.0.x, 1.2.x sont des versions stables... tout comme la 2.0. Ces noyaux sont consideres comme etant les plus stables et sans erreurs. Les noyaux de developpement (1.1.x, 1.3.x, etc) sont des noyaux de tets, pour les developpeurs, les testeurs... mais c'est noyaux peuvent etre tres bugues. Vous avez ete avertit. 11..22.. UUnn mmoott ssuurr llee ssttyyllee Un texte qui ressemble a celui-ci est soit un message qui apparait sur votre ecran, soit un fichier, ou soit quelque chose qui peut etre directement saisi, comme une commande, ou des options pour une commande (si vous possedez une version texte de ce document, il n'y a pas de difference), Les commandes et autre textes devant etre saisis sont frequemment quotes (` '), ce qui provoque le probleme classique de la ponctuation : si un tel signe apparait la fin d'un phrase entre quotes, les gens mettent souvent un `.' a la commande car le style americain indique de mettre le point a l'interieur des quotes. Meme si le bon sens est de retirer le point, bon nombre de personnes ne s'en souviennent pas, et donc je le mettrai a l'exterieur des quotes dans ces cas-la. Par exemple, j'ecrirai `make config', et non `make config.' 22.. QQuueellqquueess qquueessttiioonnss...... aavveecc lleeuurrss rreeppoonnsseess 22..11.. QQuueell eesstt llee rroollee dduu nnooyyaauu ?? Le noyau Unix joue le role d'un chef d'orchestre entre vos programmes et votre materiel. Premierement, il gere la memoire pour tous les programmes en cours d'execution (processus), et s'assure qu'ils occupent tous une part equitable (ou non) du temps processeur. En plus, il fournit une interface (simple a utiliser) aux programmes pour communiquer avec votre materiel (appels systeme). Le noyau a bien sur un role plus important que celui decrit, mais ces fonctions de bases sont les plus importantes a connaitre. 22..22.. PPoouurrqquuooii vvoouuddrraaiiss--jjee mmeettttrree aa jjoouurr mmoonn nnooyyaauu ?? Les nouveaux noyaux offrent plus de facilite pour communiquer avec de plus en plus de materiels (c'est-a-dire qu'ils gerent de plus en plus de peripheriques...), ils peuvent avoir une meilleure gestion des processus, tourner plus rapidement que les anciennes versions, etre plus stables et ils corrigent les erreurs des versions precedentes. Bon nombre de personnes mettent a jour leurs noyaux car ils veulent avoir les nouveaux pilotes de peripheriques et les corrections d'erreurs. 22..33.. QQuueell ggeennrree ddee mmaatteerriieell ssuuppppoorrtteenntt lleess nnoouuvveeaauuxx nnooyyaauuxx ?? Jetez un coup d'oeil sur le Hardware-HOWTO. Vous pouvez aussi regarder le fichier "config.in" dans les sources de LLiinnuuxx, ou juste les trouver lorsque vous essayez "make config", ce qui vous permet de voir tous les materiels supportes par le code source du noyau standard, mais pas tout ce que LLiinnuuxx supporte. En effet, beaucoup de peripheriques assez utiles (tels les peripheriques PCMCIA, et quelques lecteurs de cartouches) sont des modules chargeables maintenus et distribues separement. 22..44.. QQuueellllee vveerrssiioonn ddee ggcccc oouu ddee lliibbcc uuttiilliisseerr ?? Linus recommande une version de gcc dans le fichier README fournis avecle code source. Si vous ne possedez pas cette version, la documentation dans la version recommandee de gcc devrait vous indiquer si vous avez besoin de mettre a jour votre libc. Ce n'est pas une operation compliquee a realiser, mais il est important de suivre les instructions. 22..55.. QQuuee ssoonntt lleess mmoodduulleess cchhaarrggeeaabblleess ((llooaaddaabbllee mmoodduulleess)) ?? Ce sont des parties du noyau (pilotes de peripheriques generalement) qui ne sont pas compilees dans celui-ci. On peut les compiler separement, les inserer, les retirer du noyau a n'importe quel moment. En raison de cette souplesse, c'est devenu la methode preferee pour coder certaines caracteristiques du noyau. Bon nombre de pilotes de peripheriques tels que PCMCIA et les gestionnaires de cartouches QIC-80/40 sont des modules chargeables. 22..66.. DDee ccoommbbiieenn dd''eessppaaccee ddiissqquuee aaii--jjee bbeessooiinn ?? Cela depend de la configuration de votre systeme. Tout d'abord, le code source compresse de LLiinnuuxx etait de 6 pour la version 2.0. Vous voulez generalement le garder dans un coin apres l'avoir decompresse. Decompresse, cela fait environ 24 Mo. Mais ce n'est pas tout - vous aurez besoin de plus de place pour le compiler. Cela depend du nombre de peripheriques que vous avez configure dans le noyau. Par exemple, sur une de mes machines, j'ai les fonctionnalites reseau, le gestionnaire pour une 3Com 3C509, et trois gestionnaires de systemes de fichiers configures et cela prend environ 30 Mo. Sur un autre systeme, sans peripherique de reseau (mais toujours avec les fonctionnalites reseau) et une carte son, la place occupee est meme superieure. Comme en general un nouveau noyau est certain d'avoir un code source plus important que les precedents, prevoyez un grand espace disque pour le compiler surtout si vous avez beaucoup de materiel (et au prix du disque dur aujourd'hui, la meilleure aide que je peux vous donner en cas de manque de place disque et d'en acheter un autre). 22..77.. CCoommbbiieenn ddee tteemmppss ccaa pprreenndd ?? Pour beaucoup de gens, la reponse est : "C'est bien long !". La vitesse de votre machine et la memoire dont vous disposez determinent le temps de compilation, mais cela est un peu proportionnel a la configuration materielle que vous avez choisie pour le noyau. Sur un 486DX4/100 avec 16Mo de RAM, avec un noyau de la serie 1.2, avec cinq gestionnaires de systemes de fichiers differents, support reseau et le support pour les cartes son, cela prend environ 20 minutes. Sur un 386DX/40 (8 Mo RAM) avec une configuration similaire, cela prend presque 1 heure et demie ! Il est generalement recommande de se faire un petit cafe, regarder la television, faire la cuisine, ou tout ce que vous voudrez pour vous occuper pendant que votre machine compile le noyau. Vous pouvez connaitre quelqu'un avec une machine plus rapide qui puisse vous le compiler si votre machine est vraiment lente. 33.. CCoommmmeenntt rreeeelllleemmeenntt ccoonnffiigguurreerr llee nnooyyaauu ?? 33..11.. RReeccuuppeerreerr lleess ssoouurrcceess Vous pouvez recuperer les sources via ftp depuis ftp.funet.fi dans le repertoire /pub/Linux/PEOPLE/Linus, sur un miroir de ce site, ou d'autres sites. (NdT: en France, ftp.ibp.fr dans /pub/linux/kernel/sources). Le noyau est typiquement appele linux- x.y.z.tar.gz, ou x.y.z est le numero de la version. Les nouvelles versions (plus performantes ?) ainsi que les patches se trouvent dans des repertoires tels que "v1.1" et "v1.2". Le plus grand chiffre est la derniere version, et peut etre generalement consideree comme etant une version de tests, ce qui signifie que si jamais vous vous sentez mal a l'aise avec des version alpha ou beta, vous devriez vous cantonner au mise a jours officielles. Il est _f_o_r_t_e_m_e_n_t suggere d'utiliser un site miroir au lieu de ftp.funet.fi ! En voici une courte liste : USA : tsx-11.mit.edu:/pub/linux/sources/system USA : sunsite.unc.edu:/pub/Linux/kernel UK : sunsite.doc.ic.ac.uk:/pub/unix/Linux/sunsite.unc-mirror/kernel Autriche : ftp.univie.ac.at:/systems/linux/sunsite/kernel Allemagne : ftp.Germany.EU.net:/pub/os/Linux/Local.EUnet/Kernel/Linus Allemagne : sunsite.informatik.rwth-aachen.de:/pub/Linux/PEOPLE/Linus France : ftp.ibp.fr:/pub/linux/kernel/sources Australie: sunsite.anu.edu.au:/pub/linux/kernel En general, les miroirs du site sunsite.unc.edu sont des endroits tres recommandes. Le fichier /pub/Linux/MIRRORS contient la liste de tous les miroirs connus. Si vous n'avez pas d'acces ftp, une liste de systemes BBS possedant LLiinnuuxx est postee periodiquement dans comp.os.linux.announce. Essayez de mettre la main dessus ! Si vous cherchez des informations generales sur Linux et ses distributions, consultez le site http://www.linux.org. (NdT : pour la France, voir la liste postee dans le forum de discussion fr.comp.os.linux.annonces) 33..22.. IInnssttaalllleerr lleess ssoouurrcceess Passez en su (super utilisateur) ou bien logez-vous en tant que "root", et allez dans le repertoire /usr/src. Si vous avez deja installe les sources du noyau, il y aura toujours un repertoire appele "linux", contenant l'ensemble des sources du noyau. Si vous avez de la place disque et que vous voulez jouer la carte securite, il est preferable de conserver ce repertoire intact. Un systeme assez pratique consiste a renommer votre repertoire en fonction du numero de la version. La commande "uname -r" vous indiquera le numero de la version du noyau actuellement en fonction. Par exemple, si "uname -r" donne "1.0.9," vous pourrez deplacer votre repertoire (avec mv) "linux" en "linux-1.0.9". Si vous etes du genre temeraire, detruisez le repertoire. Dans n'importe quel cas, soyez sur qu'il n'y ait aucun repertoire "linux" dans /usr/src avant de decompresser et d'installer les sources. Dans /usr/src, installez les sources en faisant "tar zxpvf linux- x.y.z.tar.gz" (si vous avez uniquement un fichier .tar, sans de .gz a la fin,"tar xvf linux.x.y.z.tar" marchera sans probleme.). Vous verrez la liste des fichiers se derouler sous vos yeux. Lorsque c'est termine, il y aura un nouveau repertoire "linux". Allez dans LLiinnuuxx et jetez un coup d'oeil au fichier README. Il y a une section "INSTALLING the kernel". Suivez les intructions lorsque necessaire - prenez garde a ce que les liens soient en place et que les fichiers .o soient detruits, etc. 33..33.. CCoonnffiigguurreerr llee nnooyyaauu Note : il s'agit d'une repetition, clarification du paragraphe correspondant dans le fichier README de Linus. La commande "make config" lance un script qui va vous poser un certain nombre de questions. Il a besoin de bash, donc verifiez que vous possedez bien /bin/bash, /bin/sh, ou $BASH. Il existe un certain nombre d'autres possibilites autres que make config et il est possible que vous les trouviez plus simple a utiliser. Pour ceux qui utilisent X, vous pouvez essayer make xconfig si vous avez au prealable installe Tk (_c_l_i_c_k_-_o_-_r_a_m_a - Nat). make menuconfig est destine a ceux qui ont installe (n)curses et qui preferent utiliser un menu en mode texte. Ces interfaces ont un avantage : si vous vous trompez lors de la configuration, vous pouvez facilement corriger l'erreur sans avoir a tout relancer. Vous etes alors pret a repondre aux questions, la plupart du temps par "y" ou par "n". Certaines options non critiques ou evidentes ne seront pas decrites ici. Consultez le paragraphe "Autres options de configuration" pour une courte descriptions des options non detaillees ici. Dans la version 2.0, une option "?" est presente : elle permet d'obtenir une aide pour l'option desiree. Les commentaires sont surement les informations les plus a jour sur le gestionnaire. (NdT : les titres suivants correspondent aux questions qui vous sont posees. Une traduction francaise se trouve entre parentheses.) 33..33..11.. KKeerrnneell mmaatthh eemmuullaattiioonn ((EEmmuullaattiioonn dduu ccoopprroocceesssseeuurr AArriitthhmmeettiiqquuee)) Si vous ne possedez pas de coprocesseur arithmetique (autrement dit, vous ne disposez que d'un 386 ou d'un 486SX), repondez "y". Si au contraire, vous en avez un et que vous repondez "y", ce n'est pas grave : le coprocesseur sera utilise et l'emulation ignoree. La seule consequence est une taille superieure du noyau. On m'a dit que l'emulations du coprocesseur est lente, bien que cela n'ait rien a voir avec ce paragraphe, c'est un point qu'il faut tenir en compte surtout si vous trouvez que le systeme X Window est lent. 33..33..22.. NNoorrmmaall ((MMFFMM//RRLLLL)) ddiisskk aanndd IIDDEE ddiisskk//ccddrroomm ssuuppppoorrtt ((GGeessttiioonn SSttaannddaarrdd ddeess ddiissqquueess dduurrss)) Vous devez a peu pres toujours repondre oui a cette question. Cela signifie que le noyau pourra gerer les disques standards des PC comme IDE, que bon nombre de gens possedent. Ceci n'inclut pas les disques SCSI : ils sont selectionnables plus tard dans la configuration. Une question porte sur les gestionnaires de peripheriques "old disk- only" et "new IDE". Vous devez choisir l'un des deux. La principale difference est que le vieux gestionnaire de peripherique ne supporte qu'au plus deux disques sur une seule interface. Le nouveau gestionnaire gere une deuxieme interface IDE et les disques CD-ROM IDE/ATAPI , et il est plus gros de 4 Ko que l'ancien. Cela signifie qu'il est possible qu'il puisse avoir quelques bogues, mais il peut ameliorer les performances de votre disque, notamment si vous possedez du materiel recent (comme de l'EIDE). 33..33..33.. NNeettwwoorrkkiinngg ssuuppppoorrtt ((GGeessttiioonn dduu RReesseeaauu)) En principe, vous ne devriez repondre "y" que si votre machine se trouve sur un reseau tel qu'Internet ou si vous voulez utiliser SLIP, PPP, term, etc. pour communiquer avec un acces Internet externe. Toutefois, bon nombre de paquetages (tels que le systeme X Window) a besoin de ce support reseau meme si votre machine n'y est pas relie ; dans ce cas, repondez "y". Plus tard, on vous demandera si vous voulez avoir le support TCP/IP. De meme, repondez "y", a moins que vous ne soyez sur de ce que vous faites. 33..33..44.. LLiimmiitt mmeemmoorryy ttoo llooww 1166MMBB ((VVoouuss aavveezz mmooiinnss ddee 1166 MMoo)) Il y a quelques controleurs DMA bogues pour 386 qui, au dela de 16Mo de memoire, ne peuvent rien adresser correctement. Dans ce cas assez rare, repondez "y". 33..33..55.. SSyysstteemm VV IIPPCC L'une des meilleures definition des IPC (Communication inter- processus) se trouve dans l'index du livre de Perl. Cela n'est pas surprenant : certains deveoppeurs Perl l'utilisent pour permettre aux processus de communiquer entre eux, comme d'autres paquetages(comme par exemple DOOM), donc ce n'est pas vraiment une bonne idee de repondre "n" a cette question a moins que vous ne sachiez exactement ce que vous faites. 33..33..66.. PPrroocceessssoorr ttyyppee ((338866,, 448866,, PPeennttiiuumm,, PPPPrroo)) Dans les anciens noyaux, il s'agissait de l'option Use -m486 flag for 486-specific optimizations. Cette option permettait d'optimiser certaines optimisations pour un type de processeur, le noyau fonctionnant normalement avec les autres processeurs. Le noyau genere avait toutefois une taille legerement superieure. Dans les nouveaux noyaux, cette difference de taille n'est plus d'actualite donc vous pouvez indiquer le processeur que vous allez utiliser avec le nouveau noyau. Un noyau "386" fonctionnera avec toutes les machines. 33..33..77.. SSCCSSII ssuuppppoorrtt ((GGeessttiioonn SSCCSSII)) Si vous avez un peripherique SCSI, repondez "y". On vous demandera alors de plus amples renseignements sur la gestion des CD-ROM, des disques, et de quel type de controleur SCSI vous possedez. Consultez SCSI-HOWTO pour plus de details. 33..33..88.. NNeettwwoorrkk ddeevviiccee ssuuppppoorrtt ((GGeessttiioonn ddee ppeerriipphheerriiqquueess rreesseeaauu)) Si vous avez une carte reseau, ou si vous voulez utiliser SLIP, PPP, ou un port parallele, repondez "y" . Le script de configuration vous demandera alors quel type de carte vous possedez et quels protocoles vous voulez inclure. 33..33..99.. FFiilleessyysstteemmss ((SSyysstteemmeess ddee ggeessttiioonn ddee ffiicchhiieerrss)) On vous demandera si vous desirez gerer un certain nombre de gestionnaires de fichiers. Il y a : Standard (minix) - Les distributions ne creent pas de gestionnaires de fichiers de type minix, et bon nombre de personnes ne s'en servent pas, mais cela peut etre une bonne idee de le configurer. Quelques programmes de "sauvetage de disques" l'utilisent, et encore aujourd'hui, un bon nombre de disquettes risquent avoir ce systeme de fichiers, puisque que ce systeme est optimal pour les disquettes. Extended fs - C'etait la premiere version du gestionnaire de fichiers etendu, qui n'est plus utilisee. Second extended - Tres largement utilise dans les nouvelles distributions. Vous avez surement ce systeme sur votre machine. (NdT : et puis c'est un Francais qui l'a fait alors... !) xiafs filesystem - A une epoque, il etait assez utilise mais maintenant, je ne connais personne qui l'utilise. msdos - Si vous voulez utiliser les partitions de votre disque MS-DOS, ou monter des disquettes au format MS-DOS, repondez "y". umsdos - C'est une extension du gestionnaire de fichiers MS-DOS, avec des caracteristiques semblables a celles d'Unix, telles la longueur des noms. Ce n'est pas tres utile pour des gens (comme moi) qui n'utilisent pas MS-DOS. /proc - Un des systemes de fichiers les plus puissants (idee effrontement chipee aux Laboratoires Bell, je pense). Ca n'a rien a voir avec vos partitions disques, mais c'est une interface de gestionnaire de fichiers avec le noyau et les processus. Un grand nombre d'outils de visualisation de processus (comme "ps" l'utilisent. Si vous l'avez installe, essayez "cat /proc/meminfo" ou "cat /proc/devices". Quelques shells (comme rc) utilisent /proc/self/fd (connu comme /dev/fd sur d'autres systemes) pour les entrees/sorties. Vous devriez repondre "y" a ceci : de nombreux programmes standard LLiinnuuxx en ont besoin. NFS - Si vous etes en reseau et que vous voulez partager des fichiers, repondez "y". ISO9660 - Format rencontre sur de nombreux CD-ROM. Si vous possedez un CD-ROM et que vous comptez vous en servir sous Linux, repondez "y". OS/2 HPFS - A l'heure ou j'ecris ce document, c'est un gestionnaire de fichiers en lecture seule pour OS/2 HPFS. System V et Coherent - pour les partitions de type System V et les systemes Coherent (il y a d'autres variantes pour Unix PC). 33..33..99..11.. MMaaiiss jjee nnee ssaaiiss ppaass qquueellss ssoonntt lleess ggeessttiioonnnnaaiirreess ddee ffiicchhiieerrss ddoonntt jj''aaii bbeessooiinn !! Bon, tapez "mount", cela va vous afficher un truc comme ca : blah# mount /dev/hda1 on / type ext2 (defaults) /dev/hda3 on /usr type ext2 (defaults) none on /proc type proc (defaults) /dev/fd0 on /mnt type msdos (defaults) Observez chacune des lignes. Le mot a cote de "type" est le nom du gestionnaire de fichier. Dans cet exemple, mes partitions / et /usr sont du type ext2fs, j'utilise /proc, et il y a un lecteur de disquettes monte en utilisant le gestionnaire de fichier MS-DOS (beuurrrk !). Essayez "cat /proc/filesystems" si vous avez /proc. Cela vous donnera la liste des gestionnaire de fichiers que votre noyau gere. La configuration de certains systemes de fichiers rarement utilises et qui ne sont pas absolument necessaire peuvent augmenter la taille du noyau. Voir la section sur les modules chargeables pour resoudre ce probleme, ainsi que la section sur les gros noyau. 33..33..1100.. CChhaarraacctteerr ddeevviicceess ((PPeerriipphheerriiqquueess ccaarraacctteerreess)) Vous trouverez ici les peripheriques pour gerer vos imprimantes, souris bus, souris PS/2 (beaucoup de portables utilisent une souris constructeur de type PS/2), quelques gestionnaires de cassettes, et d'autres peripheriques de type "caractere". Repondez "y" quand vous le jugez bon. Note : "Selection" est un programme qui vous permet d'utiliser la souris a l'exterieur de X-Windows pour effectuer des operations de copier-coller entre les consoles virtuelles. C'est assez utile si vous avez une souris serie, car cela s'interface bien avec X-Windows, mais vous devrez faire quelques trucs pour que cela fonctionne avec les autres. Le support Selection a ete une option de configuration pendant longtemps mais c'est desormais un standard. Note 2 : "Selection" est desormais considere comme obsolete. "gpm" est le nom du nouveau programme. Il peut faire plus de chose, comme gerer plus de souris, etc. 33..33..1111.. SSoouunndd ccaarrdd ((CCaarrttee ssoonnss)) Si aimez entendre biff aboyer, repondez "y", et plus tard, un autre programme de configuration va se compiler puis vous demander ce que vous desirez installer. (Un mot sur la configuration des cartes sons : lorsqu'il vous demande si vous voulez installer la version entiere du gestionnaire, vous pouvez repondre `n' et donc economiser de la memoire en inserant uniquement les caracteristiques dont vous avez besoin.). Il est grandement recommande de consulter le Sound-Howto pour plus de detail consernant la gestion des cartes sons. 33..33..1122.. AAuuttrreess ooppttiioonnss ddee ccoonnffiigguurraattiioonn Toutes les options de configuration ne sont pas detaillees dans ce document car elles changent trop souvent ou bien sont reellement evidentes (par exemple, le support de la carte 3Com 3C509 permet la compilation du gestionnaire.). Il existe une liste assez complete de ces options (plus une maniere de les inserer dans le script Configure) mise a jour par Axel Boldt (axel@uni-paderborn.de) sur l'URL suivante : http://math-www.uni-paderborn.de/~axel/config_help.html ou bien via ftp anonyme : ftp://sunsite.unc.edu/pub/Linux/kernel/config/krnl_cnfg_hlp.x.yz.tgz ou x.yz est le numero de la version. Pour les noyaux plus recentts (2.0.x et superieurs), ce fichier a ete integre dans les sources. 33..33..1133.. KKeerrnneell hhaacckkiinngg Extrait du README de Linus : La configuration "kernel hacking" provoque generalement un noyau plus gros ou plus lent (ou les deux), et peut meme rendre le noyau moins stable en configurant quelques routines pour essayer de chercher les defauts du code, pour trouver les problemes du noyau (kmalloc()). Donc, vous devrez repondre "n" a cette question si vous creez un noyau pour un systeme sur. 33..44.. GGaarrccoonn,, llaa ssuuiittee !! ((LLee MMaakkeeffiillee)) Apres avoir fait make config, un message vous indique que le noyau est configure, et qu'il faut "regarder le Makefile general pour des configurations supplementaires" , etc. Donc, jetez un coup d'oeil au Makefile. Vous ne changerez probablement rien, mais ca ne peut pas vous faire de mal ! Vous pouvez egalement changer ici les options en rapport avec la commande "rdev", une fois que le noyau est pret. 44.. CCoommppiilleerr llee nnooyyaauu 44..11.. NNeettttooyyeerr eett cchheerrcchheerr lleess ddeeppeennddaanncceess Lorsque le script de configuration va se terminer, il vous demandera de faire un "make dep" et un "make clean". C'est-a-dire de nettoyer les repertoire et d'effectuer la creation des dependances, pour les fichiers d'include et ce genre de choses. Pour cela, faites "make dep". Cela ne prend pas trop de temps a moins que vous n'ayez une machine tres lente. Pour les anciennes versions, lorsque c'est termine faites un "make clean". Cela detruit tous les fichiers objets et d'autre fichiers que le noyau compile. _N_'_o_u_b_l_i_e_z _p_a_s _c_e_t_t_e _e_t_a_p_e. 44..22.. LLaa ccoommppiillaattiioonn Apres avoir cherche les dependances et avoir nettoye l'arborescence, vous pouvez lancer la compilation par "make zImage" ou "make zdisk" (C'est cette partie qui prend du temps). "make zImage" va compiler le noyau, et laisser le fichier dans le repertoire arch/i386/boot. Le noyau s'appelle "zImage". C'est le nouveau noyau compresse. "make zdisk" fait la meme chose, mais copie le noyau sur une disquette que vous aurez surement inseree dans le lecteur "A:". "zdisk" est assez commode pour tester de nouveaux noyaux ; s'il ne fonctionne pas du tout, enlevez juste la disquette et relancez la machine avec un ancien noyau. C'est egalement une methode pratique si vous avez detruit accidentellement votre noyau. Vous pouvez egalement vous en servir pour installer de nouveaux systemes, en copiant directement le contenu d'un disque sur un autre. Tous les noyaux assez recents sont compresses, comme l'indique le "z" en debut des noms. Un noyau compresse est automatiquement decompacte lors de l'execution. 44..33.. LLeess aauuttrreess ooppttiioonnss dduu ""mmaakkee"" "make mrproper" est un "make clean" plus puissant. Cela est parfois necessaire, vous devriez le faire a chaque patch. Regardez la section sur les modules a propos du "make modules". 44..44.. IInnssttaalllleerr llee nnooyyaauu Une fois que vous avez un nouveau noyau qui fonctionne comme vous le voulez, il est grand temps de l'installer. Un grand nombre de personnes utilisent LILO (LInux LOader). "make zlilo" installera votre noyau, lancera LILO, et laissera votre machine prete a rebooter, mais seulement si votre machine est configuree de cette maniere sur votre machine : le noyau s'appelle /vmlinuz, lilo se trouve dans /sbin, et votre fichier de configuration pour LILO (/etc/lilo.conf) correspond a ces donnees. Autrement, vous devrez utiliser LILO directement. C'est un produit assez facile a installer, mais qui peut derouter en raison de son fichier de configuration. Regardez le fichier de configuration (soit /etc/lilo/config pour les versions les plus anciennes, soit /etc/lilo.conf pour les nouvelles), et regardez son contenu. Le fichier de configuration doit ressembler a cela : image = /vmlinux label = Linux root = /dev/hda1 ... La ligne "image =" sert a indiquer le nom du noyau utilise. Beaucoup de gens utilisent /vmlinuz. "label" est utilise par LILO pour indiquer sur quel noyau ou sur quel systeme d'exploitation vous allez booter (nom logique), et "root" est la racine de ce systeme d'expoitation. Faites une sauvegarde de votre vieux noyau (quel que soit son nom), et copiez le nouveau noyau (zImage) a sa place : "cp zImage /vmlinuz" si vous utilisez "/vmlinuz". Puis relancez lilo. Sur les systemes recents, vous pouvez uniquement lancer "lilo", mais sur de plus anciens, vous devez faire un /etc/lilo/install ou /etc/lilo/lilo -C /etc/lilo/config. Si vous desirez en savoir plus sur la configuration de LILO, ou si vous voulez avoir LILO, recuperez la derniere version sur votre site FTP favori et suivez les instructions. Pour booter sur l'un de vos anciens noyaux situes sur votre disque dur (une autre maniere de prevenir un probleme du a un nouveau noyau), copiez les lignes suivantes "image = xxx" a la fin du fichier de configuration LILO, et changez "image = xxx" par "image = yyy", ou "yyy" est le chemin complet du noyau de secours. Puis changez "label = zzz" en "label = linux-sauvegarde" et relancez lilo. Vous devrez surement rajouter une ligne dans le fichier de configuration indiquant "delay=x", ou x est le temps en dixieme de secondes qui indique a LILO le temps qu'il doit attendre avant d'amorcer la machine. Vous pouvez l'interrompre (avec la touche shift par exemple), et taper le mot clef de l'image du noyau de sauvegarde (au cas ou un probleme se produit). 55.. MMeettttrree aa jjoouurr llee nnooyyaauu 55..11.. AApppplliiqquueerr uunn ppaattcchh Les nouvelles versions du noyau sont distribuees sous la forme de patches. Par exemple, si vous possedez la version 1.1.45, et que vous remarquez qu'il existe un "patch46.gz", cela signifie que vous pouvez passer a la version 1.1.46 en appliquant ce patch. Vous devriez faire avant une sauvegarde de votre arborescence des sources de LLiinnuuxx ("make clean" puis "cd /usr/src; tar zcf old-tree.tar.gz linux" va produire une archive compressee). Poursuivons avec cet exemple et supposons que vous ayez mis le fichier "patch46.gz" dans /usr/src. Allez dans /usr/src et faites un "zcat patch46.gz | patch -p0" (ou "patch -p0 < patch46" si le patch est compresse). Vous verrez alors une liste de messages vous indiquant les essais de modifications. Cela marche ou pas. (En principe oui !). Generalement, cela va trop vite pour les lire, et on ne sait pas trop si ca a marche. Dans ce cas, vous devriez ajouter l'option -s a patch, ce qui lui indique qu'il ne doit afficher que les erreurs. (Vous n'avez pas grand chose a faire des "hehe, mon ordinateur est en train de faire des quelque chose...!"). Pour regarder ce qui se passe, allez dans /usr/src/linux et cherchez les fichiers ayant pour extension les fichiers rejetes avec # pour extension. Vous pouvez utiliser "find" pour les trouver : find . -name '*.rej' -print vous en donnera la liste avec le chemin pour y acceder. Si tout a marche, faites un "make clean", "config," et "dep" comme decrit dans les sections 3 et 4. Il y a quelques options pour la commande patch. Comme indique ci- dessus, patch -s supprime tous les messages sauf les erreurs. Si vous stockez les sources de votre noyau dans un autre repertoire que /usr/src/linux, un patch -p1 dans ce repertoire fera les choses proprement. Les autres options sont bien documentees dans les pages de manuel. 55..22.. SSii qquueellqquuee cchhoossee nnee ffoonnccttiioonnnnee ppaass (Note : cette section traite plutot des noyaux assez anciens) Le probleme le plus frequent qui se presente est lorsqu'un patch modifie le fichier "config.in". Dans ce cas, ca ne marche pas tres bien, car vous avez change les options pour mieux coller a votre machine. En principe, ca ne devrait plus trop se produire, mais avec les anciennes versions... Pour resoudre ce probleme, jetez un coup d'oeil au fichier config.in.rej et regardez son contenu. Le changement sera indique par "+" et "-" au debut d'une ligne. Regardez ces lignes et retenez si elles sont marquees "y" ou "n". Maintenant, editez config.in, et changez les "y" en "n" et les "n" en "y" lorsque cela est necessaire. Faites un patch -p0 < config.in.rej et si cela fonctionne, alors vous pouvez continuer avec la configura- tion et la compilation. Le fichier config.in.rej restera, mais vous pouvez le detruire. Si vous avez d'autres problemes, vous avez du installer un patch defectueux. Si la commande patch indique "previously applied patch detected: Assume -R?", vous etes probablement en train d'appliquer un patch deja applique. Si vous repondez "y", cela risque detruire votre source (chose qui peut ne pas etre une mauvaise idee dans un premier temps...). Pour revenir en arriere (depatcher), faites un "patch -R" sur le patch original. La meilleure chose a faire lorsqu'un patch detruit tout, est de repartir d'un noyau initial tout neuf ! (par exemple, a partir des fichiers linux-x.y.z.tar.gz). 55..33.. CCoommmmeenntt ssee ddeebbaarraasssseerr ddeess ffiicchhiieerrss ..oorriigg ?? Apres avoir applique quelques patches, les fichiers .orig vont commencer a s'empiler. Par exemple, j'en etais a la version 1.1.51 et la derniere fois que j'avais fait le menage, c'etait avec la version 1.1.48 (je crois...). Detruire les fichiers .orig a permis de recuperer pres d'un Mega octets. find . -name '*.orig' -exec rm -f {} ';' fera cela pour vous. Quelques versions de patch qui utilisent # pour les rejets utilisent un tilde a la place de .orig. Il y a d'autres manieres (meilleures ?) pour se debarrasser des fichiers .orig qui utilisent le programme GNU xargs : find . -name '*.orig' | xargs rm ou la methode sure mais un peu plus verbeuse : find . -name '*.orig' -print0 | xargs --null rm -- 55..44.. AAuuttrreess ppaattcchheess Il y a toujours d'autres patches (je les appellerais "non-standards") que ceux que distribue Linus. Si vous les appliquez, les patches Linus risquent de ne plus marcher correctement et vous serez oblige soit de les enlever, soit d'adapter les patches. C'est generalement un travail assez penible pour les novices, aussi revenir aux anciens sources avant d'appliquer les patches de LLiinnuuxx semble etre une bonne solution. Apres, vous pouvez regarder si les patches non standards fonctionnent. S'ils ne fonctionnent pas, soit revenez a l'ancienne version, soit essayez de modifier le patch pour le faire fonctionner, ou alors attendez qu'un nouveau patch arrive. Quelle est l'utilite des patches qui ne trouvent pas dans les distributions standards ? Vous le saurez en ecoutant les autres. J'ai l'habitude d'utiliser le patch "noblink" car j'ai horreur des curseurs qui clignotent (Ce patch est (ou bien etait) mis a jour frequemment pour les nouveaux noyaux). Avec les gestionnaires de peripheriques etant de plus developpes sous la forme de modules chargeables, le terme patch "non standards" a de moins en moins de signification. 66.. PPaaqquueettaaggeess ssuupppplleemmeennttaaiirreess Votre noyau de LLiinnuuxx a bon nombre de caracteristiques qui ne sont pas expliquees dans le noyau lui-meme ; elles sont typiquement utilisees par des paquetages externes. Une liste des plus utiles est donnee ici. 66..11.. kkbbdd La console de LLiinnuuxx possede un bon nombre de caracteristiques. Elle peut changer les polices de caracteres, remapper, permuter les modes videos (dans les noyaux les plus recents), etc. Le package kbd possede des programmes qui permettent a l'utilisateur de faire tout cela, plus une tonne de fontes et de types de claviers. (NdT : fr.map pour le clavier francais). 66..22.. uuttiill--lliinnuuxx Rik Faith (faith@cs.unc.edu) met a jour une grande quantite d'outils LLiinnuuxx qui sont appeles util-linux. Disponibles via ftp anonyme sur sunsite.unc.edu dans /pub/Linux/system/misc, il contient des programmes tels que setterm, rdev, et ctrlaltdel, qui sont dependants du noyau. Comme le dit Rik , _n_'_i_n_s_t_a_l_l_e_z _p_a_s _s_a_n_s _r_e_f_l_e_c_h_i_r, vous n'avez pas besoin de tout installer dans la distribution, et cela pourrait vous causer de graves ennuis. 66..33.. hhddppaarrmm Plusieurs packages sont livres avec le noyau ainsi que des programmes. Les patches et les programmes pour optimiser et jouer avec vos disques sont distribues separement. 66..44.. ggppmm gpm est un gestionnaire de souris. Ce programme vous permet d'effectuer du couper-coller en mode texte entre les fenetres virtuelles ainsi que d'autres operations avec un grand nombre de types de souris. 77.. QQuueellqquueess ppiieeggeess 77..11.. mmaakkee cclleeaann Si votre noyau a un comportement surnaturel (ca m'est arrive !), il y a des chances pour que vous ayez oublie de faire un "make clean". Les symptomes peuvent etre, un effondrement de votre systeme, des problemes d'entrees sorties etranges, une chute des performances, des reboot aleatoires,... Verifiez que avez egalement fait un make dep. 77..22.. NNooyyaauuxx eennoorrmmeess oouu lleennttss Si votre noyau consomme beaucoup de memoire, ou s'il est reellement gros, ou bien s'il faut une eternite pour le compiler meme lorsque vous utilisez votre nouveau 786DX6/440, c'est que vous avez configure un bon nombre de peripheriques dont vous n'avez pas besoin. Si vous ne les utilisez pas, ne les configurez pas car cela prend beaucoup de place en memoire. Si vous avez moins de 16 Mo de memoire, repondez bien y a la question "limit memory to low 16MB". Cela ameliore assez bien les performances (surtout sur un systeme possedant 4Mo). Le symptome le plus visible est l'augmentation sensible du fonctionnement du swap. Si votre disque fait beaucoup de bruit, et qu'il ne s'agit pas d'un de ce vieux disques Fujitsu Eagles qui fait le bruit d'un avion lors de son atterissage lorsque vous l'eteignez, jetez un coup d'oeil a votre configuration. Vous pouvez calculer la taille memoire que le noyau utilise en prenant la memoire totale de votre machine, et en soustrayant la valeur de la memoire totale ("total mem") dans /proc/meminfo ou bien avec la commande "free". Vous pouvez trouver ces renseignement avec la commande "dmesg" (ou bien en regardant le fichier log du noyau, lorsqu'il existe sur votre systeme).C'est une ligne de ce genre : Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k data) Mon 386 (qui a ete volontairement mal configure) indique : Memory: 7000k/8192k available (496k kernel code, 384k reserved, 312k data) Si malgre tout vous avez un noyau trop gros, faites un make bzimage. Vous devrez toutefois avoir installe une version recente de LILO. 77..33.. LLee nnooyyaauu nnee ccoommppiillee ppaass Si cela ne compile pas, alors le patch a surement echoue, ou bien vous possedez des sources corrompus. Votre version de gcc peut egalement ne pas etre correcte. Soyez sur que les liens que Linus decrit dans le fichier README sont corrects. En general, si un noyau ne compile pas, c'est qu'un truc ne tourne pas rond, et il est plus que probable que certains outils doivent etre reinstalles. Ou peut-etre vous etes en train de compiler un noyau 1.2.x avec un compilateur ELF (gcc 2.6.3 et superieur). Si vous obtenez un message du genre so-and-so undefined pendant la compilation, il y a des chances que cela soit ce probleme. La solution est tres simple. Ajoutez ces lignes au debut de votre fichier arch/i386/Makefile: AS=/usr/i486-linuxaout/bin/as LD=/usr/i486-linuxaout/bin/ld -m i386linux CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include Puis, relancez make dep et zImage. Dans des cas relativement rares, gcc peut echouer en raison de problemes de materiel. Le message d'erreur ressemble a un truc assez mysterieux "xxx exited with signal 15". Je n'en n'aurais probablement pas parle si cela ne m'etais arrive une fois. J'avais un cache memoire deffectueux et le compilateur avait un resultat plutot aleatoire. Essayez dans un premier de reinstaller gcc si vous avez des probmlemes. Vous devriez vous mefier si votre noyaux compile tres bien avec les caches externes vides, une memoire reduite, etc. Cela semble gener certaines personnes lorsque je met en doute leur materiel. Je ne le fais pas expres. Il existe une FAQ dediee a ce sujet : http://www.bitwizard.nl/sig11/. 77..44.. LLaa nnoouuvveellllee vveerrssiioonn dduu nnooyyaauu nnee bboooott pplluuss !! Soit LILO ne fonctionne pas, soit il n'est pas configure correctement. Une fois, un probleme dans le fichier de config m'a pose pas mal de soucis : j'avais mis "boot = /dev/hda1" a la place de "boot = /dev/hda" (cela peut sembler ennuyant a premiere vue, mais une fois que vous avez un fichier de configuration qui fonctionne, vous ne devez pas avoir besoin d'y retoucher). 77..55.. VVoouuss aavveezz oouubblliiee ddee llaanncceerr LLIILLOO,, oouu bbiieenn vvoottrree ssyysstteemmee nnee bboooottee pplluuss dduu ttoouutt Argh ! La meilleure chose a faire est de booter a partir d'une disquette et de preparer une nouvelle disquette de boot ("make zdisk" fait cela tres bien). Vous avez besoin de savoir ou votre partition racine (/) se trouve et quel est son type (ext2fs, minix, etc). Dans l'exemple ci-dessous, vous aurez egalement besoin de connaitre la partition des sources du noyau (/usr/src/linux), et ou il est montee. Dans cet exemple,la racine / est /dev/hda1, la partition qui supporte /usr/src/linux est /dev/hda3, normalement montee sur /usr. Ils sont tous deux des systemes de type ext2fs. L'image du noyau se trouve dans /usr/src/linux et elle s'appelle zImage. L'idee est que s'il existe un noyau qui fonctionne dans /usr/src/linux et qui s'appelle zImage, il est alors possible de l'utiliser pour la nouvelle disquette. Une autre alternative, qui peut marcher ou pas est presentee apres cet exemple (cela depend des systemes). En premier, bootez a partir d'une disquette d'installation (boot/root) ou d'une disquette de secours. Ensuite, montez la partition ou se trouve le noyau en etat de marche. mkdir /mnt mount -t ext2 /dev/hda3 /mnt Si mkdir vous annonce que le repertoire existe, ignorez le message. Maintenant, allez dans le repertoire ou se trouve le noyau en etat de marche Notez que /mnt + /usr/src/linux/arch/i386/boot - /usr = /mnt/src/linux/arch/i386/boot Inserez une disquette formatee dans le lecteur A: (verifiez qu'il ne s'agit pas de la disquette boot ou root !), faites une copie de l'image sur le disque et configurez votre partition racine : cd /mnt/src/linux/arch/i386/boot dd if=zImage of=/dev/fd0 rdev /dev/fd0 /dev/hda1 Allez a la racine /, et demontez la partition /usr : cd / umount /mnt Maintenant, vous devriez etre capables de rebooter votre systeme normalement a partir de cette disquette. N'oubliez pas de lancer lilo avant de rebooter ! Comme mentionne ci-dessus, il y a une autre maniere tres pratique. S'il vous arrive d'avoir un noyau fonctionnant dans / (/vmlinuz par exemple), on peut s'en servir. Supposons que vous remplissiez les conditions ci-dessus, et que votre noyau s'appelle /vmlinuz, faites juste ceci : changez /dev/hda3 en /dev/hda1 (la partition /), /mnt/src/linux en /mnt, et if=zImage en if=vmlinuz. La petite note expliquant comment aller dans /mnt/src/linux peut etre oubliee. Utiliser LILO avec de gros disques (avec un nombre de cyclindres superieur a 1024) peut poser des probleme. Consultez le mini-Howto LILO ou d'autre documentation a ce sujet. 77..66.. IIll mmee ddiitt ""wwaarrnniinngg:: bbddfflluusshh nnoott rruunnnniinngg"" Cela peut etre un probleme assez grave. Avec les noyaux ayant une version superieure a 1.0 (je n'arrive pas a me souvenir laquelle exactement, mais c'etait aux alentours du 20 Avril 1994), un programme appele "update" qui vide periodiquement les buffers du gestionnaire de fichiers a ete ameliore. Recuperez les sources de "bdflush" (vous pouvez les recuperer la ou vous avez trouve votre noyau), et compilez- le (il vaut mieux fonctionner avec un ancien noyau pendant la compilation et pendant l'installation). Il s'installera tout seul comme "update" et le systeme devrait fonctionner correctement apres cela. 77..77.. IIll mm''iinnddiiqquuee qquu''iill nnee ttrroouuvvee ppaass cceerrttaaiinnss ssyymmbboolleess eett iill nn''aarrrriivvee ppaass aa ccoommppiilleerr Vous possedez probablement un compilateur ELF (gcc et superieur) et les sources du noyau 1.2.x. La correction a apporter et d'ajouter les lignes suivantes au debut du fichier arch/i386/Makefile: AS=/usr/i486-linuxaout/bin/as LD=/usr/i486-linuxaout/bin/ld -m i386linux CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include Cela compilera un noyau 1.2.x avec les bibliotheques a.out. 77..88.. JJee nn''aarrrriivvee ppaass aa ffaaiirree mmaarrcchhee mmoonn CCDD--RROOMMMM IIDDEE//AATTAAPPII CCDD--RROOMM Aussi etrange que cela puisse paraitre, beaucoup de gens n'arrivent pas a faire fonctionner leurs disques ATAPI, tout simplement parce qu'il y a un bon nombre de choses qui ne fonctionnent pas. Si votre CD-ROM est le seul disque d'une interface IDE particuliere il doit etre configure pour etant "maitre" ou "esclave". C'est l'erreur la plus frequemment rencontree. Creative Labs (par exemple) a mis des interfaces IDE sur leurs cartes sons. Toutefois, cela pose un certain probleme car certaines personnes ne possedent qu'une seule interface mais beaucoup ont deux interfaces IDE sur leur carte mere (IRQ15 generalement), donc une pratique commune est de mettre la troisieme interface IDE soundblaster a l'IRQ11. Cela pose un probleme avec Linux car les versions 1.2.x ne supportent pas une troisieme interface IDE (cela est gere avec les versions 1.3.x mais ce sont des versions de developpement, et la troisieme interface n'est pas detectee automatiquement). Pour resoudre ce probleme, vous avez plusieurs choix. Si avez deja un deuxieme port IDE, il y a des chances pour que vous ne l'utilisiez pas ou qu'il n'ait pas deux peripheriques connectes. Desactivez l'interface ATAPI de la carte son et connectez le disque sur votre seconde interface. Si vous n'avez pas une seconde interface, l'interface IDE de la carte son est normalement sur l'IRQ 15. Cela devrait fonctionner. Si pour certaines raisons, vous devez reellement utiliser la "troisieme" interface, utilisez un noyau 1.3.x (par exemple 1.3.57), et lisez drivers/block/README.ide. Il y a beaucoup plus d'information. 77..99.. LLee nnooyyaauu mmee ddiitt ddeess iinnssaanniitteess aa pprrooppooss ddee rreeqquueetteess oobbssoolleetteess !! Recuperez une nouvelle version du progamme route ainsi que tout autre programme effectuant le meme genre de manipulations : /usr/include/linux/route.h (qui est actuellement un fichier dans /usr/src/linux) a change. 77..1100.. LLee FFiirreewwaallll nnee ffoonnccttiioonnnnee ppaass ddaannss llaa vveerrssiioonn 11..22..00 Mettez a jour a la version 1.2.1. 77..1111.. CCee nn''eesstt ppaass uunnee iimmaaggee nnooyyaauu ccoommpprreesssseeee !! N'utilisez pas le fichier vmlinux cree dans /usr/src/linux comme image de boot : [..]/arch/i386/boot/zImage est la bonne. 77..1122.. PPrroobblleemmeess aavveecc llaa ccoonnssoollee aapprreess mmiissee aa jjoouurr aa llaa vveerrssiioonn 11..33..xx Changez le mot dumb en linux dans l'entree console du fichier /etc/termcap. Vous devrez egalement le faire dans le fichier terminfi. 77..1133.. LLee nnooyyaauu nnee sseemmbbllee ppaass ppoouuvvooiirr ccoommppiilleerr aapprreess uunnee mmiissee aa jjoouurr Le noyau LLiinnuuxx contient un certain nombre de fichiers includes (les fichiers se terminant par .h) qui se trouvent dans le repertoire /usr/include. Ils sont references comme cela (ou xyzzy.h doit etre dans /usr/include/linux) : #include Normalement, il y a un lien appele linux dans /usr/include sur le repertoire include/linux de votre repertoire source LLiinnuuxx (/src/linux/include/linux dans un systeme standard). Si ce lien n'existe pas, ou bien pointe au mauvais endroit, bon nombre de pro- grammes ne compileront pas. Si vous decidez que les sources du noyau prennent trop de place sur votre disque et que vous les detruisez, cela sera un probleme. Un autre probleme qui peut arriver, c'est avec les permissions d'acces aux fichiers. Si votre root a un umask qui n'autorise pas les autres utilisateurs de voir ses fichiers par defaut, et que vous desarchiviez les sources du noyau avec l'option p (conserve le mode), les utilisateurs ne pourront pas utiliser le com- pilateur C. Vous devrez alors utiliser la commande chmod pour resoudre le probleme. Il est plus facile de resoudre ce probleme en reinstal- lant les fichiers includes. Vous pouvez proceder de la meme maniere que lors de l'installation des sources au debut, en ajoutant un argu- ment : blah# tar zxvpf linux.x.y.z.tar.gz linux/include Notez que "make config" va recreer le lien /usr/src/linux s'il n'existe pas. 77..1144.. IInnccrreeaassiinngg lliimmiittss Les quelques commandes qui suivent peuvent etre assez utiles a ceux qui se demandent comment augmenter certaines limites logicielles imposees par le noyau : echo 4096 > /proc/sys/kernel/file-max echo 12288 > /proc/sys/kernel/inode-max echo 300 400 500 > /proc/sys/vm/freepages 88.. NNoottee ccoonncceerrnnaanntt llaa mmiissee aa jjoouurr ppoouurr lleess nnooyyaauuxx 22..00 Les noyaux 2.0.x ont introduits une certaine quantite de modifications dans l'installation du noyau. Le fichier Documentation/Changes situe dans l'arborescence des sources contient un certain nombre d'informations que vous devez regarder lorsque vous effectuez la mise a jour de votre systeme. Il est fort probable que vous ayez a mettre a jour plusieurs paquetages tels que gcc, libc et SysVInit ainsi que plusieurs fichiers systemes. Donc, ne paniquez pas ! 99.. MMoodduulleess Les modules chargeables du moyau peuvent economiser de la memoire et sont faciles a configurer. La portee des modules a augmente jusqu'a inclure les filesystems, les gestionnaires de cartes ethernet, les lecteurs de cartouches, les imprimantes, etc. 99..11.. IInnssttaalllleerr lleess ffoonnccttiioonnnnaalliitteess mmoodduulleess Ces fonctionnalites sont disponibles sur n'importe quel site ou vous avez recupere les sources du noyau : modules-x.y.z.tar.gz; choisissez la derniere version x.y.z qui est egale ou inferieure a votre version du noyau. Installez-le avec `tar zxvf modules-x.y.z.tar.gz', cd dans le repertoire cree (modules-x.y.z), regardez le fichier README, et suivez les instructions d'installation (qui sont en general tres simples, du genre, faites make install). Vous devriez avoir maintenant les programmes insmod, rmmod, ksyms, lsmod, genksyms, modprobe, et depmod dans /sbin. Si vous voulez les tester avec le gestionnaire d'exemple "hw" dans insmod ; regardez le fichier INSTALL dans ce sous-repertoire pour les details. insmod insere un module dans le noyau en cours d'execution. Les modules ont generalement une extension .o. Le pilote fourni en exemple est appele drv_hello.o, donc, pour l'inserer, insmod drv_hello.o'. Pour voir les modules que le noyau utilise, lancer lsmod. Il devrait alors afficher : blah# lsmod Module: #pages: Used by: drv_hello 1 `drv_hello' est le nom du module, il utilise une page memoire (4k), et aucun autre module du noyau ne depend de lui. Pour le retirer, lancer `rmmod drv_hello'. Notez que rmmod prend comme argument _l_e _n_o_m _d_u _m_o_d_- _u_l_e_, pas un nom de fichier ; ce nom peut etre obtenu en executant lsmod. Les autres programmes de gestion des modules sont documentes (pages de manuel). 99..22.. MMoodduulleess ddiissttrriibbuueess aavveecc llee nnooyyaauu Avec la version 2.0.30, bon nombre de filesystems, quelques pilotes SCSI, plusieurs gestionnaires de cartes Ethernet, et d'autres peripheriques sont des modules chargeables. Pour les utiliser, soyez sur que vous ne les inserez pas dans la configuration du noyau. Pour cela, ne repondez pas y pendant le `make config'. Compilez un nouveau noyau et bootez avec. Puis, cd dans /usr/src/linux a nouveau, et faites un `make modules'. Cela va alors compiler tous les modules que vous n'avez pas specifie dans le noyau, et installer les liens dans /usr/src/linux/modules. Vous pouvez alors les installer en faisant `make modules_install', qui les installera dans /lib/modules/x.y.z, ou x.y.z est le numero de version. Cela peut etre particulierement utile pour les filesystems. Vous n'utilisez peut-etre pas frequemment les filesystems minix ou msdos. Par exemple, si je rencontre une disquette msdos, je devrai faire un insmod /usr/src/linux/modules/msdos.o, puis rmmod msdos lorsque j'ai termine, Ce systeme economise pres de 50 Ko de RAM dans l'utilisation du noyau. Remarque : il est tres fortement conseille de _t_o_u_j_o_u_r_s le configurer directement dans le noyau en cas de recuperation de disque. 1100.. AAuuttrreess ooppttiioonnss ddee ccoonnffiigguurraattiioonn Cette section contient une description d'options particulieres du noyau (make config) qui ne sont pas decrites dans la paragraphe de configuration Pas mal de gestionnaires de peripheriques ne sont pas listes ici. 1100..11.. CCoonnffiigguurraattiioonn ggeenneerraallee Normal floppy disk support : utilisation normale des lecteurs de disquettes. Il vaut mieux lire le fichier drivers/block/README.fd ; Ceci est tres important pour les utilisateurs d'IBM Thinkpad. XT harddisk support : Si vous voulez utiliser les controleurs XT 8bits. PCI bios support : Si vous avez un PCI, vous voudrez surement activer cette option. Attention : certaines vieilles cartes meres PCI risquent de ne pas supporter cette option. Des informations supplementaires sont detaillees dans le PCI-HOWTO. Kernel support for ELF binaries : ELF est un systeme pour permettre aux binaires de franchir les architectures et les systemes d'exploitation. LLiinnuuxx semble se diriger dans cette direction. Set version information on all symbols for modules : dans le passe, les modules du noyau etaient recompiles avec tout nouveau noyau. Si vous dites y, il sera alors possible d'utiliser les modules avec un numero de version different. Lisez README.modules pour plus de details. 1100..22.. OOppttiioonnss ddee rreesseeaauu Ces options sont decrites dans le NET-3-HOWTO. 1111.. TTrruuccss eett aassttuucceess 1111..11.. RReeddiirriiggeerr llaa ssoorrttiiee ssttaannddaarrdd ddeess ccoommmmaannddeess mmaakkee oouu ppaattcchh Si vous voulez voir ce que font les commandes "make" ou "patch", vous pouvez rediriger la sortie des messages. En premier, regardez quel shell vous utilisez. "grep root /etc/passwd" et cherchez quelque chose comme "/bin/csh". Si vous utilisez sh ou bash, (commande) 2>&1 | tee (Fichier de sortie) placera une copie de la sortie dans le fichier (Fichier de sortie) Pour csh ou tcsh, la syntaxe est : (commande) |& tee (Fichier de sortie). Pour rc (Note : vous n'utilisez probablement pas rc) c'est : (commande) > [2=1]| tee (Fichier de sortie). 1111..22.. IInnssttaallllaattiioonnss ddiivveerrsseess dduu nnooyyaauu Autrement qu'en utilisant des disquettes, il y a d'autres methodes pour tester un nouveau noyau sans detruire les precedents. A la difference d'autres systemes Unix, LILO est capable de booter sur un noyau situe n'importe ou sur le disque. (Si vous avez un gros disque (500 Mo ou plus), lisez la documentation de LILO car cela risque de poser quelques problemes). Donc, ajoutez cela : image = /usr/src/linux/arch/i386/boot/zImage label = new_kernel a la fin de votre fichier de configuration LILO, vous pouvez alors choisir de booter sur le nouveau noyau sans avoir a detruire l'ancien /vmlinuz (apres avoir lance lilo, bien sur). La maniere la plus simple d'indiquer a LILO qu'il doit booter sur un nouveau noyau est de presser la touche shift au boot (lorsqu'il vous indique LILO), ce qui vous donne un prompt. A ce niveau, tapez `new_kernel' pour qu'il boote sur le nouveau noyau. Si vous desirez conserver plusieurs sources du noyau de LLiinnuuxx (cela peut prendre _b_e_a_u_c_o_u_p de place ; faites attention), la maniere la plus simple est le nommer : /usr/src/linux-x.y.z, ou x.y.z est la version du noyau. Vous pouvez alors choisir le source a utiliser en faisant un lien symbolique ; par exemple, `ln -sf linux-1.2.2 /usr/src/linux' indiquera la version 1.2.2 comme version courante. Avant de creer ce type de lien symbolique, soyez certain que le dernier argument de ln n'est pas un repertoire existant. Le resultat ne serait pas celui que vous esperiez. 1111..33.. MMiisseess aa jjoouurrss ddeess nnooyyaauuxx Russell Nelson (nelson@crynwr.com) resume les changements dans les nouvelles versions des noyaux. Ils sont courts et vous devriez les regarder avant de realiser la mise a jour. Ils sont disponibles par ftp anonyme ftp.emlist.com dans pub/kchanges ou via WEB : http://www.crynwr.com/kchanges 1122.. DD''aauuttrreess HHOOWWTTOO qquuii ppeeuuvveenntt eettrree ttrreess uuttiilleess +o Sound-HOWTO: cartes sons et utilitaires, +o SCSI-HOWTO: tout sur les controleurs SCSI ainsi que les peripheriques, +o NET-2-HOWTO: reseaux, +o PPP-HOWTO: reseau avec PPP, +o PCMCIA-HOWTO: a propos des peripheriques pour votre portable, +o ELF-HOWTO: ELF: qu'est-ce que c'est, installation, etc, +o Hardware-HOWTO: survol du materiel supporte. +o Module-HOWTO: plus de details sur les modules du noyau +o Kerneld mini-HOWTO: dedie a kerneld +o BogoMips mini-HOWTO: pour information 1133.. DDiivveerrss 1133..11.. AAuutteeuurr L'auteur du Kernel-HOWTO LLiinnuuxx est Brian Ward (ward@blah.math.tu- graz.ac.at). S'il vous plait, envoyez-lui des commentaires, corrections, rajouts. Les corrections sont en particuliers les plus importantes pour lui. Vous pouvez jeter un coup d'oeil a ma page WWW : http://www.math.psu.edu/ward/ http://blah.math.tu-graz.ac.at/~bri/ Meme en etant aussi attentif que possible avec le courier, rappelez- vous que j'en ai _b_e_a_u_c_o_u_p tous les jours, donc ca prendra un petit peu de temps pour vous repondre. Si le mail est une question, essayez d'etre clair et detaille dans la description du probleme. Merci a toute personne qui me donnera ces informations. N'oubliez pas de m'indiquer les versions de gcc, de la libc et eventuellement la distribution que vous utilisez. Si vous m'eccrivez et que vous n'obtenez aucune reponse dans un temps raisonable (trois semaines ou plus), alors il y a des chances pour que j'ai accidentellement detruit votre message, ou un autre probleme (desole). Reessayez. J'ai beaucoup de mail sur des problemes de materiel ou de ce genre. S'il vous plait, souvenez-vos que que je ne suis pas familier avec tout le materiel et donc je peux etre d'aucune aide dans certains cas. J'utilise normalement des machines avec des disques IDE et SCSI, des CD-ROM SCSI, des cartes ethernet 3Com et WD, des souris series, des cartes meres PCI avec controleurs SCSI NCR 810, AMD 386DX40 w/Cyrix avec coprocesseur, AMD 5x86, AMD 486DX4, et des processurs Intel 486DX4. La version 0.1 a ete ecrite le 3 Octobre 1994. Ce document est disponible aux formats : SGML, PostScript, TeX, roff et texte. 1133..22.. RReessttee aa ffaaiirree Le paragraphe "Trucs et astuces" est un peu court. J'espere l'etoffer avec les suggestions venant d'autres personnes. De meme pour "Autres paquetages". Des informations supplementaires pour le deboguage/sauvetage lors de crash seraient les bienvenues. 1133..33.. CCoonnttrriibbuuttiioonnss Une petite partie du README de Linus (cf. option kernel hacking ) est incluse. (Merci, Linus !) +o uc@brian.lunetix.de (Ulrich Callmeier) : patch -s et xargs. +o quinlan@yggdrasil.com (Daniel Quinlan) : corrections et complements dans un bon nombre de paragraphes. +o nat@nataa.frmug.eu.org (Nat Makrevitch) : mrproper, tar -p, et bon nombre d'autres choses +o boldt@math.ucsb.edu (Axel Boldt) : descriptions des options de configuration de noyau pour le reseau +o lembark@wrkhors.psyber.com (Steve Lembark) : suggestion pour le boot multiple. +o kbriggs@earwax.pd.uwa.edu.au (Keith Briggs) : quelques corrections et suggestions +o rmcguire@freenet.columbus.oh.us (Ryan McGuire): ajouts au niveau des options de compilation +o Eric.Dumas@freenix.fr (Eric Dumas) : Traduction francaise +o simazaki@yu-gate.yamanashi.ac.jp (Yasutada Shimazaki): Traduction japonaise +o jjamor@lml.ls.fi.upm.es (Juan Jose Amor Iglesias): Traduction espagnole +o mva@sbbs.se (Martin Wahlen) : traduction suedoise +o jzp1218@stud.u-szeged.hu (Zoltan Vamosi) : traduction hongroise +o bart@mat.uni.torun.pl (Bartosz Maruszewski) : traduction polonaise +o donahue@tiber.nist.gov (Michael J Donahue) : typos, gagnant de la "sliced bread competition" +o rms@gnu.ai.mit.edu (Richard Stallman) : Documentation sur la FSF. +o dak@Pool.Informatik.RWTH-Aachen.DE (David Kastrup) : NFS esr@snark.thyrsus.com (Eric Raymond) : quelques trucs et astuces Les gens qui m'ont envoye des mails avec des questions et des problemes m'ont ete egalement d'une aide precieuse. 1133..44.. CCooppyyrriigghhtt,, ttrraadduuccttiioonn Copyright (c) Brian Ward, 1994-1997. Version francaise Copyright (c) Eric Dumas, 1995-1997 dumas@freenix.fr Cette version francaise peut etre trouvee sur ftp.ibp.fr dans le repertoire /pub/linux/french/HOWTO. Ce document peut etre distribue sous n'importe quel format aussi longtemps qu'il n'est pas modifie, de meme pour cette notice. La traduction est permise dans n'importe quelle langue, a condition que le nom du traducteur soit ajoute dans le document. Il n'y a aauuccuunnee ggaarraannttiiee concernant ce document ansi que sur son contenu. Personne ne peut etre tenu pour responsable en cas de consequence malheureuse de l'application de son contenu. La distribution commerciale est autorisee et encouragee toutefois, il est fortement recommande de contacter l'auteur avant la redistribution, dans l'interet de la mise a jour les donnees. Il en est de meme pour les traductions.