Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:systeme:noyau:compiler [22/09/2013 23:31] 127.0.0.1 modification externe |
doc:systeme:noyau:compiler [11/10/2015 18:59] milou [Compiler un noyau] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Compiler un noyau ====== | ====== Compiler un noyau ====== | ||
+ | |||
+ | |||
+ | * Objet : Compiler un noyau | ||
+ | * Niveau requis : {{tag>avisé}} | ||
+ | * Commentaires : //Compiler un noyau signifie de traduire le code d'un noyau (kernel). // | ||
+ | * Suivi : {{tag>à-tester}} | ||
+ | * Création par [[user>neo]] le 17-05-2010 | ||
+ | * Testé par <...> le <...> | ||
+ | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=2600 | Lien vers le forum concernant ce tuto]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
+ | |||
+ | |||
+ | |||
+ | ===== Introduction ===== | ||
Compiler un noyau, cela signifie de traduire le code d'un noyau (kernel) dans un langage interprétable par le processeur. | Compiler un noyau, cela signifie de traduire le code d'un noyau (kernel) dans un langage interprétable par le processeur. | ||
Ligne 25: | Ligne 38: | ||
===== Installer le nécessaire à la compilation du noyau. ===== | ===== Installer le nécessaire à la compilation du noyau. ===== | ||
- | # apt-get update | + | <code root>apt-get update</code> |
- | puis | + | |
- | # apt-get install build-essential fakeroot kernel-package libncurses5-dev | + | puis |
+ | <code root>apt-get install build-essential fakeroot kernel-package libncurses5-dev</code> | ||
Il faut maintenant installer le paquet du noyau que l'on veut compiler, si vous avez plusieurs dépôts, utiliser apt-cache search linux-source, pour voir les différentes version disponible, puis installer. | Il faut maintenant installer le paquet du noyau que l'on veut compiler, si vous avez plusieurs dépôts, utiliser apt-cache search linux-source, pour voir les différentes version disponible, puis installer. | ||
- | {{http://images.debian-facile.org/manuel/searchn.png|}} | + | {{/manuel/searchn.png|}} |
- | {{http://images.debian-facile.org/manuel/installn.png|}} | + | {{/manuel/installn.png|}} |
L'archive linux-source s'installe par défaut dans /usr/src. | L'archive linux-source s'installe par défaut dans /usr/src. | ||
Ligne 43: | Ligne 57: | ||
Le nécessaire est installé, on va maintenant créer un répertoire nommé compil dans /home et s'y placer pour décompresser l'archive du noyau. | Le nécessaire est installé, on va maintenant créer un répertoire nommé compil dans /home et s'y placer pour décompresser l'archive du noyau. | ||
- | $ mkdir compil && cd compil | + | <code user>mkdir compil && cd compil</code> |
Puis, une fois dans le répertoire compil, décompressez l'archive se trouvant dans /usr/src | Puis, une fois dans le répertoire compil, décompressez l'archive se trouvant dans /usr/src | ||
- | $ tar xvf /usr/src/linux-source-2.6.24-rc5.tar.bz2 | + | <code user>tar xvf /usr/src/linux-source-2.6.24-rc5.tar.bz2</code> |
- | {{http://images.debian-facile.org/manuel/mkd.png|}} | + | {{/manuel/mkd.png|}} |
Puis, rendez-vous dans le dossier décompressé | Puis, rendez-vous dans le dossier décompressé | ||
- | $ cd linux-source-2.6.24-rc5 \\ | + | <code user>cd linux-source-2.6.24-rc5</code> |
- | {{http://images.debian-facile.org/manuel/cdlin.png|}} | + | {{/manuel/cdlin.png|}} |
Nous allons maintenant copier le fichier .config de votre noyau actuel se trouvant dans le répertoire /boot | Nous allons maintenant copier le fichier .config de votre noyau actuel se trouvant dans le répertoire /boot | ||
- | $ cp /boot/config-$(uname -r) .config | + | <code user>cp /boot/config-$(uname -r) .config</code> |
Saisissez la commande: | Saisissez la commande: | ||
- | $ make oldconfig | + | <code user>make oldconfig</code> |
Cette commande permet d'adapter une configuration d'une précédente version du noyau à une nouvelle en vous posant des questions sur les nouvelles fonctionnalités à configurer au besoin. | Cette commande permet d'adapter une configuration d'une précédente version du noyau à une nouvelle en vous posant des questions sur les nouvelles fonctionnalités à configurer au besoin. | ||
Répondez aux questions, les lettres en majuscules sont les réponses conseillées, si vous hésitez, répondez par ''y'' pour ''yes'' vous pourrez toujours revenir à ces options. | Répondez aux questions, les lettres en majuscules sont les réponses conseillées, si vous hésitez, répondez par ''y'' pour ''yes'' vous pourrez toujours revenir à ces options. | ||
- | |||
- | {{http://michelro.free.fr/cmdblog/oldconf.png?200x200}} | ||
===== Configuration du noyau ===== | ===== Configuration du noyau ===== | ||
Ligne 75: | Ligne 87: | ||
Une fois terminé, vous pouvez lancer l'utilitaire de configuration du noyau : | Une fois terminé, vous pouvez lancer l'utilitaire de configuration du noyau : | ||
- | $ make menuconfig | + | <code user>make menuconfig</code> |
Vous pouvez faire le tour des options à configurer, vous pouvez vous aidez de ce site | Vous pouvez faire le tour des options à configurer, vous pouvez vous aidez de ce site | ||
* [[http://casteyde.christian.free.fr/system/linux/guide/online/a12863.html|Options du noyau]] | * [[http://casteyde.christian.free.fr/system/linux/guide/online/a12863.html|Options du noyau]] | ||
- | Pour personnaliser votre noyau. L'activation ou désactivation d'options se fait via la touche ''[espace]'' de votre clavier et le déplacement avec les flèches de direction. | + | Pour personnaliser votre noyau. L'activation ou désactivation d'options se fait via la touche <key>Espace</key> de votre clavier et le déplacement avec les flèches de direction. |
- si < > --> l'option sera désactivée. | - si < > --> l'option sera désactivée. | ||
- si <*> --> l'option sera compilée en dur. | - si <*> --> l'option sera compilée en dur. | ||
- si <M> --> l'option sera configurée en module. | - si <M> --> l'option sera configurée en module. | ||
- | Si vous connaissez bien votre matèriel, mettez en dur les options concernant votre matèriel, il suffit ensuite de sélectionner : | + | Si vous connaissez bien votre matériel, mettez en dur les options le concernant, il suffit ensuite de sélectionner : |
Save an Alternate Configuration File | Save an Alternate Configuration File | ||
Validez --> Validez ''OK'' --> Validez ''exit'' | Validez --> Validez ''OK'' --> Validez ''exit'' | ||
- | |||
- | {{http://michelro.free.fr/cmdblog/menuconf.png?150x100}} {{http://michelro.free.fr/cmdblog/menuconf2.png?150x100}} {{http://michelro.free.fr/cmdblog/menuconf3.png?150x100}} {{http://michelro.free.fr/cmdblog/menuconf4.png?150x100}} | ||
===== Créations des paquets kernel_image et kernel_headers ===== | ===== Créations des paquets kernel_image et kernel_headers ===== | ||
Ligne 95: | Ligne 105: | ||
Pour rappel, ''kernel_headers'' (ou, une fois installé, ''linux-headers-2.6.24'') permet de construire des modules pour le pilote graphique ou autres pilotes via module-assistant. | Pour rappel, ''kernel_headers'' (ou, une fois installé, ''linux-headers-2.6.24'') permet de construire des modules pour le pilote graphique ou autres pilotes via module-assistant. | ||
- | $ fakeroot make-kpkg --initrd --append-to-version=-perso kernel_image kernel_headers | + | <code user>fakeroot make-kpkg --initrd --append-to-version=-perso kernel_image kernel_headers</code> |
Vous pouvez changer ''-perso'' par autre chose, cette option se rajoute à la fin du nom du noyau --> | Vous pouvez changer ''-perso'' par autre chose, cette option se rajoute à la fin du nom du noyau --> | ||
linux-image-2.6.24-rc5-perso | linux-image-2.6.24-rc5-perso | ||
- | |||
- | |||
- | |||
Ligne 112: | Ligne 119: | ||
Editer le fichier ''/etc/kernel-pkg.conf'' : | Editer le fichier ''/etc/kernel-pkg.conf'' : | ||
- | # nano /etc/kernel-pkg.conf | + | <code root>nano /etc/kernel-pkg.conf</code> |
Et ajouter à la fin : | Et ajouter à la fin : | ||
Ligne 131: | Ligne 138: | ||
Si vous n'avez pas ajouter ''ROOT_CMD=fakeroot'', saisissez la commande : | Si vous n'avez pas ajouter ''ROOT_CMD=fakeroot'', saisissez la commande : | ||
- | $ fakeroot make-kpkg --us --uc --initrd --append-to-version=-perso buildpackage | + | <code user>fakeroot make-kpkg --us --uc --initrd --append-to-version=-perso buildpackage</code> |
Si vous avez ajoutez ROOT_CMD=fakeroot, saisissez la commande : | Si vous avez ajoutez ROOT_CMD=fakeroot, saisissez la commande : | ||
- | $ make-kpkg --us --uc --initrd --append-to-version=-perso buildpackage | + | <code user>make-kpkg --us --uc --initrd --append-to-version=-perso buildpackage</code> |
Et validez. | Et validez. | ||
Ligne 143: | Ligne 150: | ||
===== Installation des paquets .deb ===== | ===== Installation des paquets .deb ===== | ||
- | Lorsque la compilation est terminé, vous pouvez installer les paquets ''.deb'' créés dans le répertoire ''~/compil'' | + | Lorsque la compilation est terminée, vous pouvez installer les paquets ''.deb'' créés dans le répertoire ''~/compil'' |
Pour revenir dans le répertoire ''compil'', saisissez : | Pour revenir dans le répertoire ''compil'', saisissez : | ||
- | $ cd .. | + | <code user>cd ..</code> |
Vous y trouverez les paquets ".deb" créés. | Vous y trouverez les paquets ".deb" créés. | ||
- | Vous pouvez maintenant passez en ''root'' pour les installer avec la commande ''dpkg -i'' . | + | Vous pouvez maintenant passer en ''root'' pour les installer avec la commande ''dpkg -i'' . |
- | + | ||
- | {{http://michelro.free.fr/cmdblog/instnoyau.png?200x150}} | + | |
===== Nettoyage avant une seconde compilation ===== | ===== Nettoyage avant une seconde compilation ===== | ||
Ligne 157: | Ligne 162: | ||
Si vous recompilez une deuxième fois le noyau, __pour nettoyer le répertoire__ et effacer les fichiers créés par la précédente compilation, pensez à exécuter cette commande (avec ou sans ''fakeroot'' selon l'astuce précédente) : | Si vous recompilez une deuxième fois le noyau, __pour nettoyer le répertoire__ et effacer les fichiers créés par la précédente compilation, pensez à exécuter cette commande (avec ou sans ''fakeroot'' selon l'astuce précédente) : | ||
- | $ fakeroot make-kpkg clean | + | <code user>fakeroot make-kpkg clean</code> |
N'oubliez pas le ''man'' en ligne de commandes pour voir les différentes options : | N'oubliez pas le ''man'' en ligne de commandes pour voir les différentes options : | ||
- | $ man make-kpkg | + | <code user>man make-kpkg</code> |
===== Option --initrd ===== | ===== Option --initrd ===== | ||
Ligne 180: | Ligne 185: | ||
Merci à : \\ | Merci à : \\ | ||
- | ''engil''// pour sa relecture et ses suggestions/rectifications généreuses, ainsi que pour le procédé de configuration afin d'accélérer la compilation finale !// \\ | + | ''engil''// pour sa relecture et ses suggestions/rectifications généreuses, ainsi que pour le procédé de configuration afin d'accélérer la compilation finale !// \\ |
- | ''juddix''// pour ses suggestions avisées,// \\ | + | |
+ | ''juddix''// pour ses suggestions avisées,// \\ | ||
+ | |||
''captnfab''// pour son aide toujours claire !// \\ | ''captnfab''// pour son aide toujours claire !// \\ |