0

Kernel Linux 4.16 sous Zorin OS

Sortis il y a un peu plus d’un mois, le kernel linux 4.16 se veut plus léger (450 000 lignes de code en moins avec l’abandon d’architectures inutilisées) et disponible avec des correctifs contre Meltdown et Spectre. Mais ce n’est pas tout !

 

Zorin OS   

Zorin OS est un système d’exploitation basé sur Ubuntu, qui se veut simple, efficace et très agréable d’utilisation. J’utilise la version lite qui équipe un HP EliteBook 2530p avec 2Go de RAM et un Intel Core 2 x64.

Quelques infos système :

$ lsb_release -a

No LSB modules are available.

Distributor ID: Zorin

Description: Zorin OS 12.3

Release: 12

Codename: xenial
$ uname -a

Linux PC-ROLLO 4.13.0-37-generic #201804012230 SMP Sun Apr 1 20:31:39 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Installation automatique du noyau avec dpkg

Cette première méthode d’installation se fait assez aisément (avec une configuration standard) en récupérant directement les binaires qui se chargeront d’installer le nouveau noyau.

Récupération des binaires depuis le repo d’Ubuntu

$ cd /tmp
$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.16/linux-headers-4.16.0-041600_4.16.0-041600.201804012230_all.deb
$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.16/linux-headers-4.16.0-041600-generic_4.16.0-041600.201804012230_amd64.deb
$ wget http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.16/linux-image-4.16.0-041600-generic_4.16.0-041600.201804012230_amd64.deb

Une fois les fichiers récupérés, on peut maintenant les installer avec dpkg

$ dpkg -i *4.16*

Le nouveau noyau est maintenant installé ! On le repère dans le répertoire /boot, qui contient les fichiers nécessaires au démarrage du système d’exploitation, donc les différents noyaux présents :

$ ls -a /boot |grep vmlinuz

vmlinuz-4.13.0-37-generic

vmlinuz-4.16.0-041600-generic

Mise à jour de GRUB et redémarrage

$ update-grub2 && shutdown -r now

Une fois le redémarrage effectuée, on s’assure que le nouveau kernel est bien pris en compte :

$ uname -a

Linux PC-ROLLO 4.16.0-041600-generic #201804012230 SMP Sun Apr 1 22:31:39 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Il convient de toujours garder un kernel de secours (version stable de préférence => 4.9, 4.14 …) en cas de problème avec celui nouvellement installé. On est pas à l’abri d’un kernel panic 😉

Installation avec compilation manuelle

La compilation manuelle peut avoir différents but : faire fonctionner un matériel qui n’est pas inclus dans le noyau actuel, optimiser son noyau en y incluant le strict nécessaire, durcir sa sécurité (selinux) où alors appliquer différents patchs/correctifs.

Dans mon cas, je souhaite l’alléger de toute charge inutile présente dans les options de base, et de surtout de me faire un peu la main sur le fonctionnement d’un noyau Linux ! 🙂

Je repars d’une machine Zorin OS vierge, avec la version du noyau en 4.13.

Préparation des outils et récupération du code source du noyau

Différents outils sont nécessaires dans mon cas (compilation classique avec une distribution dérivée de Debian)

$ apt-get update && apt-get install build-essential kernel-package debconf-utils dpkg-dev debhelper ncurses-dev libelf-dev

Les bibliothèques OpenSSL sont également nécessaires et non-disponible de base dans Zorin OS

$ apt-get install openssl libssl-dev

L’avantage avec la compilation manuelle est que je peux choisir directement la version de noyau qui m’intéresse. Je vais prendre la 4.16.7, datant du 02 Mai 2018.

Récupération du code source du noyau via le site officiel kernel.org

$ mkdir ~/kernel && cd ~/kernel
$ wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.16.7.tar.xz

Décompression de la tarball

$ tar xvf linux-4.16.7.tar.xz && cd linux-4.16.7

Compressée, l’archive faisait 100 Mo. Nous en sommes à un peu moins d’1Go.

