Il Makefile di iptables
contiene una funzionalità chiamata `patch-o-matic' (oppure `p-o-m') il cui scopo
è quello di aiutare l'utente nel processo di scelta/selezione delle patch desiderate e nella loro applicazione al kernel
in modo automatico.
Prima di tutto è necessario procurarsi l'ultima versione CVS in modo da essere sicuri di utilizzare le più recenti, a questo scopo si utilizzi:
# cvs -d :pserver:cvs@pserver.netfilter.org <mailto:cvs@pserver.netfilter.org>:/cvspublic login
(Quando viene richiesta la password si digiti `cvs').
# cvs -d :pserver:cvs@pserver.netfilter.org <mailto:cvs@pserver.netfilter.org>:/cvspublic co netfilter/userspace netfilter/patch-o-matic
Questi comandi creeranno la directory di primo livello `netfilter/' e verificheranno tutti i file presenti.
Ci si assicuri che il sorgente del kernel sia presente nella directory `/usr/src/linux/', se per qualche ragione il kernel a cui si desidera applicare le patch non è collocato in `/usr/src/linux/' si utilizzi la variabile KERNEL_DIR per specificare il percorso corretto:
# export KERNEL_DIR=/the/path/linux
Si verifichi inoltre che le dipendenze siano già state prodotte, se si è incerti si utilizzi:
# cd /usr/src/linux/
# make dep
A questo punto si può tornare alla directory netfilter, precisamente nella directory `userspace/' e invocare p-o-m.
Mentre si è nella directory `userspace/' si esegua il comando:
# 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/?]
p-o-m comincerà a setacciare ad una ad una tutte le patch e, se la patch in esame risulterà già applicata, visualizzerà il messaggio sopra riportato avente nella prima linea la dicitura `Already applied:', in caso contrario visualizzerà il nome della patch seguito da una breve spiegazione.
p-o-m segnalerà cosa ha determinato: `NOT APPLIED ( n missing files)' indica semplicemente che la patch non è stata applicata, mentre `NOT APPLIED ( n rejects out of n hunks)' può significare:
E' buona regola, prima di applicare una patch, leggere con attenzione la breve spiegazione che viene visualizzata, siccome sono disponibili al momento MOLTE patch ufficiali per patch-o-matic (e probabilmente molte anche non ufficiali) non è raccomandabile applicarle tutte! Si dovrebbe considerare di applicare solo quelle di cui si ha un reale bisogno, anche se ciò significa dover ricompilare netfilter ogni volta che si ha la necessità di ulteriori patch.
E' stata creata un nuova versione di patch-o-matic che provvede a presentare un elenco delle patch che possono essere applicate in modo pulito, o almeno che si sia riscontrato che non possano corrompere qualsiasi altra patch. Per invocarla, si esegua:
# make most-of-pom
Essa funziona allo stesso modo di patch-o-matic compresa interazione e applicazione delle patch, sarà semplicemente evitato l'utilizzo delle patch `developer-only' ossia destinate ai soli sviluppatori.
Di fatto patch-o-matic non è altro che un semplice script shell di nome `runme' presente nella directory `patch-o-matic/'. E' possibile accedere alla directory con il solito comando cd ed eseguirlo a mano, se lo si esegue senza argomenti sarà visualizzato il suo messaggio di aiuto:
Usage: ./runme [--batch] [--reverse] [--exclude suite/patch-file ...] suite|suite/patch-file
--batch batch mode, automatically applying patches
--reverse back out the selected patches
--exclude excludes the named patches
Le patch sono contenute nella directory `patch-o-matic/pending/', `patch-o-matic/base', ecc.. In questo caso `pending' e `base' sono i nomi di due suite, per ottenere un elenco completo eseguire il comando ls nella directory `patch-o-matic'. Esempi di utilizzo di `runme':
./runme --batch pending
./runme --batch userspace/ipt_REJECT-fake-source.patch
Con il primo comando saranno applicate tutte le patch della suite submitted poi quelle della suite pending (l'ordine applicato è menzionato nel file `pending/SUITE'), con il secondo comando sarà applicata la sola patch `ipt_REJECT-fake-source.patch' presente nella suite userspace.
Una volta applicate tutte le patch desiderate, il passo successivo consiste nel ricompilare il kernel e nella sua installazione. Questo HOWTO non intende spiegare come effettuare queste operazioni, a questo scopo si legga il Linux Kernel HOWTO.
Durante la configurazione del kernel si dovrebbero notare delle nuove opzioni in ``Networking Options -> Netfilter Configuration'', si selezionino le opzioni a cui si è interessati, quindi si ricompili ed installi il nuovo kernel.
Quando il kernel sarà stato installato si potrà proseguire compilando ed installando il pacchetto ``iptables'', dalla directory `userspace/', utilizzando:
# make all install
Questo è tutto! Il vostro nuovo e scintillante iptables è installato! Ora è tempo di utilizzare le nuove funzionalità.