Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:compiler_linux [Le 23/07/2012, 16:17]
109.222.65.179 [Quelques préliminaires]
tutoriel:compiler_linux [Le 25/09/2020, 22:15] (Version actuelle)
105.67.0.72 [Quelles sources utiliser]
Ligne 1: Ligne 1:
 {{tag>​kernel système programmation tutoriel}} {{tag>​kernel système programmation tutoriel}}
  
-====== Compiler son kernel ​====== +====== Compiler son noyau ======
  
 ===== Introduction ===== ===== Introduction =====
-**NOTE : Ce tutoriel traite ​de kernel, ​de noyau mais c'est la même chose**+**NOTE : Ce tutoriel traite de noyau ou de //​kernel// ​mais c'est la même chose**
  
 **NOTE : J'​imagine que vous savez quelles commandes sont à lancer en tant que root** **NOTE : J'​imagine que vous savez quelles commandes sont à lancer en tant que root**
  
-{{:​tutoriel:​tux-large-trans.png?​110 |Linux}}Le ​kernel ​est tout simplement le programme qui gère les interactions entre le matériel et les autres programmes. C'est lui qui ((entre autres)) amorce le système d'​exploitation.+{{:​tutoriel:​tux-large-trans.png?​110 |Linux}}Le ​noyau est tout simplement le programme qui gère les interactions entre le matériel et les autres programmes. C'est lui qui ((entre autres)) amorce le système d'​exploitation.
  
-Une chose que beaucoup de personnes ne comprennent pas est que le kernel ​est un programme comme les autres, vous pouvez parfaitement avoir plusieurs ​kernels ​et utiliser celui de votre choix. **Il est même recommandé d'​avoir toujours un kernel ​fonctionnel sur sa machine**.+Une chose que beaucoup de personnes ne comprennent pas est que le noyau est un programme comme les autres, vous pouvez parfaitement avoir plusieurs ​noyaux ​et utiliser celui de votre choix. **Il est même recommandé d'​avoir toujours un noyau fonctionnel sur sa machine ​que l'on pourra utiliser si le noyau par défaut n'est pas fiable**.
  
-Pourquoi compiler son kernel ​+Pourquoi compiler son noyau 
-Les kernels ​fournis par défaut dans votre distribution GNU/Linux sont des noyaux capables de tourner sur un maximum de machines et de matériels. Ils sont donc souvent plus lourds, mais la différence de rapidité est en général assez faible. En fait les vraies raisons de compiler son propre ​kernel ​sont les suivantes :+Les noyaux ​fournis par défaut dans votre distribution GNU/Linux sont des noyaux capables de tourner sur un maximum de machines et de matériels. Ils sont donc souvent plus lourds, mais la différence de rapidité est en général assez faible. En fait les vraies raisons de compiler son propre ​noyau sont les suivantes :
  
   - Comprendre comment fonctionne le noyau Linux.   - Comprendre comment fonctionne le noyau Linux.
-  - Faire fonctionner un matériel qui n'est pas pris en charge par votre kernel ​actuel. +  - Faire fonctionner un matériel qui n'est pas pris en charge par votre noyau actuel. 
-  - Appliquer un patch+  - Appliquer un correctif((ISO/​IEC 2382-7:2000 recommande « retouche »))
-  - Vous voulez utiliser une distribution qui oblige de compiler votre kernel ​((comme Gentoo))+  - Vous voulez utiliser une distribution qui oblige de compiler votre noyau ((comme Gentoo))
   - Vous voulez passer le temps.:-\   - Vous voulez passer le temps.:-\
  
-La compilation du noyau est longue et demande beaucoup d'​attention sous peine de ne pas pouvoir démarrer sa machine. Si vous n'avez pas le temps de lire beaucoup de documentation et si vous n'​êtes pas prêt galérer sérieusement alors inutile de vous fatiguer pour rien ((je vous aurais prévenus)) .+La compilation du noyau est longue et demande beaucoup d'​attention sous peine de ne plus pouvoir démarrer sa machine. Si vous n'avez pas le temps de lire beaucoup de documentation et si vous n'​êtes pas prêt à galérer sérieusementalors inutile de vous fatiguer pour rien ((je vous aurai prévenu)) .
  
 ===== Quelles sources utiliser ===== ===== Quelles sources utiliser =====
  
