Différences

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

Lien vers cette vue comparative

doc:kernel_personnalise [Le 21/11/2006, 13:14]
ostaquet Déplacée dans les tutoriels
— (Version actuelle)
Ligne 1: Ligne 1:
-//(Cette page est une traduction inspirée de https://​wiki.ubuntu.com/​KernelCustomBuild par [[utilisateurs:​mr_pouit]])//​ 
  
-=====Versions concernées===== 
- 
-   * Edgy 6.10 
-   * Pour les versions précédentes,​ utilisez [[doc:​custom_kernel]] 
- 
-=====Introduction===== 
- 
-Dans la suite de ce didacticiel,​ le mot "​kernel",​ qui signifie "​noyau",​ est utilisé car beaucoup d"​entre vous l'ont entendu, ou l'​entendront sûrement au milieu d'une conversation en français. 
- 
-====Avertissement==== 
- 
-Compiler et utiliser un kernel personnalisé va rendre compliqué le support pour votre système. Vous ne serez pas autorisé à rapporter des bogues pour votre kernel personnalisé (ils seront rejetés sans explication). 
- 
-Si vous avez un contrat de support commercial avec Ubuntu/​Canonical,​ ceci rendra ce support caduque. 
- 
-Notez par ailleurs que cette page décrit comment procéder pour le kernel d'Edgy (2.6.17) ou ultérieur ! Les versions précédentes ne comprenaient pas, intentionnellement,​ un tel mécanisme permettant de compiler aisément son propre noyau. 
- 
-Cette page **ne** décrit **pas** comment compiler les kernels provenant de kernel.org. Elle est destinée aux sources du kernel Ubuntu. 
- 
-====Bonnes raisons de compiler un kernel personnalisé==== 
- 
-   * Vous êtes un développeur du kernel. 
-   * Vous avez besoin de compiler d'une façon spéciale, que le kernel officiel n'​offre pas (par exemple, pour activer des fonctionnalités expérimentales). 
-   * Vous essayez de déboguer un problème pour lequel vous avez ou allez remplir un rapport de bug à propos du kernel officiel Ubuntu. 
- 
-====Mauvaises raisons de compiler un kernel personnalisé==== 
- 
-   * Vous avez à tout prix besoin de compiler un pilote spécial. Pour cela, il faut vous faut seulement installer les paquets linux-headers. 
-   * Vous n'avez pas la moindre idée de ce que vous faites, et si vous cassez quelque chose, vous aurez besoin d'aide pour réparer. Si vous  détruisez votre système, réinstallez-le. N'​ennuyez pas en demandant de l'​aide. 
-   * Vous avez atterri sur cette page par erreur, mais vous la lisez car elle semble intéressante. Ce n'est pas intéressant du tout, croyez-moi. :) 
- 
-=====Prérequis==== 
- 
-Pour commencer, il faut installer quelques paquets : 
-<​code>​ 
-sudo apt-get install linux-kernel-devel fakeroot kernel-wedge kernel-package 
-</​code>​ 
-Cela va installer les outils relatifs à la compilation et l'​empaquetage du kernel. Le paquet **git-core**,​ qui est le meilleur moyen pour interagir avec les sources du kernel Ubuntu, sera aussi installé. 
- 
-=====Téléchargement des sources===== 
- 
-Il y a deux moyens pour obtenir les sources du kernel Ubuntu. Idéalement,​ il faudrait utiliser **git**. Les instructions détaillées pour l'​utiliser sont disponibles sur [[doc:​guide_kernelgit]]. 
- 
-La seconde méthode est plus simple : 
-<​code>​ 
-sudo apt-get install linux-source-2.6.17 
-</​code>​ 
- 
-Cependant, ce ne sera pas toujours à jour. L'​utilisation de **git** vous permet de toujours rester avec la dernière version des sources du kernel Ubuntu. 
- 
- 
-=====Adaptation des sources à vos besoins===== 
- 
-Pour la majorité des gens, modifier seulement les fichiers de configuration suffira. Si vous devez appliquer un patch, lisez les instructions données par le fournisseur du patch. 
- 
-Les configurations "​officielles"​ Ubuntu se trouvent dans //​debian/​config/​ARCH///,​ où //ARCH// désigne l'​architecture pour laquelle vous compilez. Plusieurs fichiers sont présents dans ce répertoire. Le fichier //config// est la base pour toutes les cibles de cette architecture. Ensuite, les nombreux fichiers //​config.FLAVOUR//​ contiennent des options spécifiques à chaque cible. Par exemple, voici les fichiers pour le kernel 2.6.17, et l'​architecture i386 : 
-<​code>​ 
-$ ls -l debian/​config/​i386/​ 
-total 88 
--rw-r--r-- 1 me me 62737 Jun 14 18:31 config 
--rw-r--r-- 1 me me 1859 Jun 12 14:59 config.386 
--rw-r--r-- 1 me me 1394 Jun 12 14:59 config.686 
--rw-r--r-- 1 me me 1420 Jun 12 14:59 config.k7 
--rw-r--r-- 1 me me 1519 Jun 12 14:59 config.server 
--rw-r--r-- 1 me me 1867 Jun 12 14:59 config.server-bigiron 
-</​code>​ 
-Si vous devez changer une option de configuration,​ modifier simplement le fichier contenant l'​option. Si vous éditez le fichier //config//, les changements affecteront toutes les architectures. Si vous modifiez un des fichiers cible, seule la cible sera affectée. 
- 
-**Note**: ​ Si aucun fichier n'est présent, vous pouvez en trouver dans le répertoire ///boot//. Par exemple: 
-<​code>​ 
-$ ls -l /boot | grep config 
--rw-r--r-- 1 root root   69733 2006-08-03 05:10 config-2.6.15-26-686 
--rw-r--r-- 1 root root   69759 2006-08-03 05:36 config-2.6.15-26-k7 
-</​code>​ 
- 
-Suite à l'​application d'un patch ou l'​ajout d'une option, il est préférable de régénérer les fichiers de configuration. Il y a un "​assistant"​ pour cela. Pour régénérer toutes les architectures,​ exécutez : 
-<​code>​ 
-debian/​rules updateconfigs 
-</​code>​ 
- 
-Si vous voulez mettre à jour une architecture seulement, exécutez : 
-<​code>​ 
-debian/​bin/​oldconfig ARCH 
-</​code>​ 
- 
- 
- 
-=====Compilation du kernel===== 
- 
-La compilation du noyau est une étape très simple. Selon vos besoins, vous pouvez vouloir compiler toutes les cibles, ou seulement celle spécifique à votre système. Cependant, vous désirez aussi vous assurez que ce que vous faites n'​entre pas en conflit avec le kernel officiel. 
- 
-Utilisez la commande suivante pour contruire toutes les cibles de l'​architecture pour laquelle vous compilez : 
-<​code>​ 
-AUTOBUILD=1 fakeroot debian/​rules binary-debs 
-</​code>​ 
- 
-La variable d'​environnement //​AUTOBUILD//​ déclenche des fonctionnalités spéciales pendant la compilation du kernel. Premièrement,​ cela n'​effectue pas les vérifications normales d'ABI (l'ABI est la compatibilité binaire). Cela est rendu possible par le fait qu'un unique identifiant d'ABI (ABI ID) est créé. Si vous utilisez le depôt **git**, cet identifiant est généré depuis le //git HEAD SHA//. Sinon, il est généré à l'aide du programme //uuidgen// (ce qui signifie qu'à chaque exécution de la construction avec //​debian/​rules//,​ l'​identifiant sera différent !). Le paquet créé sera nommé à l'aide de cet identifiant. 
- 
-Pour construire une cible spécifique,​ utilisez la commande suivante : 
-<​code>​ 
-AUTOBUILD=1 fakeroot debian/​rules binary-debs flavours=k7 
-</​code>​ 
-Ceci aura pour effet de ne compiler que la variante AMD k7 de l'​architecture i386. 
- 
-=====Installation===== 
- 
-Les paquets ainsi générés sont placés dans //​ubuntu-2.6/​debian/​build//​. 
-Maitenant que la construction a réussi, vous pouvez installer les paquets à l'aide de dpkg : 
-<​code>​ 
-sudo dpkg -i linux-image-2.6.17-2-ef427c-k7_2.6.17-2.2_i386.deb 
-sudo dpkg -i linux-headers-2.6.17-2-ef427c-k7_2.6.17-2.2_i386.deb 
-</​code>​ 
- 
-**Note :** Si vous utilisez les modules du paquets //​linux-restricted-modules//,​ il sera nécessaire de les recompiler en utilisant votre nouveau paquet //​linux-headers//​. Des détails sur cette manipulations seront ajoutés ultérieurement 
  • doc/kernel_personnalise.1164111249.txt.gz
  • Dernière modification: Le 21/11/2006, 13:14
  • par ostaquet