Apakah anda pernah bertemu masalah dalam jaringan komputer berbasis GNU/Linux yang hanya dapat diselesaikan dengan melakukan patch kernel? Misalnya, untuk melakukan filtering paket berdasarkan protokol pada lapisan OSI ke-7.
Meskipun tulisan ini ditulis menggunakan distribusi Debian Sarge, namun saya yakin bisa juga diterapkan pada versi setelahnya.
Pertama siapkan lingkungan untuk proses kompilasi. Pastikan daftar repository dari alamat yang benar. Dalam kasus ini beberapa mirror di Indonesia sudah tidak mempunyai arsip untuk Debian Sarge, maka saya menggunakan mirror dari situs resmi Debian.
Masukkan repository ke dalam file /etc/apt/sources.list, menggunakan editor favorit Anda. Saya menggunakan vi.
proxy:~# vi /etc/apt/sources.list
Tambahkan baris berikut,
deb http://archive.debian.org/debian/ sarge main deb-src http://archive.debian.org/debian/ sarge main
Sesuaikan lokasi repository di atas sesuai dengan distribusi yang Anda gunakan.
Kemudian update database sistem.
proxy:~# apt-get update
Install paket kernel-package.
proxy:~# apt-get install kernel-package Reading Package Lists... Done Building Dependency Tree... Done Suggested packages: kernel-source libdb3-dev docbook-utils The following NEW packages will be installed: kernel-package 0 upgraded, 1 newly installed, 0 to remove and 49 not upgraded. Need to get 357kB of archives. After unpacking 1888kB of additional disk space will be used. Get:1 http://archive.debian.org sarge/main kernel-package 8.135 [357kB] Fetched 357kB in 5s (69.7kB/s) Selecting previously deselected package kernel-package. (Reading database ... 36072 files and directories currently installed.) Unpacking kernel-package (from .../kernel-package_8.135_all.deb) ... Setting up kernel-package (8.135) ...
Install source code kernel yang sedang berjalan.
proxy:~# apt-get install kernel-source-`uname -r|cut -f1 -d"-"` Reading Package Lists... Done Building Dependency Tree... Done Suggested packages: tk8.4-dev tk-dev The following NEW packages will be installed: kernel-source-2.4.27 0 upgraded, 1 newly installed, 0 to remove and 49 not upgraded. Need to get 31.0MB of archives. After unpacking 31.2MB of additional disk space will be used. Get:1 http://archive.debian.org sarge/main kernel-source-2.4.27 2.4.27 -10sarge5 [31.0MB] Fetched 31.0MB in 4m29s (115kB/s) Selecting previously deselected package kernel-source-2.4.27. (Reading database ... 36183 files and directories currently installed.) Unpacking kernel-source-2.4.27 (from .../kernel-source-2.4.27_2.4.27 -10sarge5_all.deb) ... Setting up kernel-source-2.4.27 (2.4.27-10sarge5) ...
Download patch yang diinginkan dari situs terkait.
proxy:~# cd /usr/src/ proxy:/usr/src# wget http://biznetnetworks.dl.sourceforge.net\ /project/l7-filter/l7-filter%20kernel%20version/2.22 /netfilter-layer7-v2.22.tar.gz
Uraikan kode sumber kernel.
proxy:/usr/src# tar -xjvf kernel-source-2.4.27.tar.bz2 > /dev/null
Lakukan hal yang sama untuk patch jika perlu.
proxy:/usr/src# tar -xzvf netfilter-layer7-v2.22.tar.gz
Buat link untuk kode sumber kernel agar mudah.
proxy:/usr/src# ln -s kernel-source-2.4.27 linux
Lakukan proses patch kernel dengan menjalankan perintah seperti berikut,
proxy:/usr/src# cd linux proxy:/usr/src/linux# patch -p1 < ../netfilter-layer7-v2.22 /kernel-2.4-layer7-2.22.patch
Sebelum kernel dikompilasi, harus dibuat konfigurasi untuk menentukan fitur dan modul yang akan diaktifkan. Agar mempercepat proses konfigurasi lebih baik menggunakan konfiguras kernel yang sudah berjalan dengan membuat perubahan pada bagian yang diperlukan untuk menggunakan patch kernel.
proxy:/usr/src/linux# cp /boot/config-`uname -r` .config
Melakukan konfigurasi bisa dilakukan dengan beberapa cara, tapi gunakan saja perintah di bawah paragraf ini. Karena menurut saya yang paling mudah.
proxy:/usr/src/linux# make menuconfig
Muat konfigurasi dari kernel lama dengan memilih menu “Load an Alternate Configuration File”.
Kemudian pilih urutan menu di bawah untuk mengaktifkan layer 7 match support.
Networking options ---> IP: Netfilter Configuration ---> Layer 7 match support (EXPERIMENTAL) (NEW) Layer 7 debugging output (EXPERIMENTAL)
Proses kompilasi kernel dan pembuatan paket .deb sesungguhnya dilakukan dengan perintah.
proxy:/usr/src/linux# /usr/bin/make-kpkg --initrd --revision=1\ --append-to-version=-netfilter-l7 buildpackage
Setelah selesai, pada direktori /usr/src akan dihasilkan file-file:
kernel-doc-2.4.27-netfilter-l7_1_all.deb kernel-headers-2.4.27-netfilter-l7_1_i386.deb kernel-image-2.4.27-netfilter-l7_1_i386.deb kernel-source-2.4.27-netfilter-l7_1_all.deb kernel-source-2.4.27-netfilter-l7_1_i386.changes
Seperti biasa untuk menginstal paket software di Debian, digunakan perintah dpkg.
proxy:/usr/src# dpkg -i kernel-image-2.4.27-netfilter-l7_1_i386.deb Selecting previously deselected package kernel-image-2.4.27-netfilter-l7. (Reading database ... 27360 files and directories currently installed.) Unpacking kernel-image-2.4.27-netfilter-l7 (from kernel-image-2.4.27 -netfilter-l7_1_i386.deb) ... Setting up kernel-image-2.4.27-netfilter-l7 (1) ... /initrd.img does not exist. Installing from scratch, eh? Or maybe you don't want a symbolic link here. Hmm? Lets See. /vmlinuz does not exist. Installing from scratch, eh? Or maybe you don't want a symbolic link here. Hmm? Lets See. Searching for GRUB installation directory ... found: /boot/grub . Testing for an existing GRUB menu.list file... found: /boot/grub/menu.lst . Searching for splash image... none found, skipping... Found kernel: /vmlinuz-2.4.27-netfilter-l7 Found kernel: /vmlinuz-2.4.27-2-386 Updating /boot/grub/menu.lst ... done
Proses instalasi akan melakukan beberap perubahan pada sistem, salah satunya adalah penambahan baris-baris pada file konfigurasi grub boot loader. File tersebut adalah /boot/grub/menu.lst.
title Debian GNU/Linux, kernel 2.4.27-netfilter-l7 root (hd0,0) kernel /vmlinuz-2.4.27-netfilter-l7 root=/dev/hda2 ro initrd /initrd.img-2.4.27-netfilter-l7 savedefault boot title Debian GNU/Linux, kernel 2.4.27-netfilter-l7 (recovery mode) root (hd0,0) kernel /vmlinuz-2.4.27-netfilter-l7 root=/dev/hda2 ro single initrd /initrd.img-2.4.27-netfilter-l7 savedefault boot
Selesai sudah proses kompilasi ulang kernel setelah dilakukan proses patch. Untuk menguji dan menggunakan kernel baru ini silahkan reboot mesin dan pilih kernel baru Anda dari menu boot loader.
E.O.A