-En fait, la plupart des distribution ​((toutes ?)) patchent ​leurs kernels. Et ce pour des raisons de sécurité ou tout simplement pour un fonctionnement optimal. Il est **très** conseillé d'​utiliser les sources de votre distribution. [[http://​kernel.org|Les sources officielles de Linux]] sont appelées vanilla ((i.e. version de base, c.f. [[http://​www.catb.org/​~esr/​jargon/​html/​V/​vanilla.html|vanilla]] dans "the Jargon File 4.4.7" 2009-02-25)). Mais comme je l'ai dit, nous n'​utiliserons pas ces sources.+En fait, la plupart des distributions ​((toutes ?)) modifient ​leurs noyaux. Et ce pour des raisons de sécurité ou tout simplement pour un fonctionnement optimal. Il est **très** conseillé d'​utiliser les sources de votre distribution. [[http://​kernel.org|Les sources officielles de Linux]] sont appelées ​//vanilla// ((c.-à-d. version de base, cf. [[http://​www.catb.orgsdsd.
  
 ===== Installer les sources et les outils pour la compilation ===== ===== Installer les sources et les outils pour la compilation =====
  
-Passons ​l'​installation des sources : \\+Passons ​à l'​installation des sources : \\
 [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​linux-source]]** [[:​tutoriel:​comment_installer_un_paquet|Installez le paquet]] **[[apt>​linux-source]]**
  
-<​note>​linux-source est un  ​metapackage((paquet qui est un lien vers un ou plusieurs paquets))qui pointe vers la dernière version du kernel</​note>​+<​note>​linux-source est un métapaquetage((paquet qui est un lien vers un ou plusieurs paquets)) qui pointe vers la dernière version du noyau</​note>​
 Il vous faudra aussi installer les outils de compilation : \\ Il vous faudra aussi installer les outils de compilation : \\
 [[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​debconf-utils,​dpkg-dev,​debhelper,​build-essential,​kernel-package,​libncurses5-dev|debconf-utils dpkg-dev debhelper build-essential kernel-package libncurses5-dev]]** [[:​tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​debconf-utils,​dpkg-dev,​debhelper,​build-essential,​kernel-package,​libncurses5-dev|debconf-utils dpkg-dev debhelper build-essential kernel-package libncurses5-dev]]**
- 
  
 ===== Partir d'une configuration minimale ===== ===== Partir d'une configuration minimale =====
  
 ==== Quelques préliminaires ==== ==== Quelques préliminaires ====
-Les développeurs du Kernel ​déconseillent de compiler le kernel ​en tant que root, mais cet avis est très partagé. Faites comme bon vous semble, si vous voulez compiler en utilisateur je vous conseille de vous rajouter au groupe src : +Les développeurs du noyau déconseillent de compiler le noyau en tant que root, mais cet avis est très partagé. Faites comme bon vous semble, si vous voulez compiler en utilisateur je vous conseille de vous rajouter au groupe src : 
-<code bash>​usermod -aG src login ## Où login est votre nom d'​utilisateur+<code bash>​usermod -aG src login ## Où //login// est votre nom d'​utilisateur
 ou ou
-sudo adduser login src  ## Où login est votre nom d'​utilisateur</​code>​+sudo adduser login src  ## Où //login// est votre nom d'​utilisateur</​code>​
  
-Par défaut, les sources sont dans /usr/src, sous Debian et Ubuntu il vous faut extraire l'​archive :+Par défaut, les sources sont dans /usr/src, sous Debian et Ubuntu il vous faut extraire ​le contenu de l'​archive :
 <code bash>cd /usr/src <code bash>cd /usr/src
 tar xvjf linux-source-2.6.VERSION.tar.bz2 tar xvjf linux-source-2.6.VERSION.tar.bz2
 </​code>​ </​code>​
- +<note important>​Les sources ne sont pas archivées dans les derniers noyaux</​note>​ 
-Je vous conseille de faire un lien symbolique vers le kernel qui s'​appelle linux ((à modifier suivant la version de votre kernel)) (c'est bien et ça m'​aidera pour la suite):+Je vous conseille de faire un lien symbolique ​intitulé //​linux// ​vers le noyau((à modifier suivant la version de votre noyau)) (c'est bien et ça m'​aidera pour la suite) :
 <code bash>cd /usr/src <code bash>cd /usr/src
 ln -sfn linux-source-2.6.VERSION linux ## sous Debian, Ubuntu ln -sfn linux-source-2.6.VERSION linux ## sous Debian, Ubuntu
Ligne 73: Ligne 71:
 <code bash>​make menuconfig</​code>​ <code bash>​make menuconfig</​code>​
  
-Et vous vous retrouvez devant quelque chose comme ceci :  +Et vous vous retrouvez devant quelque chose comme ceci :
  
 {{:​tutoriel:​menuconfig.png |make menuconfig}} {{:​tutoriel:​menuconfig.png |make menuconfig}}
- +—————————————————————————————————————————————
- +
- +
- +
- +
- +
  
 La navigation dans cette interface est simple : La navigation dans cette interface est simple :
-  * Flèches pour monter/​descendre +  * Flèches ​haut/​bas ​pour monter/​descendre 
-  * Entrée pour rentrer ​dans les sous-menus +  * Entrée pour entrer ​dans les sous-menus 
-  * Deux fois echap pour sortir ​du sous-menus +  * Échappement deux fois pour sortir ​d'​un ​sous-menu 
-  * h pour demander l'​aide ​sur une option +  * h pour demander l'​aide ​d'une option 
-  * slash "/"​ pour rechercher une option+  * Oblique ​"/"​ pour rechercher une option
   * Espace pour sélectionner une option   * Espace pour sélectionner une option
  
-Toute l'​astuce consiste à chercher les options qui correspondent à votre matériel et à les activer avec espace. Cette tâche est assez fastidieuse si on part de zéro.((et je vous déconseille de le faire))+==== Choix des options ==== 
 + 
 +Toute l'​astuce consiste à chercher les options qui correspondent à votre matériel et à les activer avec espace. Cette tâche est assez fastidieuse si on part de zéro((et je vous déconseille de le faire)).
  
 Ainsi si vous voulez partir avec une config qui devrait marcher je vous conseille deux choses : Ainsi si vous voulez partir avec une config qui devrait marcher je vous conseille deux choses :
  
-**Soit vous copiez un .config fonctionnel que vous optimiserez ensuite** : Si vous avez déjà un kernel ​fonctionnel,​ son .config devrait être dans le dossier /boot. Pour le copier (par exemple) :+**Soit vous copiez un .config fonctionnel que vous optimiserez ensuite** : Si vous avez déjà un noyau fonctionnel,​ son .config devrait être dans le dossier /boot. Pour le copier (par exemple) :
 <code bash>cp /​boot/​config-2.6.XX /​usr/​src/​linux/​.config</​code>​ <code bash>cp /​boot/​config-2.6.XX /​usr/​src/​linux/​.config</​code>​
 Ensuite, vu que ce n'est sûrement pas la même version, il faut voir s'il y a eu des modifications dans la configuration : Ensuite, vu que ce n'est sûrement pas la même version, il faut voir s'il y a eu des modifications dans la configuration :
 <code bash>​make oldconfig</​code>​ <code bash>​make oldconfig</​code>​
-chaque fois que les options seront différentes,​ on vous demandera de spécifier les nouvelles options.+À chaque fois que les options seront différentes,​ on vous demandera de spécifier les nouvelles options.
  
 Je déconseille cette méthode pour deux raisons : Je déconseille cette méthode pour deux raisons :
-  * make oldconfig est difficile ​faire proprement +  * make oldconfig est difficile ​à faire proprement 
-  * Le travail à faire pour optimiser ensuite sera très dur si la config du kernel ​précédent est pleine d'​options inutiles+  * Le travail à faire pour optimiser ensuite sera très dur si la config du noyau précédent est pleine d'​options inutiles
  
 Cette méthode est à utiliser seulement si vous êtes certain de votre .config. Cette méthode est à utiliser seulement si vous êtes certain de votre .config.
  
-**La 2ème méthode consiste à construire un kernel ​minimum puis à remplir les options dont vous aurez besoin**. C'est celle que je vous conseille ((sauf si vous avez un matériel vraiment exotique)). +**La 2<​sup>​ème</​sup> ​méthode consiste à construire un noyau minimum puis à remplir les options dont vous aurez besoin**. C'est celle que je vous conseille((sauf si vous avez un matériel vraiment exotique)). 
-Cette commande va construire un .config minimum qui est fourni par les mainteneur ​du kernel.+Cette commande va construire un .config minimum qui est fourni par les responsables ​du noyau : 
 <code bash>​make defconfig</​code>​ <code bash>​make defconfig</​code>​
-==== En dur ou en module ? ==== 
  
-Les options que vous choisirez dans le kernel seront compilées soit en dur soit en module. +==== En dur ou en modules ​====
-  * En dur, l'​option sera incluse dans le kernel. Ce qui se traduit pas une étoile '​*'​ a côté de l'​option +
-  * En module l'​option sera optionnelle ((sans blague ​?)) elle est représentée par un M à côté de l'​option,​ c'​est-à-dire que vous pourrez choisir de l'​activer ou non.+
  
-Concrètement,​ ça veut dire que tout ce qui est nécessaire au démarrage de l'​ordinateur **doit** être compilé en dur. Et le reste en dur ou en module.+Les options que vous choisirez dans le noyau seront compilées soit en dur soit en modules. 
 +  * En dur, l'​option sera incluse dans le noyau. Ce qui se traduit par une étoile '​*'​ à côté de l'​option 
 +  * En modules l'​option sera optionnelle((sans blague ?)) et représentée par un M à côté de l'​option,​ c'​est-à-dire que vous pourrez choisir de l'​activer ou non. 
 + 
 +Concrètement,​ ça veut dire que tout ce qui est nécessaire au démarrage de l'​ordinateur **doit** être compilé en dur. Et le reste en dur ou en modules.
  
 Donc **doit** être compilé en dur : Donc **doit** être compilé en dur :
Ligne 126: Ligne 121:
 Et voilà, vous pouvez passer à la configuration proprement dite. Et voilà, vous pouvez passer à la configuration proprement dite.
  
 +===== La configuration du noyau =====
  
 +{{:​tutoriel:​linus-9719.jpg?​90 |Que Linus soit avec vous !}} Ok, allons-y, prenez une pause, un café, un deuxième café et une sieste. C'est la partie clef de votre noyau donc restez vigilants et tout se passera bien. On lance la commande magique et on y va : <​code>​make menuconfig</​code>​
  
-===== La configuration du kernel ===== +Je vous rassure, on ne touchera qu'à quelques options dans le menu, je n'aborderai ​en général que les options vitales pour le système((Celles qui permettent de démarrer)).
- +
-{{:​tutoriel:​linus-9719.jpg?​90 |Que Linus soit avec vous !}} Ok, allons-y, prenez une pause, un café, un deuxième café et une sieste. C'est la partie clef de votre kernel donc restez vigilants et tout se passera bien. On lance la commande magique et on y va : <​code>​make menuconfig</​code>​ +
-Je vous rassure, on ne touchera qu'à quelques options dans le menu, je n'aborderais ​en général que les options vitales pour le système((Celles qui permettent de démarrer)). +
- +
-<note important>​**NOTE : certaines options changent d'​endroit suivant la version du kernel. Si mes indications ne sont pas bonnes, cherchez avec /​**</​note>​ +
- +
- +
- +
- +
- +
- +
- +
  
 +<note important>​**NOTE : certaines options changent d'​endroit suivant la version du noyau. Si mes indications ne sont pas bonnes, cherchez avec /​**</​note>​
  
 ==== Deux trois petites options à activer ==== ==== Deux trois petites options à activer ====
Ligne 149: Ligne 134:
 L'​option **Prompt for development and/or incomplete code/​drivers** doit être activée pour pouvoir avoir accès à certaines options. Si ce n'est pas le cas, des options seraient introuvables dans les menus. L'​option **Prompt for development and/or incomplete code/​drivers** doit être activée pour pouvoir avoir accès à certaines options. Si ce n'est pas le cas, des options seraient introuvables dans les menus.
  
-Cette options ​est ici :+Cette option ​est ici :
 <​code>​General setup ---> <​code>​General setup --->
       [*] Prompt for development and/or incomplete code/​drivers</​code>​       [*] Prompt for development and/or incomplete code/​drivers</​code>​
  
-Sur certains ​kernel ​elle est ici :+Sur certains ​noyaux ​elle est ici :
 <​code>​Code maturity level options ​ ---> <​code>​Code maturity level options ​ --->
       [*] Prompt for development and/or incomplete code/​drivers</​code>​       [*] Prompt for development and/or incomplete code/​drivers</​code>​
Ligne 165: Ligne 150:
 Pour le savoir : Pour le savoir :
 <​code>​grep -i "model name" /​proc/​cpuinfo <​code>​grep -i "model name" /​proc/​cpuinfo
-## Chez moi ça donne ça :+## Chez moi ça donne :
 model name : Genuine Intel(R) CPU           ​T1350 ​ @ 1.86GHz</​code>​ model name : Genuine Intel(R) CPU           ​T1350 ​ @ 1.86GHz</​code>​
 Ensuite faites des recherches sur le processeurs et trouvez la famille de processeur correspondante. Ensuite faites des recherches sur le processeurs et trouvez la famille de processeur correspondante.
Ligne 180: Ligne 165:
  
 ==== La section NETWORKING ==== ==== La section NETWORKING ====
-Cette section est utile si vous utilisez des périphériques Wi-Fi, ​bluetoothinfrarouge. Je vous laisse activer (en dur ou en module) ce dont vous avez besoin.+Cette section est utile si vous utilisez des périphériques Wi-Fi, ​Bluetoothou infrarouges. Je vous laisse activer (en dur ou en module) ce dont vous avez besoin. 
 Si vous n'​utilisez pas IPV6 vous pouvez le désactiver ici : Si vous n'​utilisez pas IPV6 vous pouvez le désactiver ici :
 <​code>​Networking ​ ---> <​code>​Networking ​ --->
Ligne 188: Ligne 174:
 ==== La section File systems ==== ==== La section File systems ====
  
-Cette section est vitale, il faut absolument que le support ​des systèmes de fichiers des partitions racines soit compilé ​**en dur**.+Cette section est vitale, il faut absolument que la prise en charge ​des systèmes de fichiers des partitions racines soit compilée ​**en dur**. 
 J'​estime que si vous êtes arrivés jusqu'​ici c'est que vous savez ce qu'est un système de fichiers. J'​estime que si vous êtes arrivés jusqu'​ici c'est que vous savez ce qu'est un système de fichiers.
 <​code>​File systems ​ ---> <​code>​File systems ​ --->
Ligne 201: Ligne 188:
     DOS/FAT/NT Filesystems ​ ---></​code>​     DOS/FAT/NT Filesystems ​ ---></​code>​
  
-La section suivante mériterait une page entière, c'est pourquoi je la mest en valeur : +La section suivante mériterait une page entière, c'est pourquoi je la met en valeur :
  
 ==== La section Devices Drivers ==== ==== La section Devices Drivers ====
Ligne 218: Ligne 204:
 === La section Parallel port support === === La section Parallel port support ===
  
-Pour utiliser les [[http://​fr.wikipedia.org/​wiki/​Port_parall%C3%A8le|port parallèles]]+Pour utiliser les [[http://​fr.wikipedia.org/​wiki/​Port_parall%C3%A8le|ports parallèles]]
 Je vous conseille cette option, surtout si vous avez une imprimante qui se branche sur un tel port : Je vous conseille cette option, surtout si vous avez une imprimante qui se branche sur un tel port :
 <​code>​Devices Drivers ---> <​code>​Devices Drivers --->
Ligne 226: Ligne 212:
 === La section ATA/​ATAPI/​MFM/​RLL support === === La section ATA/​ATAPI/​MFM/​RLL support ===
  
-Si vous avez utilisé make defconfig, cette section devrait être bien configurée,​ toutefois il y a une optimisation à faire :+Si vous avez utilisé ​//make defconfig//, cette section devrait être bien configurée,​ toutefois il y a une optimisation à faire :
  
 == Support IDE == == Support IDE ==
- 
  
 Une de ces deux options peut être désactivée. Une de ces deux options peut être désactivée.
Ligne 254: Ligne 239:
 <​code>​ udevinfo: command not found</​code>​ <​code>​ udevinfo: command not found</​code>​
 Utilisez plutôt udevadm info avec les mêmes options. Utilisez plutôt udevadm info avec les mêmes options.
- 
  
 Je vous laisse faire le reste ;-) Je vous laisse faire le reste ;-)
Ligne 285: Ligne 269:
 "​VIA_IDE", ​     VIA82CXXX chipset support </​code>​ "​VIA_IDE", ​     VIA82CXXX chipset support </​code>​
  
-Tous les disques utilisés par le systèmes ​doivent être en dur !+Tous les disques utilisés par le système ​doivent être en dur !
  
 === Support SATA === === Support SATA ===
Ligne 312: Ligne 296:
  
 Donc l'​option est SATA_AHCI, on a juste à lancer une recherche (/) pour trouver la bonne option. Donc l'​option est SATA_AHCI, on a juste à lancer une recherche (/) pour trouver la bonne option.
- 
  
 ==== La section Network device support ==== ==== La section Network device support ====
Ligne 334: Ligne 317:
 /​usr/​src/​linux-2.6.23-gentoo-r9/​drivers/​net/​Makefile:​obj-$(CONFIG_8139TOO) += 8139too.o</​code>​ /​usr/​src/​linux-2.6.23-gentoo-r9/​drivers/​net/​Makefile:​obj-$(CONFIG_8139TOO) += 8139too.o</​code>​
  
-Une petite recherche de 8139TOO vous donne l'​option ​activer. Je vous conseille de la mettre en dur dans le kernel.+Une petite recherche de 8139TOO vous donne l'​option ​à activer. Je vous conseille de la mettre en dur dans le noyau.
  
-Si vous avez une carte W-Fi je vous conseille d'​aller faire un tour ici :+Si vous avez une carte Wi-Fi je vous conseille d'​aller faire un tour ici :
 <​code>​Device Drivers ​ ---> <​code>​Device Drivers ​ --->
 [*] Network device support ​ ---> [*] Network device support ​ --->
 Wireless LAN  ---> Wireless LAN  --->
 [*] Wireless LAN (IEEE 802.11)</​code>​ [*] Wireless LAN (IEEE 802.11)</​code>​
- 
- 
  
 ==== La section Graphic support ==== ==== La section Graphic support ====
  
-Le framebuffer peut être intéressant ​à utiliser, c'​est ​lui qui nous permet de regarder des vidéo ​ou d'​avoir un fond d'​écran dans le tty. +La vidéo-mémoire((ISO/​IEC 2382-13:​1996)) (//framebuffer//) peut être intéressante ​à utiliser, c'​est ​elle qui nous permet de regarder des vidéos ​ou d'​avoir un fond d'​écran dans le tty. Mais cette option n'est pas obligatoire.
-Mais cette option n'est pas obligatoire.+
  
 On travaille ici : On travaille ici :
Ligne 364: Ligne 344:
             <*> Framebuffer Console support             <*> Framebuffer Console support
             [*]   ​Support for the Framebuffer Console Decorations</​code>​             [*]   ​Support for the Framebuffer Console Decorations</​code>​
- 
  
 ===== 1,2,3 compilez ! ===== ===== 1,2,3 compilez ! =====
  
-Votre kernel ​doit être assez bien configuré pour pouvoir démarrer maintenant. On doit donc le compiler puis l'​installer. +Votre noyau doit être assez bien configuré pour pouvoir démarrer maintenant. On doit donc le compiler puis l'​installer. Ici encore il y a plusieurs écoles, je vais d'​abord vous expliquer la méthode universelle puis ensuite d'​autres méthodes qui permettent de faire les choses plus proprement...
-Ici encore il y a plusieurs écoles, je vais d'​abord vous expliquer la méthode universelle puis ensuite d'​autres méthodes qui permettent de faire les choses plus proprement...+
  
 En gros voici ce que l'on va faire : En gros voici ce que l'on va faire :
-  - Compiler le kernel +  - Compiler le noyau 
-  - Placer le kernel ​construit dans /boot +  - Placer le noyau construit dans /boot 
-  - Configurer grub pour démarrer sur le nouveau ​kernel +  - Configurer grub pour démarrer sur le nouveau ​noyau
- +
- +
- +
- +
  
 ==== La méthode universelle ==== ==== La méthode universelle ====
Ligne 387: Ligne 360:
 make && make modules_install</​code>​ make && make modules_install</​code>​
  
-On copie le kernel ​dans /boot : Vous pouvez lui donner le nom que vous voulez, ici l'​exemple est pour l'​architecture i386, mais si vous avez une autre architecture vous devez aller voir dans le dossier arch/+On copie le noyau dans /boot : Vous pouvez lui donner le nom que vous voulez, ici l'​exemple est pour l'​architecture i386, mais si vous avez une autre architecture vous devez aller voir dans le dossier arch/
 <note help>Ici i386 est à remplacer par votre architecture bien sûr</​note>​ <note help>Ici i386 est à remplacer par votre architecture bien sûr</​note>​
 <code bash>cp arch/​i386/​boot/​bzImage /​boot/​kernel-2.6.VERSION</​code>​ <code bash>cp arch/​i386/​boot/​bzImage /​boot/​kernel-2.6.VERSION</​code>​
Ligne 394: Ligne 367:
 cp System.map /​boot/​System.map.2.6.VERSION</​code>​ cp System.map /​boot/​System.map.2.6.VERSION</​code>​
  
-Ensuite ​éditez ​le fichier de configuration de grub **/​boot/​grub/​menu.lst** puis rajoutez votre kernel ​:+Ensuite ​modifiez ​le fichier de configuration de grub **/​boot/​grub/​menu.lst** puis rajoutez votre noyau :
 <​code>​title ​          ​Ubuntu GNU/Linux 2.6.VERSION (version perso) <​code>​title ​          ​Ubuntu GNU/Linux 2.6.VERSION (version perso)
 root            (hd0,3) root            (hd0,3)
Ligne 404: Ligne 377:
  
 (hd0,3) doit correspondre à la partition qui contient /boot. Pour grub, hda1=(hd0,​0),​ ainsi hda4=(hd0,​3). (hd0,3) doit correspondre à la partition qui contient /boot. Pour grub, hda1=(hd0,​0),​ ainsi hda4=(hd0,​3).
-Vous pouvez bien sûr rajouter des options dans la ligne "​kernel",​ par exemple vga=791 (pour le framebuffer, mais le nombre dépend de votre écran). +Vous pouvez bien sûr rajouter des options dans la ligne "​kernel",​ par exemple vga=791 (pour la vidéo-mémoire, mais le nombre dépend de votre écran). 
-<note important>​FIXME : La configuration du menu.lst est valable uniquement pour grub-legacy. Les utilisateurs d'​Ubuntu 9.04 et ultérieur ​sont invités à consulter la page dédiée à [[:​grub-pc]]</​note>​+<note important>​FIXME : La configuration du menu.lst est valable uniquement pour grub-legacy. Les utilisateurs d'​Ubuntu 9.04 et versions ultérieures ​sont invités à consulter la page dédiée à [[:​grub-pc]]</​note>​
  
-Un petit reboot ​et c'est bon ! 8-)+Un petit réamorçage ​et c'est bon ! 8-)
  
 +==== La méthode "​Debian"​ ====
  
