Récupérer les sources du noyau, le patch grsec et la config ovh qui va bien
Se rendre dans un dossier de travail
Téléchargement du kernel
Téléchargement du patch grsecurity [1] correspondant à la version du noyau (3.9.6 dans l’article)
récuperer la config du noyaux ovh sur leur serveur ftp [2]
Préparer les sources
décompresser [3] le noyau
copier la configuration ovh dans racine du noyau linux décompressé précédemment
aller dans le répertoire du noyau fraichement décompressé
appliquer le patch grsec
Configuration des cgroups
dans le repertoire du kernel, lancer l’utilitaire de configuration du noyau make menuconfig et configurer lxc cgroup [4] en activant les options suivantes :
-> General setup
[renommer votre kernel] Local version - append to kernel release
-> Control Group support
[x] Namespace cgroup subsystem
[x] Freezer cgroup subsystem
[x] Cpuset support
[x] Simple CPU accounting cgroup subsystem
[x] Resource counters
[x] Memory resource controllers for Control Groups
-> Group CPU scheduler
[x] Basis for grouping tasks (Control Groups) (!)
[x] Group scheduling for SCHED_OTHER (NEW)
[x] CPU bandwidth provisioning for FAIR_GROUP_SCHED
[x] Group scheduling for SCHED_RR/FIFO
-> Namespaces support
[x] UTS namespace
[x] IPC namespace
[x] User namespace (!)
[x] Pid namespace
[x] Network namespace
-> Device Drivers
-> Character devices
[x] Support multiple instances of devpts
[*] Unix98 PTY support
-> Network device support
[x] MAC-VLAN support
[x] Virtual ethernet pair device
-> Networking support
-> Networking options
[x] 802.1d Ethernet Bridging
[x] Network priority cgroup
-> Security options
[x] File POSIX Capabilities (!)
(!) suivant la version/configuration du kernel certaines options peuvent être déplacées ou inexistantes. Pour activer l’option
usernamespace je suis tombé sur un bug pour le noyau 3.8. De plus une contrainte oblige a désactiver le système de fichier
XFS [5] pour pouvoir activer cette option.
XFS devrait être supporté à partir des versions 3.10 du kernel linux.
Une fois votre configuration terminée, retourner sur la page d’accueil de menuconfig sélectionner < Exit >, une boite de dialogue vous demande d’enregistrer votre configuration selectionner < yes > avant de quitter.
Avant de compiler, On va tester la configuration :
CONFIG=/usr/src/linux-3.9.6/.config lxc-checkconfig
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled
--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: missing (!)
Cgroup cpuset: enabled
--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
File capabilities: enabled
Cgroup memory controller : missing (!) - Debian Wheezy
Sur Debian wheezy, avec le paquet lxc, la configuration de "memory controller" semble manquante. En installant la dernière version de
lxc (0.9) la vérification devient OK
Youpi ! la configuration est maintenant terminée, il est temps de lancer la compilation avant de boire un café !
Compilation du noyau
Penser à installer les outils pour la compilation des noyaux. Sur Debian, le paquet s’appelle build-essential c’est un meta-paquet dédié a l’installation de tous les outils de compilation make, gcc, etc..
Lancer la compilation, ou -j X (correspond au nombre de core ) :
Le kernel se retrouve dans le dossier arch/x86/boot. On va Copier/renommer le nouveau kernel dans le dossier /boot du système :
Installer le kernel et redémarrer
Je vous invite à consulter mon article précédent intitulé Installer un nouveau kernel Linux en 5 étapes