5. La compilation & l'installation du nouveau noyau Linux

1.

Quel est le paquet qui contient les outils de construction de paquet de noyau ?

Rechercher le mot clé kernel à l'aide du gestionnaire de paquets. Installer le paquet correspondant

La recherche dans les attributs du gestionnaire de paquets permet d'identifier le paquet kernel-package.

$ aptitude search kernel | grep package
p   debian-kernel-handbook    - reference to Debian Linux kernel packages 
p   kernel-package            - A utility for building Linux kernel relate
p   kernel-patch-grsecurity2  - transitional package for Debian Lenny     
p   kernel-patch-scripts      - Scripts to help dealing with packaged kern

Suivant l'état antérieur de l'installation système, la liste des dépendances est plus ou moins importante lors de l'installation de kernel-package.

# aptitude install kernel-package
Les NOUVEAUX paquets suivants vont être installés : 
  autopoint{a} build-essential{a} dpkg-dev{a} fakeroot{a} g++{a} g++-4.6{a}
  gettext{a} git{a} git-man{a} intltool-debian{a} kernel-package
  libalgorithm-diff-perl{a} libalgorithm-diff-xs-perl{a}
  libalgorithm-merge-perl{a} libcroco3{a} libcurl3-gnutls{a} libdpkg-perl{a}
  liberror-perl{a} libglib2.0-0{a} libglib2.0-data{a} libmail-sendmail-perl{a}
  librtmp0{a} libstdc++6-4.6-dev{a} libsys-hostname-long-perl{a}
  libtimedate-perl{a} libunistring0{a} po-debconf{a} rsync{a}
  shared-mime-info{a}

2.

Quelles sont les commandes de compilation du noyau ?

Rechercher les commandes dans le support Manuel de référence Debian - Chapitre 9 et donner la signification de chacune des commandes.

Pour faciliter les opérations de (dé|ré)installation du noyau, on se propose de construire un paquet Debian de noyau Linux. L'utilisation d'un paquet permet de s'assurer que tous les fichiers nécessaires ont bien été (copiés|supprimés) dans l'arborescence du système.

$ pwd
/usr/src/linux
$ export CONCURRENCY_LEVEL=`grep  -c  '^processor'  /proc/cpuinfo`
$ make-kpkg clean
$ make-kpkg --rootcmd fakeroot --initrd --append-to-version -1st-try kernel_image

3.

Quelles sont les étapes d'installation du noyau compilé ?

Quel outil faut-il utiliser pour gérer les paquets localement sur le système ?

Une fois le paquet de noyau construit, il ne reste plus qu'à procéder à l'installation de ce paquet local. Cette étape fait appel à l'outil de gestion de bas niveau des paquets Debian : dpkg. Cette opération nécessite les droits du super-utilisateur.

# pwd
/usr/src
# dpkg -i linux-image-3.0.0-1st-try_3.0.0-1st-try-10.00.Custom_amd64.deb

Après cette installation de paquet de noyau on peut valider la liste des paquets correspondant installés.

# dpkg -l linux-image* |grep ^ii
ii  linux-image-2.6-amd64     3.0.0+39                   Linux for 64-bit PCs (dummy package)
ii  linux-image-3.0.0-1-amd64 3.0.0-3                    Linux 3.0.0 for 64-bit PCs
ii  linux-image-3.0.0-1st-try 3.0.0-1st-try-10.00.Custom Linux kernel binary image for version 3.0.0-1st-try
ii  linux-image-amd64         3.0.0+39                   Linux for 64-bit PCs (meta-package)

4.

Que faut-il faire pour que le gestionnaire de démarrage propose le nouveau noyau compilé lors de l'initialisation du système ?

Identifier le gestionnaire d'amorce installé sur le système.

En fait, l'opération d'installation du paquet de noyau intègre l'ajout d'une nouvelle entrée dans le gestionnaire de démarrage. Aucune opération supplémentaire n'est donc nécessaire.

on peut tout de même valider la liste des noyaux disponibles au niveau du gestionnaire d'amorce. Dans le cas de grub avec la distribution Debian GNU/Linux, on obtient une liste du type suivant.

# update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.0.0-1st-try
Found initrd image: /boot/initrd.img-3.0.0-1st-try
Found linux image: /boot/vmlinuz-3.0.0-1-amd64
Found initrd image: /boot/initrd.img-3.0.0-1-amd64
done

Une fois toutes ces étapes franchies, il ne reste plus qu'à relancer le système et vérifier que le noyau exécuté est bien celui qui a été recompilé à partir des sources.