- +Si vous êtes sous Debian (ou Ubuntu), il est plus malin de créer un paquet .deb pour installer votre noyau.
-==== La Méthode "​Debian"​ ==== +
- +
-Si vous êtes sous Debian (ou Ubuntu), il est plus malin de créer un paquet .deb pour installer votre kernel.+
 Pourquoi ? Pourquoi ?
   - Vous pourrez le réutiliser si vous faites une réinstallation.   - Vous pourrez le réutiliser si vous faites une réinstallation.
   - Vous pouvez l'​installer et le supprimer facilement avec APT.   - Vous pouvez l'​installer et le supprimer facilement avec APT.
   - Parce que c'est la classe de faire ses propres paquets :-O   - Parce que c'est la classe de faire ses propres paquets :-O
-  - Parce que c'est plus simple et que ça va rajouter automatiquement votre kernel ​dans /​boot/​grub/​menu.lst+  - Parce que c'est plus simple et que ça va rajouter automatiquement votre noyau dans /​boot/​grub/​menu.lst
  
 Une seule commande ferra l'​affaire : Une seule commande ferra l'​affaire :
 <code bash>cd /​usr/​src/​linux <code bash>cd /​usr/​src/​linux
 make-kpkg --append-to-version "​-perso"​ --initrd --us --uc buildpackage</​code>​ make-kpkg --append-to-version "​-perso"​ --initrd --us --uc buildpackage</​code>​
