Kamis, 11 April 2013

Linux (Kernel)




Dalam komputasi, ekspresi reguler adalah pola tertentu yang menyediakan ringkas dan fleksibel sarana untuk "cocok" (sebutkan dan mengakui) string teks, seperti karakter tertentu, kata-kata, atau pola karakter. Singkatan umum untuk "regular expression" meliputi regex dan regexp.

Konsep ekspresi reguler pertama kali dipopulerkan oleh utilitas yang disediakan dengan distribusi Unix, khususnya editor ed dan grep filter [rujukan?] Sebuah ekspresi reguler menyediakan tata bahasa untuk bahasa formal, spesifikasi ini dapat diinterpretasikan oleh prosesor ekspresi reguler , yang merupakan program yang baik berfungsi sebagai generator parser atau meneliti teks dan mengidentifikasi substring yang menjadi anggota yang ditentukan (sekali lagi, formal) bahasa. Secara historis, konsep ekspresi reguler dikaitkan dengan formalisme Kleene tentang set biasa, diperkenalkan pada tahun 1950.

Berikut ini adalah contoh spesifikasi yang dapat dinyatakan sebagai ekspresi reguler:

    
Urutan karakter "mobil" muncul berturut-turut, seperti dalam "mobil", "kartun", atau "bikarbonat"
    
Kata "mobil" ketika muncul sebagai kata terisolasi (dan dibatasi dari kata lain, biasanya melalui karakter spasi)
    
Kata "mobil" bila didahului dengan kata "motor" (dan dipisahkan oleh pembatas bernama, atau beberapa.)

Kalimat biasa digunakan oleh banyak teks editor, utilitas, dan bahasa pemrograman untuk mencari dan memanipulasi teks berdasarkan pola. Beberapa bahasa ini, termasuk Perl, Ruby, AWK, dan Tcl, mengintegrasikan ekspresi reguler ke dalam sintaks bahasa inti itu sendiri. Bahasa pemrograman lain seperti. Bahasa NET, Java, Python dan C + + (karena C + +11) bukannya memberikan ekspresi reguler melalui perpustakaan standar. Bagi banyak bahasa lainnya, seperti Object Pascal (Delphi), C dan versi sebelumnya dari C + +, perpustakaan non-core yang tersedia.

Sebagai contoh sintaks, ekspresi reguler \ bex dapat digunakan untuk mencari semua contoh string "mantan" yang terjadi setelah "batas kata". Jadi \ bex akan menemukan pencocokan string "mantan" di dua lokasi yang mungkin, (1) pada awal kata-kata, dan (2) antara dua karakter dalam string, di mana yang pertama adalah bukan karakter kata dan yang kedua adalah kata karakter. Misalnya, dalam kasus (1), string "Teks untuk ahli", \ bex cocok dengan "mantan" dalam "ahli" tapi tidak dalam "Teks" (karena "mantan" terjadi di dalam kata dan tidak segera setelah kata batas). Demikian pula, dalam kasus (2), string "& ahli", \ bex cocok dengan "mantan" dalam "ahli" karena batas kata di '&'.

