Disusun sebagai tugas Mata Kuliah Sistem Operasi Dosen Pengampu Bayu Adhi Nugroho,M.Kom
JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS ISLAM NEGERI MAULANA MALIK IBRAHIM MALANG SEPTEMBER 2012
KERNEL LINUX
Kholid Abdillah P. Teknik Informatika, UIN Maliki Malang kholidabdillah@gmail.com
KERNEL LINUX
a. Pengertian Kernel Kernel adalah program yang dimuat saat boot yang berfungsi sebagai interface antara user-level program dengan hardware. Fungsinya seperti layaknya sistem operasi, menangani task switching dalam multitasking, menangani permintaan membaca atau menulis peralatan disk, melakukan tugas-tugas network serta mengatur penggunaan memori. Secara teknis Linux hanyalah sebuah kernel. Program lain seperti kompiler, editor, window manager dsb yang disertakan dalam paket hanyalah sebuah distribusi (RedHat , Slackware, SuSE dsb) yang melengkapi kernel menjadi sebuah sistem operasi yang lengkap. b. Download Kernel Source kernel versi 2.0.34 RedHat 5.1 sudah disediakan dalam bentuk paket RPM dalam setiap cd distribusinya. Tapi kita masih bisa mendapatkan versi yang lebih baru di web site RedHat atau dibeberapa sumber di internet seperti: http://www.kernel.org ftp://ftp.cdrom/pub/linux/sunsite/kernel ftp://sunsite.unc.edu/pub/Linux/kernel ftp://tsx-11.mit.edu/pub/linux/source/system Source kernel tersebut biasanya dalam format linux-X.X.XX.tar.gz dimana X.X.XX menunjukkan nomor versi kernel, misalnya 2.0.35. Nomor versi kernel tersebut terdiri dari 3 bagian: major number, minor number dan revision number yang masing-masing dipisah titik. Angka 2 pada kernel 2.0.34 menunjukkan nomor major. Angka ini akan jarang berubah untuk waktu yang lama. Perubahan pada nomor ini menandakan adanya perubahan besar atau upgrade terhadap kernel. Angka 0 pada kernel 2.0.34 menunjukkan nomor minor atau stabilitas. Angka genap (misal 0, 2, 4 dst) menandakan kernel stabil sedangkan angka ganjil menandakan kernel dalam tahap pengembangan atau development. Kernel ganjil mengandung experimental code dan feature terbaru yang ditambahkan oleh developer-nya. Kernel genap pada saat di rilis sudah tidak lagi ada penambahan apapun dan dianggap sudah stabil. Kadang-kadang
kernel ganjil ini malah stabil dan biasanya dipakai oleh mereka yang sedang melakukan percobaan terhadap feature-feature baru tersebut. Dua angka terakhir, 34 menunjukkan nomor revisi. Ini menandakan current patch versi tersebut. Selama tahap pengembangan, versi baru bisa di rilis hingga dua kali seminggu. c. Konfigurasi Kernel Source kernel yang sudah di download biasanya di unpack di direktori /usr/src/. tar -zxvf linux-2.0.34.tar.gz Perintah tersebut akan menguraikan file-file ke dalam direktori /usr/src/linux. Bila perlu sempatkan membaca file /usr/src/linux/README. Konfigurasi dimulai dari direktori /usr/src/linux. Ada tiga cara: 1. make config, berupa text base interface, cocok untuk user yang memiliki terminal model lama dan tidak memiliki seting termcap. 2. make menuconfig, berupa text base juga tapi memiliki puldown menu berwarna, digunakan untuk user yang memiliki standar console. 3. make xconfig, interface menggunakan layar grafik penuh, untuk user yang sudah memiliki X Window. Bila berhasil layar Linux Kernel Configuration akan ditampilkan setelah perintah diatas dijalankan. Ada sekitar 14 menu pilihan dimulai dari Code maturity level options sampai Kernel hacking. Masing-masing memiliki sub-menu bila dipilih dan pilihan yes(y), module(m) atau no(no). Setiap pilihan untuk dimuat/kompile ke dalam kernel atau y akan memperbesar ukuran kernel nantinya. Jadi pilih feature-feature yang sering di gunakan yang di muat ke dalam kernel atau jadikan module untuk feature yang tidak sering di gunakan, misalnya PPP support.
Setelah semua pilihan dianggap sesuai, konfigurasi di simpan dengan memilih save sebelum keluar dari layar menu konfigurasi. Konfigurasi akan disimpan dalam sebuah file. Langkah selanjutnya adalah kompilasi atau dikenal dengan building the kernel. d. Kompilasi Kernel Siapkan kesabaran, terutama bagi user yang melakukan kompilasi kernel di mesin yang memiliki prosesor lambat dan sedikit memori. Kompilasi bisa memakan waktu 10 menit pada mesin dengan prosesor Pentium yang cepat hingga sampai 1,5 jam pada mesin Intel 386. Waktu kompilasi juga bertambah bila sistem digunakan untuk menjalankan proses lain pada saat itu. Tetap di direktori /usr/src/linux, jalankan perintah: make dep; make clean; make zImage Perintah pertama, make dep, membaca file konfigurasi dan membentuk dependency tree. Proses ini mengecek apa yang di kompile dan apa yang tidak di kompile. Selanjutnya, make clean, menghapus seluruh jejak kompilasi yang pernah dilakukan sebelumnya. Ini memastikan agar tidak ada feature versi lama yang tersisa. Terakhir, make zImage, adalah kompilasi sesungguhnya. Bila tidak ada pesan kesalahan, akan terbentuk kernel yang terkompresi dan siap di instalasi. e. Kompile Modul Sebelum instalasi kernel, modul-modul yang berhubungan perlu di kompile juga dengan: make modules Pastikan tidak ada kesalahan. f. Instalasi Kernel Cek lokasi kernel, biasanya nama kernel dimulai dengan vmlinuz, biasanya ada di direktori /boot. Atau buka file /etc/lilo.conf untuk memastikannya. Setelah itu copy file /usr/src/linux/arch/i386/boot/zImage ke direktori /boot dengan nama lain contohnya: cp /usr/src/linux/arch/i386/boot/zImage /boot/vmlinuz-2.0.34-baru Catatan: bila tidak ditemukan file zImage, berarti masih ada kesalahan dalam kompilasi.
Sebelum kernel modul di instalasi, sebaiknya backup dulu modul lama. Modul ada di direktori /lib/modules, rename modul dengan nama lain: cd /lib/modules mv 2.0.34 2.0.34-backup Keuntungan membackup modul ini adalah bila ternyata nanti modul baru tidak berjalan baik, maka modul lama bisa digunakan lagi dengan menghapus modul baru dan merename modul backup menjadi 2.0.34 kembali. Selanjutnya, kembali lagi ke /usr/src/linux dan jalankan perintah di bawah untuk menginstalasi modul ke kernel: make modules_install Akhirnya, edit /etc/lilo untuk menentukan kernel yang akan di pakai dan jangan lupa menjalankan lilo: Lilo Selesai, reboot sistem dan lihat hasilnya. g. Patch Kernel Setiap di keluarkannya kernel versi baru juga di keluarkan sebuah file patch. File patch ini jauh lebih kecil dari file source kernel sehingga jauh lebih cepat bila digunakan untuk upgrade kernel. File patch hanya bekerja untuk mengupgrade satu versi kernel dibawahnya. Misalnya, versi kernel 2.0.27 hanya bisa diupgrade dengan file patch 2.0.28 menjadi kernel 2.0.28. Begitu pula bila kernel 2.0.27 tersebut ingin diupgrade menjadi kernel 2.0.30 maka diperlukan file patch 2.0.28, 2.0.29 dan 2.0.30. Perhatikan, kernel 2.0.27 tidak bisa langsung dipatch menjadi 2.0.30 tanpa melalui file patch 2.0.28, 2.0.29 dan 2.0.30. File-file patch tersebut juga tersedia pada direktori yang sama di FTP dan Website yang biasa menyediakan source kernel. File-file patch tersedia dalam format .gz, setelah di download, pindahkan file patch ini ke direktori /usr/src. Pastikan source kernel versi lama sudah di instalasi juga. Pada direktori yang lama jalankan perintah: gzip -cd patch-2.0.28.gz | patch -p0 Setelah itu periksa apakah ada file yang berakhiran .rej di direktori /usr/src/linux. Bila ditemukan file seperti itu maka patch yang dilakukan tidak berhasil, periksa kembali apakah file patch yang dipakai sudah benar. Beberapa file patch menurut berita kadangkadang memang tidak sesuai untuk sebuah source kernel, terutama source kernel yang
telah di modifikasi oleh developer untuk kepentingan distribusi Linux. Saya tidak tahu pasti mengenai hal ini.
Setelah kita mengkongurasi suatu kernel maka langkah selanjutnya adalah membuat image yang akan digunakan dalam proses booting. Perintah yang dieksekusi adalah : make dep Untuk membuat dependency dari setiap fasilitas dan service dari kernel
Module-module yang diperlukan dalam suatu kernel dibentuk dan diletakkan di /lib/modules, modul dalam kernel dibentuk dengan mengeksekusi perintah berikut : make modules Untuk membentuk modul-modul make modules_install Untuk menempatkan modul-modul yang sudah dibentuk ke dalam /lib/modules
lain. Dan yang paling penting mengajarkan kita bagaimana untuk memodifikasi linux kita sesuai selera dan kebutuhan kita. 2. Membangun LFS menghasilkan linux system yang sangat solid Saat kalian menginstal linux yang biasa di distribusikan, anda akan berakhir dengan menginstal banyak program bawaan yang munkin akan jarang di gunakan. Program tsb hanya akan memakan ruang disk kita. Tidak sulit ketika menginstal LFS dengan kapasitas 100MB. Kita membuat system yang cukup untuk menjalankan apache web server, total disk yang di pakai sekitar 8MB sampai 5MB atau kurang. Coba itu dengan linux yang biasa di distribusikan. 3. LFS sangat flexible Bangunan LFS bisa dibandingkan dengan rumah selesai. LFS akan memberikan kerangka dari sebuah rumah, tetapi terserah pada Anda untuk menginstal pemipaan, saluran listrik, dapur, kamar mandi, wallpaper, dll Anda memiliki kemampuan untuk mengubahnya menjadi jenis sistem apapun yang Anda butuhkan untuk menjadi, disesuaikan sepenuhnya Anda. 4. LFS menawarkan keamanan tambahan Anda akan mengkompilasi seluruh sistem dari source, sehingga memungkinkan Anda untuk mengaudit semuanya, jika Anda ingin melakukannya, dan menerapkan semua patch keamanan yang Anda inginkan atau perlu mengajukan permohonan. Anda tidak perlu menunggu orang lain untuk menyediakan paket biner baru yang (semoga) perbaikan lubang keamanan. Seringkali, Anda tidak pernah benar-benar tahu apakah lubang keamanan yang tetap atau tidak kecuali jika Anda melakukannya sendiri. Tahap-tahap dari membuat LFS garis besarnya adalah sebagai berikut : Buat partisi kosong dulu dengan format partisi yang support buat linux Buat temporary file system.. Jadi kasarannya kita buat tools chain / rantai untuk membuat sistem asli dari linux yang akan kita buat (ya kasarannya buat konsole sementara untuk ngebuild sistem yang asli) Setelah itu kita chroot ke temporary sistem tadi, baru kita build sistem yang asli Setelah semua sistem selesai dibuat, kita buat bootscriptnya (script2 yang akan tereksekusi saat booting) Set grub loadernya sehingga sistem bisa load di awal menyalakan Komputer Jadi LFS, lalu kita baru buat script2 initnya
REFERENSI
[1 ]http://blog.ub.ac.id/briandanaa/2012/06/10/apa-yang-dimaksut-linux-from-scratch/ [2] http://kambing.ui.ac.id/bebas/v01/TimPandu/sysadm-linux-single.pdf [3] http://kur2003.if.itb.ac.id/file/FMKL-K2-13.pdf [4] http://hastiarblog.blogspot.com/2010/10/comand-line-dan-administrasi-sistem.html [5] http://pemula.linux.or.id/pengguna/kompile-kernel.html