-Dans cette commande, vous pouvez personnaliser le nom de votre kernel ​("​-perso"​).+Dans cette commande, vous pouvez personnaliser le nom de votre noyau ("​-perso"​).
  
-Une fois que c'est fini, les paquets doivent ​être dans /usr/src et vous n'avez plus qu'à l'​installer :+Une fois que c'est fini, le paquet doit être dans /usr/src et vous n'avez plus qu'à l'​installer :
 <​code>​dpkg -i ../​linux-image-2.6.24-perso.deb</​code>​ <​code>​dpkg -i ../​linux-image-2.6.24-perso.deb</​code>​
  
-Et voilà ! Grub est automatiquement mis à jour et votre kernel ​est disponible dans le menu de grub. +Et voilà ! Grub est automatiquement mis à jour et votre noyau est disponible dans le menu de grub. Un petit réamorçage ​et vous voilà sur votre nouveau ​noyau.
-Un petit reboot ​et vous voilà sur votre nouveau ​kernel. +
  
 ====== Que faire en cas de mauvaise compilation ? ====== ====== Que faire en cas de mauvaise compilation ? ======
  
-Si la compilation donne un kernel ​qui ne fonctionne pas bien, regardez les messages d'​erreurs et allez faire des recherches et demandez de l'aide sur des forums ou sur IRC.+Si la compilation donne un noyau qui ne fonctionne pas bien, regardez les messages d'​erreurs et allez faire des recherches et demandez de l'aide sur des forums ou sur IRC.
  