Banyak sistem komputasi modern memberikan karakter wildcard dalam pencocokan nama file dari sistem file. Ini adalah kemampuan inti dari banyak kerang perintah-line dan juga dikenal sebagai globbing. Wildcard berbeda dari ekspresi reguler secara umum mengungkapkan hanya bentuk terbatas pola.
Banyak sistem komputasi modern memberikan karakter wildcard dalam pencocokan nama file dari sistem file. Ini adalah kemampuan inti dari banyak kerang perintah-line dan juga dikenal sebagai globbing. Wildcard berbeda dari ekspresi reguler secara umum mengungkapkan hanya bentuk terbatas pola.
Sejarah
Pada April 1991, Linus Torvalds, seorang mahasiswa berusia 21 tahun dari Universitas Helsinski, Finlandia mulai memikirkan sesuatu ide sederhana untuk suatu Sistem Operasi. Ia memulai dengan task switcher dalam Bahasa Rakitan x86 pada Intel 80386 dan sebuah driver Terminal. Pada 25 Agustus 1991, Torvalds memposting sebuah pesan di comp.os.minix, sebuah newsgroup di Usenet:
Setelah itu, banyak orang berkontribusi pada proyek ini. Pada awalnya, komunitas MINIX berkontribusi kode dan ide pada Kernel Linux. Pada saat itu, Proyek GNU telah membuat banyak komponen yang diperlukan untuk sebuah sistem operasi gratis, tapi, kernel mereka, GNU Hurd, pada saat itu masih belum sempurna dan belum tersedia. Sistem operasi BSD pada waktu itu juga belum membebaskan diri dari masalah legalitas. Meskipun pada versi awal fungsinya masih sangat terbatas, pengembang dan pengguna Linux berkembang cepat.
Pada September 1991, Linux versi 0.01 telah dirilis di server FTP ftp.funet.fi milik Finnish University and Research Network (FUNET). Rilis pertama tersebut memiliki 10,239 baris kode. Pada Oktober 1991, Linux versi 0.02 dirilis.
Pada Desember 1991, Linux 0.11 dirilis, versi ini adalah versi pertama yang di host oleh Linus Torvalds sendiri. Linuz 0.11 dapat di kompilasi oleh komputer yang menjalankan Linux 0.11. Saat ia merilis versi 0.12 di bulan Februari 1992, Torvalds mengadopsi GNU General Public License (GPL), dan berhenti menggunakan lisensi yang ia buat sendiri, yang tidak boleh didistribusikan secara komersil.
Newsgroup dengan nama alt.os.linux juga dibuat, dan pada 19 Januari 1992, post pertama pada alt.os.linux dibuat.[9] Pada 31 Maret 1992, alt.os.linux berubah menjadi comp.os.linux.
X Window System juga segera di port ke Linux. Pada Maret 1992, Linux versi 0.95 adalah versi pertama yang bisa menjalankan X. Lompatan versi yang jauh ini (dari 0.1x ke 0.9x) karena Torvalds merasa fitur-fiturnya sudah lumayan lengkap dan ia menganggap sudah layak untuk langsung ke versi 1.0. Namun, ternyata langkah ini terlalu berlebihan, karena dari tahun 1993 sampai awal 1994, muncul 15 versi perkembangan Linux 0.99.
Pada 14 Maret 1994, Linux 1.0.0 dirilis, dengan 176,250 barus kode. Pada Maret 1995, Linux 1.2.0 dirilis (310,950 baris kode).
Versi 2 Linux, dirilis pada 9 Juni 1996, dan diikuti oleh perubahan versi besar dibawah versi kepala 2:
  • 25 Januari 1999 - Linux 2.2.0 dirilis (1,800,847 baris kode).
  • 18 Desember 1999 - patch IBM mainframe untuk versi 2.2.13 diterbitkan, yang memperbolehkan Linux dijalankan di mesin bisnis.
  • 4 Januari 2001 - Linux 2.4.0 dirilis (3,377,902 baris kode).
  • 17 Desember 2003 - Linux 2.6.0 dirilis (5,929,913 baris kode).
Mulai 2004, proses rilis diubah dan kernel baru mulai dirilis rutin setiap 2-3 bulan, dengan nomor 2.60, 2.6.1, sampai 2.6.39.
Pada 21 Juli 2011 Linus Torvalds mengumumkan rilis Linux 3.0. Lompatan versi ini bukan karena perubahan teknologi besar-besaran dibandingkan dengan Linux 2.6.39;[12] tetapi menandakan ulang tahun ke 20 kernel linux. Proses waktu rilis tetap sama.
Per tahun 2012, Linux 3.2 telah memiliki 14,998,651 baris kode.
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.

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.

Kompile Modul

Sebelum instalasi kernel, modul-modul yang berhubungan perlu di kompile juga dengan:
make modules
Pastikan tidak ada kesalahan.

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.

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 kadang-kadang 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.