Différences
Ci-dessous, les différences entre deux révisions de la page.
| doc:custom_kernel [Le 21/11/2006, 13:09] – Modif titre ostaquet | doc:custom_kernel [Le 21/11/2006, 13:21] (Version actuelle) – Déplacée ostaquet | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | < | ||
| - | Version Hoary | ||
| - | </ | ||
| - | [[https:// | ||
| - | |||
| - | |||
| - | ====== Personnaliser son kernel ou comment compiler un kernel sur mesure ? ====== | ||
| - | |||
| - | **Attention** : //Cet article n'est plus valable pour dapper et edgy. Il necessite une nouvelle traduction l' | ||
| - | |||
| - | note du traducteur: //kernel// ici signifie //noyau// en français, je n'ai pas traduit ce mot car beaucoup d' | ||
| - | |||
| - | ===== Comment installer un kernel Linux personnalisé ===== | ||
| - | Le kernel Linux est le coeur du système d' | ||
| - | |||
| - | ===== Préparation ===== | ||
| - | Vous aurez besoin des paquets // | ||
| - | < | ||
| - | sudo apt-get install build-essential fakeroot kernel-package | ||
| - | </ | ||
| - | les kernels se font dans le dossier /// | ||
| - | < | ||
| - | sudo adduser < | ||
| - | </ | ||
| - | en remplacant < | ||
| - | < | ||
| - | su < | ||
| - | | ||
| - | user src audio adm dialout cdrom floppy video plugdev lpadmin | ||
| - | </ | ||
| - | //groups// listera tous les groupes dans lesquels vous êtes, //src// doit normalement apparaitre dans la liste. Si vous vous êtes logué dans votre session bash par un nouveau //su// la commande //exit// en tant que user fermera cette nouvelle session et vous redonnera l' | ||
| - | |||
| - | ===== Obtenir les sources ===== | ||
| - | Cherchez les sources du kernel que vous souhaitez avec: | ||
| - | < | ||
| - | | ||
| - | </ | ||
| - | Choisissez la version des sources du kernel que vous désirez. | ||
| - | ***Question**: | ||
| - | |||
| - | Le paquet // | ||
| - | |||
| - | Téléchargez les sources du kernel : (ici nous utilisons la version par defaut installée avec Ubuntu Hoary 2.6.10-5) | ||
| - | < | ||
| - | sudo apt-get install linux-source-2.6.10 | ||
| - | </ | ||
| - | Il va probablement vous proposer d' | ||
| - | (Pour se servir toutefois de gconfig, il est nécessaire d' | ||
| - | |||
| - | Les sources vont êtres téléchargées et installées dans /// | ||
| - | |||
| - | ===== Dépaqueter les sources ===== | ||
| - | |||
| - | Je vais prendre le kernel 2.6.10 comme exemple, c'est la version installée avec Ubuntu Hoary | ||
| - | < | ||
| - | cd /usr/src | ||
| - | ls -l | ||
| - | linux-source-2.6.10.tar.bz2 | ||
| - | </ | ||
| - | Si vous voyez un lien nommé //linux// pointant sur les sources d'un ancien kernel supprimez le. | ||
| - | < | ||
| - | rm linux | ||
| - | </ | ||
| - | Attention: ne decompressez pas les sources tant que ce lien existe. Si les sources sont décompressées dans le répertoire des anciennes, la compilation ne marchera pas. | ||
| - | |||
| - | Et décompressez l' | ||
| - | < | ||
| - | tar jxvf linux-source-2.6.10.tar.bz2 | ||
| - | </ | ||
| - | pour en savoir plus sur la commande tar c'est [[http:// | ||
| - | |||
| - | Cela devrait créer un dossier // | ||
| - | |||
| - | Créez un lien symbolique nommé linux vers le dossier des sources | ||
| - | < | ||
| - | ln -s linux-source-2.6.10 linux | ||
| - | </ | ||
| - | Vérifiez que tout est en ordre. Vous devriez obtenir quelque chose comme ça : | ||
| - | < | ||
| - | ls -F | ||
| - | linux@ | ||
| - | </ | ||
| - | |||
| - | ===== Configurer le kernel ===== | ||
| - | Pour configurer votre kernel, vous disposez de plusieurs interfaces possibles, vous pourrez y accéder en utilisant l'une de ces options derrière //make//: | ||
| - | * //xconfig// en qt | ||
| - | * //gconfig// en gtk | ||
| - | * // | ||
| - | * //config// en text | ||
| - | |||
| - | Choisissez en une à votre goût, puis rendez vous dans le dossier /// | ||
| - | < | ||
| - | cd ./linux | ||
| - | </ | ||
| - | |||
| - | Et lancez-la. | ||
| - | |||
| - | Par exemple pour lancer l' | ||
| - | < | ||
| - | make xconfig | ||
| - | </ | ||
| - | Note : si vous avez un message d' | ||
| - | < | ||
| - | apt-get install build-essential bin86 kernel-package | ||
| - | apt-get upgrade | ||
| - | apt-get install libqt3-headers libqt3-mt-dev | ||
| - | </ | ||
| - | |||
| - | Si vous n' | ||
| - | < | ||
| - | make menuconfig | ||
| - | </ | ||
| - | |||
| - | Il existe deux façons d' | ||
| - | * en //dur// c'est à dire que l' | ||
| - | * en //module// l' | ||
| - | Mettre une option en module permet d' | ||
| - | |||
| - | Toute votre configuration sera sauvegardé dans /// | ||
| - | |||
| - | Connaitre les composants exacts de sa machine n'est pas toujours facile (surtout si ce n'est pas votre machine), pensez à utiliser des commandes comme //lspci//, //lshw//, //lspnp//, //lsusb//, //lsmod//, etc... Elles vous seront d'un grand secours pour savoir quels sont les chipset que vous utilisez et quels sont les modules qui sont chargés. | ||
| - | |||
| - | ===== Compiler votre kernel ===== | ||
| - | |||
| - | ==== make-kpkg ==== | ||
| - | Pour faire la nouvelle image du kernel nous allons utiliser " | ||
| - | < | ||
| - | make-kpkg < | ||
| - | </ | ||
| - | Nous utiliserons // | ||
| - | |||
| - | Examinons quelques options importantes et couramment utilisées. | ||
| - | |||
| - | === --append-to-version === | ||
| - | La première option vous permet de rajouter quelque chose à la version du kernel. Vous pouvez utiliser des caractères alphanumériques et les caractères " | ||
| - | |||
| - | Voila la version du kernel que j' | ||
| - | < | ||
| - | uname -r | ||
| - | 2.6.10-5-k7 | ||
| - | </ | ||
| - | Vous devriez éviter d' | ||
| - | |||
| - | Les modules du kernel se trouvent dans /// | ||
| - | |||
| - | Cela signifie qu'en utilisant une nouvelle valeur pour --append-to-version à chaque nouvelle recompilation, | ||
| - | |||
| - | Si vous installez un kernel avec le même nom (même version et --append-to-version) qu'un kernel déjà présent, le paquet du nouveau kernel écrasera l' | ||
| - | |||
| - | === --revision === | ||
| - | Une autre option de make-kpkg est " | ||
| - | |||
| - | Puisque --revision n' | ||
| - | |||
| - | === --initrd === | ||
| - | Cette option crée un fichier //initrd// qui permet d' | ||
| - | Vous aurez besoin de ces deux packages pour utiliser cette option: | ||
| - | < | ||
| - | apt-get install cramfsprogs initrd-tools | ||
| - | </ | ||
| - | |||
| - | ==== Nom de paquets du kernel ==== | ||
| - | Les paquets contenant les images kernels (c'est à dire le résultat d'une compilation de source du kernel) avec Debian sont de la forme: | ||
| - | |||
| - | // | ||
| - | |||
| - | Le nom du paquet est toute la partie précédent le premier underscore: | ||
| - | < | ||
| - | ls | ||
| - | kernel-image-2.6.10.181004_10.00.Custom_i386.deb | ||
| - | </ | ||
| - | Maintenant vous comprenez pourquoi les underscores ne sont pas autorisés avec make-kpkg: ils séparent les éléments du nom du paquet. | ||
| - | |||
| - | Je vous recommande d' | ||
| - | |||
| - | N' | ||
| - | |||
| - | ==== Fakeroot ==== | ||
| - | Lorsque vous vous êtes ajouté au groupe //src//, vous avez rendu possible à votre utilisateur de faire la plus grande partie du paquetage du kernel possible. Cependant les fichiers qui font partie d'un paquet du kernel (comme le kernel ou ses modules) doivent appartenir au root et être executés avec des droits root, ils doivent donc être crées avec des droits root. | ||
| - | |||
| - | En utilisant fake-root vous pourrez lancer make-kpkg en tant que simple utilisateur, | ||
| - | |||
| - | Les pages du manuel de make-kpkg proposent une façon de l' | ||
| - | < | ||
| - | fakeroot make-kpkg < | ||
| - | </ | ||
| - | |||
| - | ==== Faire l' | ||
| - | Finalement ! Vous êtes fin prêt à créer votre paquet | ||
| - | < | ||
| - | | ||
| - | </ | ||
| - | Puis: | ||
| - | < | ||
| - | | ||
| - | </ | ||
| - | Maintenant tout ce qu'il vous reste à faire, c'est d' | ||
| - | |||
| - | |||
| - | ===== Installer le paquet kernel-image ===== | ||
| - | Une fois le kernel compilé, vous devez installer le paquet kernel-image, | ||
| - | < | ||
| - | cd .. | ||
| - | ls -1 | ||
| - | kernel-image-2.6.10.181004_10.00.Custom_i386.deb | ||
| - | linux | ||
| - | linux-source-2.6.10 | ||
| - | linux-source-2.6.10.tar.bz2 | ||
| - | </ | ||
| - | Il est là! | ||
| - | |||
| - | Pour installer le kernel et tous ses modules: | ||
| - | < | ||
| - | sudo dpkg -i kernel-image-2.6.10.181004_10.00.Custom_i386.deb | ||
| - | </ | ||
| - | Pour installer le paquet kernel-image depuis votre disque dur, vous devez spécifier le nom exact du paquet. Pensez à utiliser l' | ||
| - | |||
| - | Si tout s'est bien passé, tout ce qu'il vous reste à faire maintenant c'est de redémarrer. Si votre nouveau kernel ne démarre pas, relancez l' | ||
| - | |||
| - | ===== Mettre en place le reste ===== | ||
| - | |||
| - | ==== Garder ce kernel ! ==== | ||
| - | Si vous avez utilisé --append-to-version vous n'avez pas besoin de vous inquiéter qu' | ||
| - | < | ||
| - | echo " | ||
| - | </ | ||
| - | Bien sûr utilisez le nom du paquet que vous voulez garder (il faut qu'il soit installé ou connu de la liste de dpkg). Vérifiez que le paquet soit bien marqué en " | ||
| - | < | ||
| - | dpkg --get-selections | grep kernel-image | ||
| - | | ||
| - | </ | ||
| - | ==== Supprimer les liens symboliques ==== | ||
| - | Ensuite vous devriez vous occuper des liens symboliques créés dans le répertoire /// | ||
| - | - La prochaine fois que vous téléchargerez un kernel, ce ne sera peut-être pas un paquet //.deb//. Lorsque vous le décompresserez il se peut qu'il écrase vos anciennes sources à cause du lien. | ||
| - | - La prochaine fois que vous téléchargerez les sources du kernel en //.deb//, vous allez peut-être décompresser les sources sans problème, puis les compiler en oubliant que //linux// pointait sur vos anciennes sources. | ||
| - | - Lorsque vous téléchargez des patchs ou d' | ||
| - | |||
| - | Pour supprimer le lien faites: | ||
| - | < | ||
| - | rm linux | ||
| - | </ | ||
| - | |||
| - | ==== Sauvegarder votre kernel ==== | ||
| - | C'est toujours une bonne idée de garder le //.deb// de votre kernel. Copiez-le dans un endroit sûr à l'abri | ||
| - | |||
| - | {!}Une fois votre kernel empaqueté, vous pouvez l' | ||
| - | |||
| - | ==== Faire une nouvelle disquette de démarrage ==== | ||
| - | Si vous souhaitez créer une disquette de démarrage avec votre nouveau kernel, il vous suffit de vous munir d'une disquette et de taper: | ||
| - | < | ||
| - | cd /boot | ||
| - | | ||
| - | </ | ||
| - | |||
| - | ==== Compiler votre prochain kernel ==== | ||
| - | Si vous voulez recompiler votre kernel, parce que vous vous êtes acheté une nouvelle carte son par exemple, ou si vous aviez oublié de mettre un système de fichier que vous souhaitez utiliser maintenant. Tout ce que vous avez à faire est de relancez la configuration puis, une fois les modifications faites, le recompiler avec un nouveau --append-to-version. Votre session devrait ressembler à ça: | ||
| - | < | ||
| - | cd /usr/src | ||
| - | ln -s linux-source-2.6.10 linux | ||
| - | cd linux | ||
| - | make xconfig # | ||
| - | | ||
| - | | ||
| - | </ | ||
| - | |||
| - | ==== Utiliser une configuration existante ==== | ||
| - | Lorsque vous avez installé votre kernel sa configuration a été copiée dans / | ||
| - | |||
| - | Supposons que la semaine dernière vous avez courageusement exploré l' | ||
| - | |||
| - | Téléchargez et décompressez la nouvelle archive des sources dans /// | ||
| - | < | ||
| - | cp / | ||
| - | make oldconfig | ||
| - | </ | ||
| - | On vous demandera si vous voulez activer ou non les nouvelles options. En général il est plus sûr de répondre non, sauf si vous voulez justement essayer une nouveauté. | ||
| - | |||
| - | Après avoir fini le //make oldconfig// vous pouvez relancer un //make xconfig// si vous n' | ||
| - | |||
| - | Enfin, lancez la compilation des dernières sources avec votre configuration. | ||
| - | |||
| - | |||
| - | ===== Checklist ===== | ||
| - | - Prévoir une disquette de démarrage, ou un ancien kernel démarrable avec grub | ||
| - | - Installer les paquets nécessaires | ||
| - | - '' | ||
| - | - '' | ||
| - | - '' | ||
| - | - Préparer l' | ||
| - | - s' | ||
| - | - enlever les vieux liens symboliques | ||
| - | - décompresser les sources du kernel | ||
| - | - faire le nouveau lien symbolique | ||
| - | - Configurer le kernel | ||
| - | - utiliser '' | ||
| - | - '' | ||
| - | - sauvegarder le fichier '' | ||
| - | - Compiler le paquet '' | ||
| - | - '' | ||
| - | - '' | ||
| - | - Installer le paquet kernel-image | ||
| - | - '' | ||
| - | - Redémarrer | ||
| - | - Et ensuite ? | ||
| - | - Garder votre paquet avec '' | ||
| - | - Supprimer les liens symboliques | ||
| - | - Sauvegarder la nouvelle image du kernel | ||
| - | - Supprimer les anciens paquets kernel-image | ||
| - | - Faire une nouvelle disquette de démarrage | ||
