Projet

Général

Profil

Kernel 3.0 sur un module EOLE 2.3

Étude du passage à un noyau Ubuntu LTS backport

L’idée est d’éviter de compiler un kernel spécifique EOLE, nécessitant la recompilation des outils comme iptables du fait du changement de l’ABI du noyau.

Nous devons cependant concerver un certains nombre de fonctionnalités :
  • La gestion des conteneurs LXC
  • Les extensions ipset
  • Le filtrage du P2P

Installation

Un noyau backport est disponible sur Lucid:

root@eole:~# apt-get install linux-image-generic-lts-backport-oneiric

Adaptations

Il est nécessaire d’effectuer quelques adaptation afin de démarrer un noyau 3.0.

Démarrage par défaut sur le noyau 3.0

La séléction du noyau se fait lors d’une mise à jour de grub, par défaut, uniquement les noyaux se finissant par -eole sont pris en compte.

On modifie l’expression rationnelle sélectionnant le noyau par défaut:

root@eole:~# sed -ie "s/\(EOLE_GRUB_REGEX='.\*\)-eole'/\1'/" /etc/default/grub

Iptables

EOLE recompile iptables du fait du patch modifiant l’ABI du noyau.

L’utilisation d’un noyau standard nécessite l’installation de la version Ubuntu d’iptables

root@eole:~# apt-get install iptables=1.4.4-2ubuntu2

Attention, une mise à jour réinstallera la version EOLE, durant les tests, il faut garder la version Ubuntu:

root@eole:~# echo "iptables hold" | dpkg --set-selections

Conteneurs

La version des outils LXC sur Lucid ne fonctionnent pas avec un noyau 3.0.

Il faut donc installer une version backport:

root@eole:~# apt-get install python-software-properties
root@eole:~# add-apt-repository ppa:serge-hallyn/lxc-backport
root@eole:~# apt-get update
root@eole:~# apt-get install lxc=0.7.4-0ubuntu1.1
root@eole:~# echo "lxc hold" | dpkg --set-selections

Un problème est que le script d’init /etc/init.d/lxc est fourni par les paquets eole-conteneurs et lxc.

Un autre est que le script d’init pour precise utilise le fichier de configuration /etc/default/lxc suivant :

# Comment out to run the lxc init script
#RUN=yes

# Directory containing the container configurations
CONF_DIR=/etc/lxc

# Start /etc/lxc/example.conf, /etc/lxc/autostart.conf, etc.
CONTAINERS="example autostart container" 

MIRROR="http://archive.canonical.com/ubuntu" 

De fait, la configuration des conteneurs se trouve dans /etc/lxc/ et non dans /opt/lxc/<conteneur>.

TODO: à voir si un répertoire peut-être utilisé pour les démarrages automatiques (à-la libvirt)

Le démarrage des bridges est intégré à eole-common:source:eole-conteneur/lxc, cela devrait être géré autrement :

  • en utilisant la 1libvirt":http://wiki.debian.org/LXC/LibVirtDefaultNetwork et en définissant des réseaux dans /etc/libvirt/qemu/networs/*.xml
  • en utilisant des scripts dans /etc/network/if-{pre-,post-}{down,up}.d

Filtrage p2p

L7 filter nécessite un patch noyau qui change l’ABI du noyau.

Il est possible d’utiliser le module ipp2p de xtables-addons

Il faut une version de xtables-addons fonctionnant sur noyau 3.0

root@eole:~# bzr branch lp:ubuntu/oneiric/xtables-addons
root@eole:~# cd xtables-addons && dpkg-buildpackage

ipset

Une mise à jour d’ipset viendra avec xtables-addons-common

root@amonecole:~# ipset -L
ipset v4.1: Kernel ip_set module is of protocol version 6.I'm of protocol version 4.
Please upgrade your kernel and/or ipset(8) utillity.

Webographie