« Compilation linux » : différence entre les versions

De Wiki doc

m (Ajout d'un lien vers la doc serveur PXE et surlignage de textes)
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 52 : 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

Version du 24 décembre 2017 à 03:00

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
Leur installation avec un dpkg -i créera le fichier /boot/initrd.img-4.13.0-custom et /boot/vmlinuz-4.13.0-custom.

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

Sources de la section