-Puis recompilez votre kernel. Mais avant il faut supprimer les fichiers qui on été crées ​pendant la compilation :+Puis recompilez votre noyau. Mais avant il faut supprimer les fichiers qui on été créés ​pendant la compilation :
  
 <code bash>cd /​usr/​src/​linux <code bash>cd /​usr/​src/​linux
Ligne 450: Ligne 419:
   * [[http://​forums.gentoo.org/​viewtopic-t-555623.html]] ---> Configuration du noyau   * [[http://​forums.gentoo.org/​viewtopic-t-555623.html]] ---> Configuration du noyau
   * [[http://​ashgenesis.debian-fr.net/​tutorial/​kernel/​]] ---> Compilation à la sauce "​Debian"​   * [[http://​ashgenesis.debian-fr.net/​tutorial/​kernel/​]] ---> Compilation à la sauce "​Debian"​
-  * [[http://www.lea-linux.org/​cached/​index/​Hardware-hard_plus-matos.html]] ---> Connaître son matériel +  * [[http://​lea-linux.org/​documentations/​Hardware-hard_plus-matos]] ---> Connaître son matériel 
-  * [[http://​www.gentoo.org/​doc/​fr/​gentoo-kernel.xml]] ---> Guide du kernel ​Gentoo+  * [[http://​www.gentoo.org/​doc/​fr/​gentoo-kernel.xml]] ---> Guide du noyau Gentoo
   * [[http://​casteyde.christian.free.fr/​system/​linux/​guide/​online/​a12863.html]] ---> Configuration du noyau   * [[http://​casteyde.christian.free.fr/​system/​linux/​guide/​online/​a12863.html]] ---> Configuration du noyau
   * [[http://​www.kroah.com/​lkn/​]] ---> Linux Kernel in a Nutshell [EN]   * [[http://​www.kroah.com/​lkn/​]] ---> Linux Kernel in a Nutshell [EN]
- 
  
 --- ---
-Contributeurs : [[:​utilisateurs:​philpep-tlse]]+Contributeurs : [[:​utilisateurs:​philpep-tlse]], [[:​utilisateurs:​Urhixidur]]
  • tutoriel/compiler_linux.1343053059.txt.gz
  • Dernière modification: Le 23/07/2012, 16:17
  • par 109.222.65.179