HOWTO: patch-o-matic sauce debian

Depuis un bail, je souhaitais installer des fonctionnalités étendues comme la cible TARPIT dans le noyau de mon routeur mais tout ce que je voyais comme tutos sur patch-o-matic me menait à des manips que je trouvais “sales” et pas du tout respectueuse de debian.
jalix.org/ressources/reseaux … WTO-2.html

Voici comment faire un patchage avec patch-o-matic des sources noyau et d’iptables à la sauce debian. Ce tuto nécessite une bonne connaissance de la compile du noyau et une compréhension de ce que l’on fait. Tous les patchs qu’on installe sont experimentaux, il faut s’attendre à tâtonner pour trouver les bonnes versions de patch-o-matic à utiliser.

préparation de l’environnement de travail:

[code]cd /usr/src
aptitude install apt-src kernel-package

apt-get source iptables # rappatriement des sources du paquet iptables actuellement chez moi c’est la 1.4.0
apt-get build-dep iptables # et des dependances pour la recompil
aptitude install linux-source-2.6.18 # ou la version que vous préfèrez bien sûr
tar xjf linux-source-2.6.18.tar.bz2
cp /boot/config-uname -r linux-source-2.6.18/.config
wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20080314.tar.bz2
tar xjf patch-o-matic-ng-20080314.tar.bz2[/code]
Maintenant vous avez un environnement de travail cohérent.
A noter que la version de patch-o-matic que j’ai choisie est actuellement la dernière, et on peut éventuellement en récupèrer une encore plus fraiche en cvs comme il est décrit dans le lien plus haut, mais il peut être aussi nécessaire d’en choisir une plus ancienne, si les patchs que vous souhaitez installer ne passent pas.

utilisation de patch-o-matic

cd /usr/src/patch-o-matic-ng-20080314 ./runme --download --kernel-path ../linux-source-2.6.18 --iptables-path=../iptables-1.4.0 pendingCette première étape prépare les sources avec les éventuels patchs de base, et si elle patche quelquechose, vous avez un message à la fin qui vous dit s’il faut recompiler le noyau, iptables, les deux, ou rien. L’option --download télécharge les patchs complémentaires disponibles sur des dépots autres que patch-o-matic. La liste des patchs dispos est alors dans le sous repertoire patchlets.
Il est possible aussi de choisir des “sets” de patchs comme pending, à savoir:
[ul]base, qui vous assure un lot de patchs “garantis” pour fonctionner ensemble,
extra, qui vous propose tous les patchs à jour,
obsolete, si vous avez besoin d’appliquer un patch obsolète.[/ul]
Quand vous avez choisi d’installer un patch ou un set particulier, par exemple geoip, vous pouvez l’installer simplement avec:

./runme --kernel-path ../linux-source-2.6.18 --iptables-path=../iptables-1.4.0 geoip A la fin de la manip, p-o-m vous précise ce qu’il faut recompiler d’iptables ou du noyau.

recompilation du noyau
On retrouve la compilation classique debian du noyau, ici en laissant se faire un oldconfig puisque (voir plus haut) on a récupèré la config du noyau courant comme base:

cd /usr/src/linux-source-2.6.18 make-kpkg --initrd --append-to-version "-pom" kernel_image modules_image dpkg -i ../*-pom*.deb

recompilation d’iptables

cd /usr/src/iptables-1.4.0 dpkg-buildpackage dpkg -i ../iptables-dev_1.4.0-3_i386.deb

Et voilà…
Bon, alors bien sûr, on est pas obligé de faire ça dans /usr/src et on peut utiliser un -r fakeroot avec le make-kpkg et le dpkg-buildpackage, si on a d’autres habitudes.
Sinon, si vous trouvez la bonne version de p-o-m qui permet d’installer tel ou tel patch avec tel noyau, n’hésitez pas à l’indiquer ici.
Par exemple, je n’ai pas trouvé la version qui me permet d’avoir la cible TARPIT (ce que j’essayais de faire au départ) et geoip avec le 2.6.18…