Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| tutoriel:compiler_linux [Le 19/09/2011, 17:53] – 188.60.14.120 | tutoriel:compiler_linux [Le 17/01/2026, 20:18] (Version actuelle) – [La méthode "Debian"] Faute de frappe. amadis dudu | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| {{tag> | {{tag> | ||
| - | ====== Compiler son kernel | + | ====== Compiler son noyau ====== |
| ===== Introduction ===== | ===== Introduction ===== | ||
| - | **NOTE : dans ce tuto je parlerais de kernel, | + | **NOTE : Ce tutoriel traite |
| **NOTE : J' | **NOTE : J' | ||
| - | {{: | + | {{: |
| - | Une chose que beaucoup de personnes ne comprennent pas est que le kernel | + | Une chose que beaucoup de personnes ne comprennent pas est que le noyau est un programme comme les autres, vous pouvez parfaitement avoir plusieurs |
| - | Pourquoi compiler son kernel | + | Pourquoi compiler son noyau ? |
| - | Les kernels | + | Les noyaux |
| - 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 | + | - Faire fonctionner un matériel qui n'est pas pris en charge par votre noyau actuel. |
| - | - Appliquer un patch. | + | - Appliquer un correctif((ISO/ |
| - | - Vous voulez utiliser une distribution qui oblige de compiler votre kernel | + | - 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' | + | La compilation du noyau est longue et demande beaucoup d' |
| + | |||
| + | |||
| + | <note tip>Pour ceux qui débutent voir d' | ||
| + | |||
| + | Et en particulier le paragraphe [[: | ||
| + | </ | ||
| ===== Quelles sources utiliser ===== | ===== Quelles sources utiliser ===== | ||
| - | En fait, la plupart des distribution | + | En fait, la plupart des distributions |
| ===== Installer les sources et les outils pour la compilation ===== | ===== Installer les sources et les outils pour la compilation ===== | ||
| - | Passons | + | Passons |
| - | <code>sudo aptitude install | + | [[: |
| - | < | + | |
| - | Il vous faudra aussi installer les outils de compilation : | + | < |
| - | <code>sudo aptitude install | + | Il vous faudra aussi installer les outils de compilation : \\ |
| + | [[: | ||
| ===== Partir d'une configuration minimale ===== | ===== Partir d'une configuration minimale ===== | ||
| ==== Quelques préliminaires ==== | ==== Quelques préliminaires ==== | ||
| - | Les développeurs du Kernel | + | 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> | + | <code bash> |
| + | ou | ||
| + | sudo adduser login src ## Où // | ||
| - | Par défaut, les sources sont dans /usr/src, sous Debian et Ubuntu il vous faut extraire l' | + | Par défaut, les sources sont dans /usr/src, sous Debian et Ubuntu il vous faut extraire |
| <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 | ||
| </ | </ | ||
| - | + | <note important> | |
| - | Je vous conseille de faire un lien symbolique vers le kernel qui s' | + | Je vous conseille de faire un lien symbolique |
| <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 69: | Ligne 77: | ||
| <code bash> | <code bash> | ||
| - | Et vous vous retrouvez devant quelque chose comme ceci : | + | Et vous vous retrouvez devant quelque chose comme ceci : |
| {{: | {{: | ||
| - | + | ————————————————————————————————————————————— | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| La navigation dans cette interface est simple : | La navigation dans cette interface est simple : | ||
| - | * Flèches pour monter/ | + | * Flèches |
| - | * Entrée pour rentrer | + | * Entrée pour entrer |
| - | * Deux fois echap pour sortir | + | * Échappement deux fois pour sortir |
| - | * h pour demander l' | + | * h pour demander l' |
| - | * slash "/" | + | * Oblique |
| * Espace pour sélectionner une option | * Espace pour sélectionner une option | ||
| - | Toute l' | + | ==== Choix des options ==== |
| + | |||
| + | Toute l' | ||
| 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 | + | **Soit vous copiez un .config fonctionnel que vous optimiserez ensuite** : Si vous avez déjà un noyau fonctionnel, |
| <code bash>cp / | <code bash>cp / | ||
| 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> | <code bash> | ||
| - | A chaque fois que les options seront différentes, | + | À chaque fois que les options seront différentes, |
| Je déconseille cette méthode pour deux raisons : | Je déconseille cette méthode pour deux raisons : | ||
| - | * make oldconfig est difficile | + | * make oldconfig est difficile |
| - | * Le travail à faire pour optimiser ensuite sera très dur si la config du kernel | + | * Le travail à faire pour optimiser ensuite sera très dur si la config du noyau précédent est pleine d' |
| 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 | + | **La 2< |
| - | Cette commande va construire un .config minimum qui est fourni par les mainteneur | + | Cette commande va construire un .config minimum qui est fourni par les responsables |
| <code bash> | <code bash> | ||
| - | ==== En dur ou en module | + | ==== En dur ou en modules |
| - | Les options que vous choisirez dans le kernel | + | Les options que vous choisirez dans le noyau seront compilées soit en dur soit en modules. |
| - | * En dur, l' | + | * En dur, l' |
| - | * En module | + | * En modules |
| - | Concrètement, | + | Concrètement, |
| Donc **doit** être compilé en dur : | Donc **doit** être compilé en dur : | ||
| Ligne 123: | Ligne 127: | ||
| Et voilà, vous pouvez passer à la configuration proprement dite. | Et voilà, vous pouvez passer à la configuration proprement dite. | ||
| + | ===== La configuration du noyau ===== | ||
| + | {{: | ||
| - | ===== La configuration du kernel ===== | + | Je vous rassure, on ne touchera qu'à quelques options dans le menu, je n'aborderai |
| - | + | ||
| - | {{: | + | |
| - | Je vous rassure, on ne touchera qu'à quelques options dans le menu, je n'aborderais | + | |
| - | + | ||
| - | <note important> | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| + | <note important> | ||
| - | ==== Deux trois petites options à activer | + | ==== Deux trois petites options à activer ==== |
| Il faut activer quelques options pour pouvoir travailler sereinement : | Il faut activer quelques options pour pouvoir travailler sereinement : | ||
| L' | L' | ||
| - | Cette options | + | Cette option |
| < | < | ||
| [*] Prompt for development and/or incomplete code/ | [*] Prompt for development and/or incomplete code/ | ||
| - | Sur certains | + | Sur certains |
| < | < | ||
| [*] Prompt for development and/or incomplete code/ | [*] Prompt for development and/or incomplete code/ | ||
| Ligne 162: | Ligne 156: | ||
| Pour le savoir : | Pour le savoir : | ||
| < | < | ||
| - | ## Chez moi ça donne ça : | + | ## Chez moi ça donne : |
| model name : Genuine Intel(R) CPU | model name : Genuine Intel(R) CPU | ||
| 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 170: | Ligne 164: | ||
| < | < | ||
| Subarchitecture Type ---></ | Subarchitecture Type ---></ | ||
| - | Si vous ne savez pas quoi mettre et que vous avez un PC " | + | Si vous ne savez pas quoi mettre et que vous avez un PC " |
| Si vous utilisez des cartes PCMCIA je vous conseille d' | Si vous utilisez des cartes PCMCIA je vous conseille d' | ||
| Ligne 177: | Ligne 171: | ||
| ==== La section NETWORKING ==== | ==== La section NETWORKING ==== | ||
| - | Cette section est utile si vous utilisez des périphériques Wi-Fi, | + | Cette section est utile si vous utilisez des périphériques Wi-Fi, |
| Si vous n' | Si vous n' | ||
| < | < | ||
| Ligne 185: | Ligne 180: | ||
| ==== La section File systems ==== | ==== La section File systems ==== | ||
| - | Cette section est vitale, il faut absolument que le support | + | Cette section est vitale, il faut absolument que la prise en charge |
| J' | J' | ||
| < | < | ||
| Ligne 198: | Ligne 194: | ||
| DOS/FAT/NT Filesystems | DOS/FAT/NT Filesystems | ||
| - | 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 mets en valeur : |
| ==== La section Devices Drivers ==== | ==== La section Devices Drivers ==== | ||
| Ligne 215: | Ligne 210: | ||
| === La section Parallel port support === | === La section Parallel port support === | ||
| - | Pour utiliser les [[http:// | + | Pour utiliser les [[https:// |
| 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 : | ||
| < | < | ||
| Ligne 223: | Ligne 218: | ||
| === La section ATA/ | === La section ATA/ | ||
| - | Si vous avez utilisé make defconfig, cette section devrait être bien configurée, | + | Si vous avez utilisé |
| == 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 251: | Ligne 245: | ||
| < | < | ||
| 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 282: | Ligne 275: | ||
| " | " | ||
| - | Tous les disques utilisés par le systèmes | + | Tous les disques utilisés par le système |
| === Support SATA === | === Support SATA === | ||
| Ligne 309: | Ligne 302: | ||
| Donc l' | Donc l' | ||
| - | |||
| ==== La section Network device support ==== | ==== La section Network device support ==== | ||
| Ligne 331: | Ligne 323: | ||
| / | / | ||
| - | Une petite recherche de 8139TOO vous donne l' | + | Une petite recherche de 8139TOO vous donne l' |
| - | Si vous avez une carte W-Fi je vous conseille d' | + | Si vous avez une carte Wi-Fi je vous conseille d' |
| < | < | ||
| [*] Network device support | [*] Network device support | ||
| Wireless LAN ---> | Wireless LAN ---> | ||
| [*] Wireless LAN (IEEE 802.11)</ | [*] Wireless LAN (IEEE 802.11)</ | ||
| - | |||
| - | |||
| ==== La section Graphic support ==== | ==== La section Graphic support ==== | ||
| - | Le framebuffer peut être intéressant | + | La vidéo-mémoire((ISO/ |
| - | Mais cette option n'est pas obligatoire. | + | |
| On travaille ici : | On travaille ici : | ||
| Ligne 361: | Ligne 350: | ||
| <*> Framebuffer Console support | <*> Framebuffer Console support | ||
| [*] | [*] | ||
| - | |||
| ===== 1,2,3 compilez ! ===== | ===== 1,2,3 compilez ! ===== | ||
| - | Votre kernel | + | Votre noyau doit être assez bien configuré pour pouvoir démarrer maintenant. On doit donc le compiler puis l' |
| - | Ici encore il y a plusieurs écoles, je vais d' | + | |
| 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 | + | - Placer le noyau construit dans /boot |
| - | - Configurer grub pour démarrer sur le nouveau | + | - Configurer grub pour démarrer sur le nouveau |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| ==== La méthode universelle ==== | ==== La méthode universelle ==== | ||
| Ligne 384: | Ligne 366: | ||
| make && make modules_install</ | make && make modules_install</ | ||
| - | On copie le kernel | + | On copie le noyau dans /boot : Vous pouvez lui donner le nom que vous voulez, ici l' |
| <note help>Ici i386 est à remplacer par votre architecture bien sûr</ | <note help>Ici i386 est à remplacer par votre architecture bien sûr</ | ||
| <code bash>cp arch/ | <code bash>cp arch/ | ||
| Ligne 391: | Ligne 373: | ||
| cp System.map / | cp System.map / | ||
| - | Ensuite | + | Ensuite |
| < | < | ||
| root (hd0,3) | root (hd0,3) | ||
| Ligne 401: | Ligne 383: | ||
| (hd0,3) doit correspondre à la partition qui contient /boot. Pour grub, hda1=(hd0, | (hd0,3) doit correspondre à la partition qui contient /boot. Pour grub, hda1=(hd0, | ||
| - | Vous pouvez bien sûr rajouter des options dans la ligne " | + | Vous pouvez bien sûr rajouter des options dans la ligne " |
| - | <note important> | + | <note important> |
| - | Un petit reboot | + | Un petit réamorçage |
| + | ==== La méthode " | ||
| - | + | Si vous êtes sous Debian (ou Ubuntu), il est plus malin de créer un paquet .deb pour installer votre noyau. | |
| - | ==== La Méthode " | + | |
| - | + | ||
| - | 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' | - Vous pouvez l' | ||
| - 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 | + | - Parce que c'est plus simple et que ça va rajouter automatiquement votre noyau dans / |
| - | Une seule commande | + | Une seule commande |
| <code bash>cd / | <code bash>cd / | ||
| make-kpkg --append-to-version " | make-kpkg --append-to-version " | ||
| - | Dans cette commande, vous pouvez personnaliser le nom de votre kernel | + | Dans cette commande, vous pouvez personnaliser le nom de votre noyau (" |
| - | Une fois que c'est fini, les paquets doivent | + | Une fois que c'est fini, le paquet doit être dans /usr/src et vous n'avez plus qu'à l' |
| < | < | ||
| - | Et voilà ! Grub est automatiquement mis à jour et votre kernel | + | Et voilà ! Grub est automatiquement mis à jour et votre noyau est disponible dans le menu de grub. Un petit réamorçage |
| - | Un petit reboot | + | |
| + | ===== Que faire en cas de mauvaise compilation ? ===== | ||
| - | ====== Que faire en cas de mauvaise compilation ? ====== | + | Si la compilation donne un noyau qui ne fonctionne pas bien, regardez les messages d' |
| - | Si la compilation donne un kernel qui ne fonctionne pas bien, regardez les messages d' | + | Puis recompilez votre noyau. Mais avant il faut supprimer les fichiers qui ont été créés |
| - | + | ||
| - | Puis recompilez votre kernel. Mais avant il faut supprimer les fichiers qui on été crées | + | |
| <code bash>cd / | <code bash>cd / | ||
| Ligne 443: | Ligne 421: | ||
| make-kpkg clean</ | make-kpkg clean</ | ||
| - | ====== Liens ====== | + | ===== Gestion des bugs ===== |
| - | | + | En cas de découverte d'un bug il faut commencer par une bissection.\\ |
| + | Voir : [[: | ||
| + | |||
| + | ===== Liens ===== | ||
| + | |||
| + | | ||
| * [[http:// | * [[http:// | ||
| - | * [[http://www.lea-linux.org/ | + | * [[https:// |
| - | * [[http:// | + | * [[http:// |
| * [[http:// | * [[http:// | ||
| * [[http:// | * [[http:// | ||
| - | |||
| --- | --- | ||
| - | Contributeurs : [[: | + | Contributeurs : [[: |