$ du -hs .

908M .

Options de compilation

Option 1 : garder la configuration du noyau actuelle

Si l’on souhaite garder les options actuels et simplement upgrader sa version du noyau, il faut récupérer le fichier de config actuel :

$ cp /boot/config-$(uname -r) /root/kernel/linux-4.16.7/.config

Où alors, plus simple …

$ make defconfig

Cela va nous permettre de lancer la compilation du nouveau noyau tout en gardant le paramétrage actuel.

$ head -n 10 .config

#

# Automatically generated file; DO NOT EDIT.

# Linux/x86 4.16.17 Kernel Configuration

#

CONFIG_64BIT=y

CONFIG_X86_64=y

CONFIG_X86=y

CONFIG_INSTRUCTION_DECODER=y

CONFIG_OUTPUT_FORMAT="elf64-x86-64""

CONFIG_ARCH_DEFCONFIG="arch/x86/configs/x86_64_defconfig"

Option 2 : personnaliser sa configuration

Pour compiler et choisir les options voulus en mode terminal, je vais utiliser l’outil make nconfig. Il offre une meilleur convivialité et interface que make menuconfig

Il existe également des outils graphique, comme make gconfig ou make xconfig.

La commande make nconfig nécessite la bibliothèques ncurses, installé précédemment (ncurses-dev).

 

J’ai dû dans mon cas installer des paquets qui n’étaient pas incluent dans la distro de base et nécessaire à la compilation :

$ apt-get install bison flex

I’m ready !!

$ make nconfig

Je ne vais pas détailler ici les différentes options possibles, la touche F2 est la pour cela !

Dans mon cas, je vais choisir de désactiver différentes fonctionnalités :

  • Paramètres de virtualisation
  • Quelques paramètres du kernel hacking (kernel debugging, niveau de verbosité)
  • Quelques paramètres réseau (réseau radio, netfilter, IPv6)
  • Drivers pour MACINTOSH
  • Fonction de SWAP
  • Quota de disques durs

Et bien d’autres encore … je souhaite m’alléger le plus possible !

Une fois la configuration terminée, il faut presser F6 pour générer le fichier .config

Accélérer le processus de compilation

Toujours dans le même répertoire, on peut maintenant lancer la compilation avec le fichier .config souhaité et généré précédemment.

Pour accélérer la compilation, j’utilise la commande make -j suivie du nombre de CPU +1 que je souhaite utiliser. Ces différentes informations sont visibles via la commande lscpu

$ lscpu

Architecture: x86_64

Mode(s) opératoire(s) des processeurs :32-bit, 64-bit

Byte Order: Little Endian

CPU(s): 2

On-line CPU(s) list: 0,1

Thread(s) par cœur : 1

Cœur(s) par socket : 2

Socket(s): 1

Nœud(s) NUMA : 1

Identifiant constructeur :GenuineIntel

Famille de processeur :6

Modèle : 23

Model name: Intel(R) Core(TM)2 Duo CPU L9600 @ 2.13GHz

Révision : 10


Vitesse du processeur en MHz :2134.000
***commande tronquée***

J’ai quatre coeurs au total, je vais donc en allouer trois pour la compilation :

$ make -j4

puis

$ make install

Pendant le déroulement de cette commande, le fichier de configuration de grub sera automatiquement mis à jour. Cela permettra de booter directement sur le nouveau noyau !

On redémarre la bête

$ reboot

Pas de soucis au démarrage ! C’est plutôt bon signe 😉

Check du nouveau noyau :

$ uname -r

4.16.7

Nouveau noyau installé !

Sources et liens complémentaires

Ubuntu-fr : compiler linux

Wiki debian-fr.xyz : compiler et patcher son noyau

Debian-handbook : Raphaël Hertzog et Roland Mas

Opensuse.org : configurer, compiler et installer un noyau Linux personnalisé

Et le très bon livre de Philippe PINCHON aux éditions ENI

 

 

 

 

 

 

Supras

Supras

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *