« Compilation linux » : différence entre les versions
m (Ajout d'une catégorie) |
m (Changement de cétégorie) |
||
(2 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category: | [[Category:noyau_linux]] | ||
[[Category:debian]] | [[Category:debian]] | ||
Ce document traite de la compilation d'un noyau Linux. | Ce document traite de la compilation d'un noyau Linux. | ||
Ligne 16 : | Ligne 16 : | ||
apt install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential | apt install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential | ||
''Note : le paquet kernel-package n'est pas disponible dans Stretch. Utilisez une autre branche pour l'installation''. | ''Note : le paquet kernel-package n'est pas disponible dans Stretch. Utilisez une autre branche pour l'installation''. | ||
'''Nettoyage de l'archive''' | '''Nettoyage de l'archive''' | ||
make clean && make mrproper | make clean && make mrproper | ||
Ligne 31 : | Ligne 32 : | ||
Allez sur ''Load'' et importer le ''.config''. | Allez sur ''Load'' et importer le ''.config''. | ||
''' | '''Nettoyer les fichiers de compilation''' | ||
make-kpkg clean | make-kpkg clean | ||
===Compilation=== | ===Compilation=== | ||
'''Compiler le noyau''' | '''Compiler le noyau''' | ||
Ligne 51 : | Ligne 53 : | ||
mount -t tmpfs -o rw,relatime,size=1G tmpfs /lib/live/mount/medium/ && mkdir /lib/live/mount/medium/live | mount -t tmpfs -o rw,relatime,size=1G tmpfs /lib/live/mount/medium/ && mkdir /lib/live/mount/medium/live | ||
On peut désormais installer les paquets sans encombre et récupérer leur résultat dans ''/boot'' pour un amorçage PXE | On peut désormais installer les paquets sans encombre et récupérer leur résultat dans '''/boot''' pour un [[Serveur PXE|amorçage PXE]] | ||
dpkg -i linux-headers-4.13.0-custom_4.13.0-custom-10.00.Custom_amd64.deb linux-image-4.13.0-custom_4.13.0-custom-10.00.Custom_amd64.deb | dpkg -i linux-headers-4.13.0-custom_4.13.0-custom-10.00.Custom_amd64.deb linux-image-4.13.0-custom_4.13.0-custom-10.00.Custom_amd64.deb | ||
===Sources de la section=== | ===Sources de la section=== | ||
* Vidéo ''[https://www.youtube.com/watch?v=KRCfkahi2HQ How To Compile a Kernel on Debian Linux]'' | * Vidéo ''[https://www.youtube.com/watch?v=KRCfkahi2HQ How To Compile a Kernel on Debian Linux]'' | ||
* https://linuxfr.org/users/gogo/journaux/kernel-make-mrproper-et-make-clean | * https://linuxfr.org/users/gogo/journaux/kernel-make-mrproper-et-make-clean |
Dernière version du 21 février 2018 à 10:09
Ce document traite de la compilation d'un noyau Linux.
ATTENTION
La compilation prend plusieurs heures (environs 2h30 sur mon core i7 960). Ne commencez pas l'opération si vous allez vous coucher et que votre PC fait un bruit d'avion à coté de votre lit (ça sent le vécu)...La compilation d'un noyau se fait en passant des paramètres sous forme de variables dans un fichier de configuration nommé .config.
Compilation Linux Debian
Depuis une configuration existante
Préparation
Téléchargement des sources de Linux
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.13.tar.xz
Note : Vous trouverez les sources de la version du noyau que vous désirez sur le site officiel du noyau.
Décompression des sources
tar xf linux-4.13.tar.xz && cd linux-4.13/
Installation des dépendances
apt install kernel-package libncurses5-dev fakeroot wget bzip2 build-essential
Note : le paquet kernel-package n'est pas disponible dans Stretch. Utilisez une autre branche pour l'installation.
Nettoyage de l'archive
make clean && make mrproper
Explications:
- make clean : Supprime la plupart des fichiers générés (nécessaires à la compilation mais non utilises à l'issue) mais garde la config'.
- make mproper : Supprime tous les fichiers générés précédemment ainsi que la config et des fichiers de sauvegarde (purge totalement l'archive - mproper = Mr Propre).
Configuration
Importation des paramètres du noyau actuel
cp /boot/config-`uname -r` .config
Prise en compte du fichier de configuration
Note : Cette partie est peu être inutile, vérifier.
make menuconfig
Allez sur Load et importer le .config.
Nettoyer les fichiers de compilation
make-kpkg clean
Compilation
Compiler le noyau
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
INFORMATION
Cette opération va générer deux fichier .deb:- linux-headers-4.13.0-custom_4.13.0-custom-10.00.Custom_amd64.deb
- linux-image-4.13.0-custom_4.13.0-custom-10.00.Custom_amd64.deb
Installation
Depuis une installation sur une mémoire morte
dpkg -i linux-headers-4.13.0-custom_4.13.0-custom-10.00.Custom_amd64.deb linux-image-4.13.0-custom_4.13.0-custom-10.00.Custom_amd64.deb
Note : les fichiers /boot/initrd.img-4.13.0-custom et /boot/vmlinuz-4.13.0-custom sont désormais présents dans /boot.
Depuis un squashfs
L'installation de ces paquets utilise l'emplacement /lib/live/mount/medium/live qui ne contient pas d'espace libre (il y a donc une erreur à l'installation). Pour combler cette lacune, exécuter cette commande:
mount -t tmpfs -o rw,relatime,size=1G tmpfs /lib/live/mount/medium/ && mkdir /lib/live/mount/medium/live
On peut désormais installer les paquets sans encombre et récupérer leur résultat dans /boot pour un amorçage PXE
dpkg -i linux-headers-4.13.0-custom_4.13.0-custom-10.00.Custom_amd64.deb linux-image-4.13.0-custom_4.13.0-custom-10.00.Custom_amd64.deb