debian:debian_compilation_noyau
no way to compare when less than two revisions
Différences
Ci-dessous, les différences entre deux révisions de la page.
— | debian:debian_compilation_noyau [2018/11/17 12:52] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | =====Debian : Compiler un noyau avec " | ||
+ | Il y a de nombreuses raisons de vouloir compiler son noyau, de la simple curiosité pour cet élément central du système gnu/linux au besoin plus technique d' | ||
+ | |||
+ | < | ||
+ | Les touches utilisées sont indiquées entre crochets, exemple **[ctrl]** pour la touche " | ||
+ | |||
+ | ====Récupérer les sources du noyau==== | ||
+ | |||
+ | Ça paraîtra une évidence à certains, mais pour compiler un noyau il faut posséder ses sources. Vous pouvez récupérer facilement les sources fournies par Debian en installant le paquet " | ||
+ | Si vous êtes aventureux, ou avez besoin des derniers pilotes pour votre matériel, vous pouvez récupérer les sources du noyau Debian en cours de développement. Il suffit d' | ||
+ | |||
+ | < | ||
+ | deb http:// | ||
+ | deb-src http:// | ||
+ | |||
+ | Ce dépôt a une priorité très basse, pour installer un paquet qui s'y trouve il faut le demander explicitement. Aucun risque de voir votre noyau courant mis à jour avec un paquet en provenance de " | ||
+ | |||
+ | Les noyaux Debian font l' | ||
+ | Attention aux sources dont la version contient le suffixe " | ||
+ | |||
+ | ====Installer les bons outils==== | ||
+ | |||
+ | En dehors des sources, vous aurez besoin de :\\ | ||
+ | |||
+ | * **kernel-package**\\ | ||
+ | * **build-essential** (ce paquet provoquera à lui seul l' | ||
+ | * **fakeroot** (facultatif, | ||
+ | * **bzip2**\\ | ||
+ | * **libncurse5-dev** (pour " | ||
+ | * libqt3-mt-dev (pour " | ||
+ | * libglib2.0-dev, | ||
+ | | ||
+ | Les autres paquets nécessaires seront installés automatiquement à titre de dépendances.\\ | ||
+ | | ||
+ | Le paquet " | ||
+ | Si vous procédez de cette manière les droits root ne seront nécessaires que pour installer le(s) paquet(s) créé(s).\\ | ||
+ | Ici nous effectuons la compilation dans /usr/src, j' | ||
+ | |||
+ | < | ||
+ | $ newgrp src</ | ||
+ | |||
+ | Remplacez " | ||
+ | | ||
+ | ===Configuration de " | ||
+ | | ||
+ | Si vous opérez sur Debian " | ||
+ | | ||
+ | Les dernières versions de " | ||
+ | Pour obtenir un comportement plus proche des versions antérieures, | ||
+ | | ||
+ | Aperçu des scripts exemples fournis :\\ | ||
+ | | ||
+ | < | ||
+ | |||
+ | / | ||
+ | total 4 | ||
+ | -rwxr-xr-x 1 root root 1404 mai 1 23:00 link | ||
+ | |||
+ | / | ||
+ | total 4 | ||
+ | -rwxr-xr-x 1 root root 522 mai 1 23:03 link | ||
+ | |||
+ | / | ||
+ | total 4 | ||
+ | -rwxr-xr-x 1 root root 430 mai 1 23:04 link | ||
+ | |||
+ | / | ||
+ | total 20 | ||
+ | -rwxr-xr-x 1 root root 1380 mai 1 22:56 force-build-link | ||
+ | -rwxr-xr-x 1 root root 3012 avr 13 00:16 grub_conf | ||
+ | -rwxr-xr-x 1 root root 612 mai 1 23:15 initramfs | ||
+ | -rwxr-xr-x 1 root root 3326 avr 13 00:16 symlink_hook | ||
+ | -rwxr-xr-x 1 root root 587 mai 1 23:15 yaird | ||
+ | |||
+ | / | ||
+ | total 16 | ||
+ | -rwxr-xr-x 1 root root 692 mai 1 22:55 force-build-link | ||
+ | -rwxr-xr-x 1 root root 2780 avr 13 00:17 grub_rm | ||
+ | -rwxr-xr-x 1 root root 919 mai 1 23:16 initramfs | ||
+ | -rwxr-xr-x 1 root root 770 avr 30 19:09 yaird</ | ||
+ | |||
+ | À titre indicatif uniquement, les scripts que j' | ||
+ | |||
+ | < | ||
+ | / | ||
+ | total 8 | ||
+ | -rwxr-xr-x 1 root root 317 jun 22 22:21 dkms | ||
+ | -rwxr-xr-x 1 root root 1404 mai 1 23:00 link | ||
+ | |||
+ | / | ||
+ | total 4 | ||
+ | -rwxr-xr-x 1 root root 522 mai 1 23:03 link | ||
+ | |||
+ | / | ||
+ | total 0 | ||
+ | |||
+ | / | ||
+ | total 4 | ||
+ | -rwxr-xr-x 1 root root 430 mai 1 23:04 link | ||
+ | |||
+ | / | ||
+ | total 16 | ||
+ | -rwxr-xr-x 1 root root 317 jun 22 22:21 dkms | ||
+ | -rwxr-xr-x 1 root root 612 mai 1 23:15 initramfs | ||
+ | -rwxr-xr-x 1 root root 264 mar 19 21:16 initramfs-tools | ||
+ | -rwxr-xr-x 1 root root 3331 sep 8 22:08 symlink_hook | ||
+ | |||
+ | / | ||
+ | total 8 | ||
+ | -rwxr-xr-x 1 root root 919 mai 1 23:16 initramfs | ||
+ | -rwxr-xr-x 1 root root 220 mar 19 21:16 initramfs-tools | ||
+ | |||
+ | / | ||
+ | total 0 | ||
+ | |||
+ | / | ||
+ | total 4 | ||
+ | -rwxr-xr-x 1 root root 615 fév 24 2009 dkms</ | ||
+ | |||
+ | À noter que certains scripts ne sont pas liés à " | ||
+ | |||
+ | Nous allons détailler un peu le rôle des différents scripts, et les éventuelles modifications à y apporter.\\ | ||
+ | |||
+ | * " | ||
+ | |||
+ | * " | ||
+ | |||
+ | * " | ||
+ | Modifiez la variable " | ||
+ | Si vous n'en avez pas l' | ||
+ | | ||
+ | < | ||
+ | # | ||
+ | # | ||
+ | |||
+ | # | ||
+ | #" | ||
+ | |||
+ | Cette partie (ligne 67) vise à créer plusieurs niveaux de liens symboliques par famille ou versions de noyaux. Si vous en avez l' | ||
+ | Par défaut le lien vers l' | ||
+ | |||
+ | < | ||
+ | |||
+ | rm -f vmlinuz vmlinuz.old vmlinuz-rd vmlinuz-rd.old initrd.img initrd.img.old | ||
+ | ln -s " | ||
+ | ln -s " | ||
+ | |||
+ | # mv symlink_hook symlink_hook.original | ||
+ | # sed -e '/rm -f/ | ||
+ | |||
+ | Ici on emploi " | ||
+ | |||
+ | * " | ||
+ | |||
+ | * " | ||
+ | < | ||
+ | postrm_hook = update-grub2</ | ||
+ | peut être inclu dans / | ||
+ | |||
+ | * " | ||
+ | | ||
+ | En plus de ces scripts, vous pourrez prêter attention à / | ||
+ | |||
+ | < | ||
+ | # soit créé ailleurs que "/", | ||
+ | # du lien. Ceci n'est pas une variable Boléenne. | ||
+ | # (Si " | ||
+ | |||
+ | image_dest = / | ||
+ | |||
+ | # Cette variable concerne le lien symbolique " | ||
+ | # Si un répertoire d' | ||
+ | # vers celui-ci. | ||
+ | |||
+ | # | ||
+ | |||
+ | # Si cette variable est utilisée, le script " | ||
+ | # déplacer un répertoire / | ||
+ | # même version de noyau est installée. | ||
+ | # Option dangereuse, utilisez à vos risques et périles. | ||
+ | # Alternative : "dpkg -i --force-overwrite" | ||
+ | # le noyau de même version. | ||
+ | |||
+ | # | ||
+ | | ||
+ | Un exemple de fichier / | ||
+ | |||
+ | < | ||
+ | # Kernel image management overrides | ||
+ | # See kernel-img.conf(5) for details | ||
+ | do_symlinks = yes | ||
+ | relative_links = yes | ||
+ | do_bootloader = no | ||
+ | do_bootfloppy = no | ||
+ | do_initrd = yes | ||
+ | link_in_boot = no | ||
+ | image_dest = / | ||
+ | </ | ||
+ | |||
+ | D' | ||
+ | |||
+ | |||
+ | Autre modification importante, " | ||
+ | |||
+ | ====Configuration des sources du noyau==== | ||
+ | |||
+ | Vous devrez commencer par créer un répertoire qui accueillera les sources du noyau (ici /tmp/src, attention car /tmp est vidé au redémarrage, | ||
+ | |||
+ | < | ||
+ | $ cd /tmp/src | ||
+ | $ tar xjf linux-2.6.31.tar.bz2 | ||
+ | $ cd linux-2.6.31</ | ||
+ | |||
+ | À adapter à votre version de noyau et votre répertoire de compilation. Si l' | ||
+ | |||
+ | La première étape du processus est également la plus importante, il s'agit de créer le fichier " | ||
+ | |||
+ | < | ||
+ | / | ||
+ | $ cp / | ||
+ | $ ls -la | grep config | ||
+ | -rw-r--r-- | ||
+ | |||
+ | Facile, vous avez maintenant un fichier " | ||
+ | |||
+ | < | ||
+ | |||
+ | À ce stade vous avez un noyau configuré avec exactement les mêmes options que celui dont vous avez copié le fichier " | ||
+ | |||
+ | Pour véritablement personnaliser le noyau il faut éditer le fichier " | ||
+ | |||
+ | < | ||
+ | |||
+ | {{ debian: | ||
+ | |||
+ | |||
+ | Dans l' | ||
+ | |||
+ | {{ debian: | ||
+ | |||
+ | Un aperçu de " | ||
+ | |||
+ | {{ deb: | ||
+ | \\ | ||
+ | |||
+ | Le but n'est pas de traiter ici des différentes options de configuration. Ces options changeant très régulièrement au grès des évolutions du noyau il vaut mieux vous référer à des sites spécifiques sur le sujet, voir la dernière section " | ||
+ | Si vous ignorez ce qu'est un " | ||
+ | |||
+ | |||
+ | ====La compilation proprement dite==== | ||
+ | |||
+ | Vous disposez maintenant d'un fichier de configuration, | ||
+ | |||
+ | * Si vous compilez en espace utilisateur (ou dans /tmp/, etc..., bref là où vous avez des droits d' | ||
+ | | ||
+ | < | ||
+ | |||
+ | Dans cet exemple on suppose que vous désirez créer un " | ||
+ | L' | ||
+ | L' | ||
+ | |||
+ | * Si vous compilez dans /usr/src, vous devez utiliser la même commande, mais sans " | ||
+ | |||
+ | < | ||
+ | Une autre possibilité est d' | ||
+ | |||
+ | ====Installation du noyau, vérifications==== | ||
+ | |||
+ | La commande " | ||
+ | |||
+ | < | ||
+ | |||
+ | Ensuite le(s) nouveau(x) paquets apparaîtront dans " | ||
+ | |||
+ | Si les bons scripts ont été utilisés lors de la configuration de " | ||
+ | |||
+ | N' | ||
+ | |||
+ | ==== Recompilation partielle ==== | ||
+ | |||
+ | Si vous avez " | ||
+ | Si vous n'avez plus que votre nouveau noyau et qu'il soit bancal, copiez le répertoire des sources quelque part (/tmp, etc...), effacez également le répertoire " | ||
+ | |||
+ | |||
+ | Voilà, c'est fini, la bonne nouvelle c'est que la phase de configuration de " | ||
+ | |||
+ | Bonne compil ! | ||
+ | |||
+ | ====Liens==== | ||
+ | |||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[https:// | ||
+ | * [[http:// | ||
+ | * [[debian: | ||
+ | * [[expert: | ||
+ | |||
+ | ---------------------------------------------------- | ||
+ | |||
+ | [[debian: | ||
+ | \\ | ||
+ | [[http:// |
debian/debian_compilation_noyau.txt · Dernière modification : 2018/11/17 12:52 de 127.0.0.1