Compiler un noyau Linux
Dans certains cas, nous utilisons une version personnalisée du noyau Linux
- Noyau 2.6 pour serveurs (Dell, IBM, HP) P4/Xeon (patché grsecurity)
- Noyau 2.4 pour serveurs AMD-K7 (patché grsecurity)
- Noyau 2.4 pour routeur-firewall Intel Pentium (patché grsecurity)
Nous mettons à disposition les paquets Debian de ces noyaux. Vous pouvez ajouter la ligne suivante dans votre sources.list :
deb http://pub.evolix.net/ kernel/
Attention, ces noyaux ne conviennent pas pour un usage commun. Ils sont recompilés avec des patches et des options particulières qui le rendent inutilisables sur la plupart des systèmes. Utilisez les uniquement si vous savez ce que vous faîtes.
Préambule
Pour connaître la version du noyau animant le système :$ uname -a
Le noyau en lui même est un fichier de quelques Mo. Il est souvent nommé /boot/vmlinuz-2.x.y.z-patch. C'est ce fichier qui est lancé par le boot loader (LILO, GRUB, Yaboot, etc.). Les modules éventuels se retrouvent souvent sous le répertoire /lib/modules/2.x.y.z-patch/. Parlons aussi du fichier System.map (table des symboles du noyau) qui se trouve en général dans le répertoire /boot/. Enfin, parlons du fichier initrd qui se trouve sur certains système Linux. Il s'agit d'un disque RAM initialisé au démarrage avant le noyau pour permettre un démarrage en deux phases (utile dans certains cas). Ce fichier sera également lancé par le boot loader.
Compilation du noyau Linux
Préparation du noyau
Noyau vanilla :$ tar -jxvf linux-source-2.x.y.tar.bz2
Patches
Patches rc ou 2.x.y.z :$ cd linux-2.x.y $ patch -p1 < ../patch
Ne pas utiliser de noyau 2.x.y.z car les modifications sont déjà intégrées aux patches rc.
Patches grsecurity :$ gunzip < grsecurity.patch.gz | patch -p0Patches IPTables :
$ cd netfilter/patch-o-matic $ ./runme extraPatches Debian :
Installer le paquet linux-patch-debian-2.x.y (anciennement kernel-patch-*) puis appliquer les patches :
$ cd linux-2.x.y $ /usr/src/kernel-patches/all/2.x.y/apply/debian
Note : Debian propose des paquets linux-source-* contenant les sources vanilla patchée.
Choix des options
Pour le choix des options, on utilise make OPTION où OPTION peut valoir :- menuconfig (installer libncurses5-dev)
- xconfig (installer libqt3-dev)
- config
$ cp /boot/config-2.x.y .config $ make oldconfig
Compilation classique
$ make dep $ make clean $ make bzImage $ make modules
Note : make dep n'est plus nécessaire pour les noyaux 2.6.
L'installation :# cp arch/i386/boot/bzImage /boot/vmlinuz-foo # makes modules_install
Compilation "à la sauce Debian"
Les paquets suivants sont requis :bzip2 kernel-package build-essentialInstaller des outils pour gérer les modules :
modutils (noyaux 2.4) module-init-tools (noyaux 2.6)Modifier éventuellement le fichier /etc/kernel-pkg.conf puis lancer la compilation :
$ make-kpkg clean $ make-kpkg --rootcmd fakeroot \ --revision evolix0 \ --append-to-version=-grsec-srv-p4 \ --stem linux kernel_image kernel_headers
Note : Les noyaux ont été renommés de kernel-* en linux-* (Utiliser l'option -stem linux).
Note : Pour faire apparaître -grsec dans le nom des noyaux et pas seulement dans le localversion, on l'ajoute à l'option --append-to-version et on efface le fichier localversion.grsec à la racine du noyau.
L'installation est gérée comme un paquet Debian classique.