Next Previous Contents

2. Patch-O-Matic

2.1 Was is Patch-O-Matic ?

Das iptables Makefile enthält eine Funktionalität die sich `patch-o-matic' (oder `p-o-m') nennt. p-o-m erleichtert dir die Patches auszuwählen, die du möchtes, und patcht dann automatisch den Kernel für dich.

Zunächst solltest du dir die aktuellen CVS Sourcen holen. Damit ist sicher gestellt, dass du die jüngsten Erweiterungen benutzt. Um das zu erledigen, führe folgende Schritte durch:

# cvs -d :pserver:cvs@pserver.netfilter.org:/cvspublic login

(Wenn du nach dem Passwort gefragt wirst, gebe `cvs' an).

# cvs -d :pserver:cvs@pserver.netfilter.org:/cvspublic co netfilter/userspace netfilter/patch-o-matic

Es wird ein Verzeichnis `netfilter/' erstellt und alle Dateien werden innerhalb dieses Verzeichnisses für dich ausgescheckt.

Stelle sicher, dass sich deine Kernelsourcen in `/usr/src/linux/' befinden. Falls - aus welchen Gründen auch immer - der Kernel, den du patchen willst, sich nicht in`/usr/src/linux/' befindet, setze die Variable KERNEL_DIR so das sie auf deine Kernelsourcen zeigt:

# export KERNEL_DIR=/das/verzeichis/linux

Stelle sicher, dass die Abhängigkeiten in den Kernelsourcen stimmen. Wenn du unsicher bist:

# cd /usr/src/linux/
# make dep

Nun kannst du zurück zum Netfilter Verzeichnis in das Unterverzeichnis `userspace/' wechseln. Jetzt ist alles vorbereitet damit du p-o-m auszuführen kannst.

2.2 Patch-O-Matic ausführen

Wenn du im Unterverzeichnis `userspace/' bist, starte p-o-m:

# make patch-o-matic

Welcome to Rusty's Patch-o-matic!

Each patch is a new feature: many have minimal impact, some do not.
Almost every one has bugs, so I don't recommend applying them all!
-------------------------------------------------------

Already applied: 2.4.1 2.4.4
Testing... name_of_the_patch NOT APPLIED ( 2 missing files)
The name_of_the_patch patch:
   Here usually is the help text describing what
   the patch is for, what you can expect from it,
   and what you should not expect from it.
Do you want to apply this patch [N/y/t/f/q/?]

Patch-o-matic wird dann alle Patche durchgehen. Wenn ein Patch bereits installiert ist, siehst du das an der ersten Zeile `Already applied:'. Ist ein Patch noch nicht installiert, wird dir p-o-m den Namen des Patches und einige Erklärungen anzeigen. p-o-m teilt dir den Zustand mit: `NOT APPLIED ( n missing files)' meint schlicht, dass der Patch noch nicht installiert ist, während `NOT APPLIED ( n rejects out of n hunks)' generell meint:

  1. Entweder das Patchen konnte nicht sauber durchgeführt werden ...
  2. ...Oder der Patch ist bereits in dem Kernel enthalten, den du versuchst zu patchen.
Zuletzt wird du immer aufgefordert zu entscheiden, ob der Patch installiert werden soll oder nicht.

Als Daumenregel gilt die kurzen Erklärungen zu den Patchen aufmerksam zu lesen bevor du einen Patch installierst. Da es derzeit SEHR VIELE offizielle Patche für patch-o-matic gibt (und wahrscheinlich noch mehr inoffizielle), ist es nicht empfohlen alle zu installieren! Du solltest wirklich nur die Patches installieren, die du jetzt benötigst, auch wenn das bedeutet, dass du Netfilter neu kompilieren mußt, wenn du einmal mehr Patches benötigst.

Anmerkung des Übersetzers: Du solltest einen Patch nur dann installieren, wenn du die Erklärung zum Patch verstanden hast und dir sicher bist, dass du dieses Feature unbedingt brauchst!

Es wurde eine neue Variante von patch-o-matic entwickelt, die dir nur solche Patche anzeigt, von denen bekannt ist, dass sie sich sauber installieren lassen oder aber mindestens von denen bekannt ist, dass sie keine anderen Patche negativ beinflussen. Um diese Installationsart auszuführen, führe folgendes aus:

# make most-of-pom

Es arbeitet genauso wie patch-o-matic was die Bedienung und das Patchen angeht, es überspring schlicht die Entwickler-Patches (`developer-only').

Patch-o-matic an sich ist einfach nur ein Shellscript im Unterverzeichnis `patch-o-matic/' und heißt `runme'. Du kannst in das Verzeichnis wechseln und es von Hand aufrufen. Rufst du es ohne Parameter auf, wird es dir eine Hilfeseite ausgeben:

Usage: ./runme [--batch] [--reverse] [--exclude suite/patch-file ...] suite|suite/patch-file

  --batch       batch Modus, automatisches installieren der Patches
  --reverse     ausgewählte Patche deinstallieren
  --exclude     die benannten Patche auslassen

Die Patche befinden sich in den Verzeichnissen `patch-o-matic/pending/', `patch-o-matic/base', u.s.w... Dabei sind `pending' und `base' zwei Suitenamen. Führe ein ls im Verzeichnis `patch-o-matic' aus, um alle Suites zu sehen. Beispiele für den Aufruf von `runme':

./runme --batch pending
./runme --batch userspace/ipt_REJECT-fake-source.patch

Das erste Kommando installiert alle Patche der Suite pending (die Reihenfolge ist in der Datei `pending/SUITE' festgelegt). Das zweite Kommando installiert nur den Patch `ipt_REJECT-fake-source.patch' aus der userspace Suite.

2.3 Ok, und was als nächstes?

Nachdem du alle Patches installiert hast, die du installieren wolltest, ist der nächste Schritt das Neukompilieren und Installieren des Kernels. Diese HOWTO erklärt nicht wie das zu tun ist. Anstelle dessen kannst du das Linux Kernel HOWTO lesen.

Beim Konfigurieren deines Kernels, werden dir die neuen Optionen unter ``Networking Options -> Netfilter Configuration'' angezeigt. Wähle die von dir benötigten Optionen aus, kompiliere & installiere deinen neuen Kernel.

Ist der Kernel erstmal installiert kannst du mit dem Kompilieren und Installieren des ``iptables'' Paketes aus dem Verzeichnis `userspace/' wie folgt fortfahren:

# make && make install

Das war's! Deine neues iptables Packet ist installiert! Jetzt ist es an der Zeit die brandneuen Funktionalitäten zu benutzen.


Next Previous Contents