1 TUTORIAL CRAMFS Berita Ulasan Utama Bisnis Alternatif Praktik Instan Solusi Tutorial Mengenal CRAMFS Linux mengenal banyak sekali filesistem. Mulai ...
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
CRAMFS
Mengenal CRAMFS Linux mengenal banyak sekali filesistem. Mulai yang besar dan siap digunakan di dunia enterprise sampai yang kecil dan siap digunakan di dunia embedded. Di tulisan ini, kita akan membahas cramfs, salah satu filesistem kecil yang sering digunakan oleh berbagai distro untuk berbagai kebutuhan.
B
icara soal filesistem, kita bicara soal hal yang sangat mendasar. Kita bicara bagaimana file diatur dalam satu partisi ataupun satu image. Filesistem akan berpengaruh langsung terhadap filefile yang kita miliki. Saat ini, di Linux kita mengenal banyak sekali filesistem. Mulai dari filesistem yang didesain untuk Linux seperti ext2, ext3, reiserfs, xfs, dan jfs. Semuanya adalah filesistem besar yang siap mengatur sampai terabyte data atau bahkan lebih. Hampir semuanya dari mereka dibangun dengan algoritma super rumit yang memeras otak, agar Linux siap melayani lebih baik lagi, terutama untuk di dunia enterprise yang tidak kompromi terhadap kegagalan. Di luar itu, Linux juga mampu membaca (atau bahkan menulis ke beberapa yang disebutkan) berbagai filesistem dari dunia luar, seperti NTFS dan FAT milik Windows, HFS milik Apple, BeFS milik BeOS, VxFS milik Veritas, UFS yang digunakan di beberapa UNIX, QNX yang digunakan di berbagai sistem realtime dan lain sebagainya. Dengan demikian, kita tetap mampu mengakses filefile kita yang disimpan di sistem lain dengan mudah. Selain yang telah disebutkan, Linux mendukung pula berbagai filesistem-filesistem kecil yang siap digunakan pada sistem dengan resource rendah, atau kondisi di mana hanya filesistem sederhana yang diperlukan. Salah satunya adalah CRAMFS yang akan kita bahas kali ini.
Apakah CRAMFS? CRAMFS singkatan dari Compressed ROM Filesystem. Dengan demikian, CRAMFS adalah filesistem read-only yang terkompres.
50
INFOLINUX 02/2006
CRAMFS dirancang untuk menjadi filesistem yang sangat sederhana dan kecil, sehingga dapat digunakan di berbagai sistem embedded ataupun sistem dengan resource rendah. Hebatnya lagi, walaupun merupakan filesistem terkompres, image CRAMFS bisa langsung diakses tanpa harus melakukan unkompresi terlebih dahulu. Langsung bisa digunakan dalam kondisi apa adanya, yaitu terkompres. Pembacaan random (random page access) juga dimungkinkan. Untuk efisiensi, walaupun merupakan filesistem terkompres, meta data pada CRAMFS tidak dikompres, melainkan menggunakan algoritma lain yang lebih space-efficient dibandingkan dengan filesistem lain.
Contoh penggunaan CRAMFS Seperti disebutkan sebelumnya, CRAMFS sangat cocok digunakan pada sistem embedded, sistem yang memiliki resource rendah, ataupun kondisi di mana hanya filesistem sederhana yang dibutuhkan. Pada kenyataannya, di distribusi Linux saja, CRAMFS digunakan oleh: Debian pada image ramdisk (initrd). SUSE pada installation image. Pada saat melakukan instalasi, image CRAMFS akan digunakan sebagai image root filesistem. Pada initial ramdisk image dan installation image, CRAMFS digunakan karena hanya filesistem sederhana yang dibutuhkan. Hal ini disebabkan karena pada ramdisk image, kita hanya akan melakukan tindakan-tindakan yang juga sederhana. Secara umum, yang diperlukan hanyalah memasukkan module-modul kernel yang dibutuhkan selama proses boot.
www.infolinux.web.id
Fitur dan keterbatasan CRAMFS Berikut ini, kita akan membahas beberapa fitur dan keterbatasan CRAMFS. CRAMFS memiliki fitur-fitur berikut ini: Kecil. Dapat diakses tanpa harus di-extract terlebih dahulu. Sederhana, sangat memungkinkan untuk dimodifikasi oleh developer filesystem lain untuk berbagai kebutuhan. Sementara, CRAMFS memiliki keterbatasan berikut ini: Merupakan filesistem Read-only. Untuk alasan kesederhanaan, CRAMFS dirancang untuk hanya dapat dibaca saja. Menerapkan penulisan acak pada image terkompres merupakan hal yang susah dilakukan. Ukuran filesistem maksimal adalah 256 MB. Hal ini sebenarnya sudah jauh lebih dari cukup untuk kondisi sistem yang menggunakan CRAMFS. Pada initrd image misalnya, paling-paling ukuran maksimal filesistem hanya akan berkisar antara 1 sampai 2 MB. Sementara, pada installation image SUSE, ukuran filesistem juga hanya sekitar 60 MB. Masih jauh dari ukuran maksimal yang diperbolehkan. Bahkan, kalau dipikir-pikir, ukuran 256 MB tersebut sudah bisa digunakan untuk membuat distro live sederhana. Ukuran file dalam filesistem maksimal adalah 16 MB. Dalam perbandingan dengan ukuran maksimal filesistem, ukuran 16 MB ini sudah sangat besar. Pada initial ramdisk image, harusnya tidak ada file yang berukuran sampai 16 MB. Sementara, pada installation image sekalipun, file berukuran sebesar 16 MB
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
CRAMFS
juga tidak ditemukan. Kecuali, kalau kita ingin menambahkan video klip ke dalam CRAMFS, yang mana penggunaannya menjadi kurang tepat. Hanya 8 bit terendah dari informasi gid yang akan disimpan. Hardlink didukung, namun file yang memiliki hardlink tetap akan memiliki link count 1. Pada filesistem ‘normal’, untuk setiap hardlink yang dikenakan pada suatu file, jumlah link count pada file tersebut akan bertambah satu. Direktori pada CRAMFS tidak memiliki entri . dan . . Tidak ada informasi timestamp yang disimpan. Semua file secara default akan memiliki informasi waktu sesuai epoch (1 Januari 1970). Implementasi CRAMFS saat ini mengharuskan CRAMFS dibuat dan dibaca pada sistem dengan endianness yang sama. Kita mengenal dua tipe endianness: big endian dan little endian. CRAMFS hanya dapat dibaca pada kernel yang memiliki ukuran page cache
4096 (PAGE_CACHE_SIZE = 4096). Ini dipertimbangkan sebagai bug. Dengan melihat fitur dan keterbatasan yang dimiliki oleh CRAMFS, tentu kita mempertimbangkan apakah kebutuhan kita bisa diselesaikan dengan menggunakan CRAMFS. Berikut ini adalah beberapa pertimbangan untuk kapan menggunakan dan kapan tidak menggunakan CRAMFS: Jangan gunakan CRAMFS apabila Anda ingin menyimpan data yang akan sering dibuka dan diubah. Anda mungkin akan lebih senang menggunakan FAT16. Jangan gunakan CRAMFS apabila ukuran filesistem berpotensi untuk berkembang diatas 256 MB dan atau file di dalam CRAMFS berpotensi untuk melewati batas maksimal 16 MB. Jangan bayangkan CRAMFS seperti image fs read only lain seperti ISO9660 yang digunakan pada CDROM. CRAMFS memiliki lebih banyak keterbatasan. Walaupun CRAMFS terkompres, jangan
www.infolinux.web.id
samakan CRAMFS dengan tarball (+bz2 atau +gz). CRAMFS umumnya digunakan di PC apabila Anda ingin melakukan sesuatu yang berhubungan dengan initrd misalnya. Pembuat distro mungkin akan banyak berhubungan dengan CRAMFS untuk berbagai kebutuhan.
Instalasi CRAMFS Instalasi CRAMFS hampir tidak perlu dilakukan. Namun, ada dua hal yang perlu diperhatikan seputar penggunaan CRAMFS: Yang paling penting adalah dukungan pada kernel. Umumnya, distribusi-distribusi besar telah mendukung CRAMFS, walaupun dikompilasi sebagai modul (umumnya, filesistem yang tidak sangat penting akan dijadikan sebagai modul kernel; beberapa distro bahkan memaketkan hanya satu atau dua filesistem secara built-in). Untuk melihat apakah CRAMFS sudah didukung atau belum, lakukanlah perintah berikut ini sebagai root:
INFOLINUX 02/2006
51
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Yang paling penting, pastikan cramfs terdaftar dalam keluaran perintah terakhir. Apabila kernel telah mendukung, maka pada berbagai distribusi modern, kita tidak perlu melakukan instalasi lain apapun juga. Apa yang kita perlukan untuk bekerja dengan CRAMFS umumnya adalah mkfs.cramfs, yang digunakan untuk membuat filesistem CRAMFS. Utiliti mkfs.cramfs tersebut umumnya telah datang bersama paket util-linux. Sementara, untuk melakukan mounting CRAMFS, kita hanya membutuhkan program mount dan loop device (yang pasti sudah didukung di hampir semua distro).
yang diinginkan. Direktori itu akan dikompres dan dibuat menjadi CRAMFS dengan bantuan program mkfs.cramfs: # mkfs.cramfs usage: mkfs.cramfs [-h] [-v] [-b blksz] [-e edition] [-i file] [n name] dirname outfile -h print this help -v be verbose -E make all warnings errors (non-zero exit status) -b blksz use this blocksize, must equal page size -e edition set edition number (part of fsid) -i file insert a file image into the filesystem (requires >= 2.4.0) -n name set name of cramfs filesystem -p pad by 512 bytes for boot code -s sort directory entries (old option, ignored) -z make explicit holes (requires >= 2.3.39) dirname root of the filesystem to be compressed outfile output file
Sebagai contoh, kita memiliki sebuah direktori test yang berisikan direktori dan file-file berikut ini: $ ls -lR test/ test/: total 0 drwxr-xr-x 2 nop users 120 2005-09-19 22:17 1 drwxr-xr-x 2 nop users 48 2005-09-19 22:17 2 drwxr-xr-x 2 nop users 48 2005-09-19 22:17 3
Contoh penggunaan dasar
test/1: total 0 -rw-r--r-09-19 22:17 -rw-r--r-09-19 22:17 -rw-r--r-09-19 22:17
Untuk menggunakan CRAMFS, sediakanlah sebuah direktori yang berisi segala file
Berikan perintah berikut ini untuk pembuatan image CRAMFS direktori test (perintah mkfs.cramfs bisa dilakukan sebagai user biasa): $ /sbin/mkfs.cramfs -v test/ test.img 1 2 3 ‘1’: 1 2 3 Directory data: 172 bytes Everything: 4 kilobytes Super block: 76 bytes CRC: 48c4009b
Setelah perintah tersebut diberikan, sebuah image CRAMFS dengan nama test. img pun akan dihasilkan. Untuk lebih yakin, berikan perintah berikut ini: $ file test.img test.img: Linux Compressed ROM File System data, little endian size 4096 version #2 sorted_dirs CRC 0x48c4009b, edition 0, 0 blocks, 7 files
Informasi CRC pada keluaran perintah file tersebut bisa kita cocokkan dengan CRC pada pembuatan CRAMFS. Untuk mengakses filesistem yang tersimpan di dalam image, kita bisa melakukan mount loop image tersebut: # mount -oloop test.img /mnt/
Sebagai tambahan, opsi -e pada mkfs. cramfs bisa kita gunakan untuk mengatur nomor edisi filesistem, yang merupakan bagian dari ID filesistem. Sampai di sini, kita telah bisa bekerja dengan CRAMFS. Image yang kita hasilkan bisa kita gunakan sesuai kebutuhan. Satu hal: CRAMFS sangat berguna apabila kita membutuhkan filesistem kecil dan mudah digunakan namun tetap bisa diandalkan. Selamat mencoba dan sukses! Noprianto ([email protected])
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Link
Mengenal Hard Link dan Symbolic Link Linux (dan UNIX secara umum) memiliki fitur filesistem yang disebut sebagai link. Dalam keseharian penggunaan ataupun pengembangan sistem, link sangat banyak berjasa. Di “Tutorial” kali ini, kita akan mengenal link dan bagaimana bekerja dengannya.
L
ink pada Linux bisa dimirip-miripkan dengan shortcut pada Windows. Namun, pada kenyataannya, link di Linux jauh lebih kompleks. Kita akan melihat sejenak dunia Windows. Di Windows, shortcut digunakan di cukup banyak tempat. Contohnya adalah di desktop dan di start menu. Tentu saja, kita juga bisa menemukan berbagai shortcut di filesistem. Ketika kita membuka/menjalankan shortcut, maka file aslilah yang akan dibuka/ dijalankan. Dari pembahasan tersebut, kita bisa artikan secara sederhana bahwa link adalah file yang merujuk ke file lain. Di bagian lain di tulisan ini, kita akan melihat apa yang disebutkan pada awal tulisan tulisan, bahwa link sebenarnya lebih kompleks dan lebih dari sekadar merujuk ke file lain. Di Linux, link dibedakan menjadi dua: Symbolic link (symlink), yang juga disebut sebagai softlink. Sebenarnya, prinsip kerja shortcut di Windows lebih cocok dimiripkan dengan prinsip kerja symlink di Linux. Hard link. Link yang satu ini mungkin lebih sering bermain di latar belakang dibandingkan dengan symlink yang cukup terkenal. Kedua jenis link tersebut tidak saling bersaing, dan pemakaiannya sangat tergantung kepada kondisi yang dihadapi. Kita akan melihat keduanya, dimulai dari symlink
Symbolic link Symlink disebut juga dengan softlink. Kedua istilah tersebut akan kita gunakan bergantiganti dalam tulisan ini. Secara sederhana,
sebuah symlink adalah file spesial yang merujuk ke file lain. Berikut ini adalah contoh symlink di filesistem: $ ls -al / total 53 drwxr-xr-x 22 root root 592 2005-12-11 22:19 . ... lrwxrwxrwx 1 root root 11 2005-12-11 05:42 cdrom -> media/ cdrom ... lrwxrwxrwx 1 root root 27 2005-12-11 05:44 initrd.img -> boot/initrd.img-2.6.8-2-386 ... lrwxrwxrwx 1 root root 24 2005-12-11 05:44 vmlinuz -> boot/vmlinuz-2.6.8-2-386
Dari contoh keluaran perintah tersebut di komputer penulis, bisa kita lihat bahwa terdapat tiga symlink (ditandai dengan warna biru secara default), yaitu: cdrom -> media/cdrom initrd.img -> boot/initrd.img-2.6.8-2-386 vmlinuz -> boot/vmlinuz-2.6.8-2-386 Karena hanya merujuk, maka ukurannya pun kecil. Hanya beberapa byte sampai puluhan byte saja. Di Linux, symlink merupakan salah satu dari tujuh tipe file yang dikenal. Perhatikanlah keluaran dari perintah ls -al sebelumnya: lrwxrwxrwx 1 root root 2005-12-11 05:44 vmlinuz -> boot/vmlinuz-2.6.8-2-386
www.infolinux.web.id
24
Pada kolom pertama, kita bisa lihat bahwa karakter pertama dari kolom tersebut, yang digunakan untuk menuliskan simbol tipe file, kita akan menemukan karakter l untuk setiap symlink. Sementara, hak akses—sembilan karakter sisanya pada kolom pertama tersebut—pada sebuah symlink akan mengacu kepada hak akses file yang ditunjuk. Dengan demikian, bukan berarti bahwa symlink /vmlinuz pada contoh dapat ditulisi oleh siapa saja. Apapun operasi yang dilakukan pada sebuah symlink, maka kita akan melakukan operasi pada file yang ditunjuk. Apabila suatu symlink mengacu kepada file yang tidak ada lagi, misal ketika file yang ditunjuk telah dihapus, maka kita akan menyebut symlink tersebut sebagai broken symlink atau broken link saja. Program ls akan menandai broken link dengan nama file diwarnai dengan merah. Berbeda dengan symlink yang tidak broken, yang ditandai dengan warna biru. Apa sebenarnya kegunaan symlink? Berikut ini adalah contohnya: Membuat shortcut ke file yang tersimpan di dalam tree yang dalam. Tujuannya agar mudah diakses atau mudah untuk dibuka oleh user. Membuat shortcut ke file yang tersimpan di path yang tidak standar/tidak dalam path. Misal, binary-binary aplikasi disimpan di /usr/lib/xxx/bin. Agar bisa diakses tanpa mengubah path, maka dibuatlah symlink dari semua file di /usr/ lib/xxx/bin ke /usr/bin/. Untuk membuat penamaan suatu file lebih pendek, atau untuk membuat nama general. Ini sangat umum ditemukan
INFOLINUX 02/2006
53
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Kalau kita perhatikan contoh tersebut, /lib/libc.so.6 sebenarnya mengacu ke / lib/libc-2.3.2.so. Umumnya, orang akan mencari libc.so.6 dan bukannya libc2.3.2.so. Dan, walaupun libc yang digunakan sudah bukan libc-2.3.2 (misalnya lebih tinggi), yang digunakan sebagai libc tetaplah libc.so.6. Digunakan sebagai binary alternative pada sistem yang mendukung sistem binary alternatif (misalnya Debian). Di Debian, terdapat alternatif dengan nama editor, dimana executablenya disimpan di /usr/bin/editor. Debian menyimpan informasi untuk /usr/bin/editor, yang bisa saja me-link ke vim, ed ataupun yang lain. Pada sistem konvensional pun, yang katakanlah tidak mengenal konsep alternatif, umumnya sistem menyediakan /bin/sh yang me-link ke /bin/ bash misalnya. Digunakan oleh multi-call binary seperti busybox. Busybox adalah sebuah binary yang didalamnya telah tersimpan multifungsi. Salah satu cara untuk memanggil fungsi busybox adalah dengan membuat symlink dengan nama fungsi yang diinginkan ke binary busybox. Begitu symlink dipanggil, maka busybox akan dijalankan sesuai nama symlink-nya.
Pembuatan symlink Untuk membuat symlink, gunakanlah perintah ln dengan parameter -s. Contoh berikut ini ingin membuat symlink dari /bin/bash ke direktori aktif dengan nama yang sama: $ ln -s /bin/bash $ ls -al bash lrwxrwxrwx 1 nop nop 9 2005-1220 18:30 bash -> /bin/bash
54
INFOLINUX 02/2006
Sementara, apabila nama lain diinginkan, perhatikanlah contoh berikut: $ ln -s /bin/bash bash2 $ ls -al bash2 lrwxrwxrwx 1 nop nop 9 2005-1220 18:31 bash2 -> /bin/bash
Kesalahan akan terjadi apabila file telah tersedia: $ ln -s /bin/bash bash2 ln: `bash2’: File exists
Pengguna dapat memaksa agar pembuatan symlink dilakukan secara paksa walaupun sudah terdapat file dengan nama yang sama, dengan memberikan opsi -f. Sebagai contoh: $ ln -sf /bin/bash bash3 $ ls -al bash3 lrwxrwxrwx 1 nop nop 9 2005-1220 18:33 bash3 -> /bin/bash
Kapankah menggunakan symlink? Jawabannya adalah setiap saat Anda membutuhkan fungsionalitas seperti pada contoh kegunaan symlink yang telah dibahas sebelumnya. Atau, umumnya, kapan saja Anda membutuhkan fungsionalitas link/shortcut.
Memeriksa broken link Di dalam sistem, seharusnya tidak boleh terdapat banyak broken link. Ada baiknya, kita memeriksa apakah ada broken link di sistem secara berkala. Sebagai catatan, InfoLINUX pernah membahas tentang shell script untuk mencari broken link. Di “Tutorial” ini, kita akan membahas secara sederhana cara untuk mendeteksi broken link. Pada prinsipnya, kita akan memanfaatkan program find dan file untuk membantu kita. Program find akan mendaftar semua file symlink, dan program file akan memeriksa apakah ada symlink yang broken. Setelah itu, hasilnya kita simpan dalam sebuah file. Berikut ini adalah output dari program file apabila memeriksa link yang bekerja: $ file bash bash: symbolic link to `/bin/ bash’
dan, berikut ini adalah output program file untuk link yang broken: $ file bash2
www.infolinux.web.id
bash2: broken symbolic link to `/bin/bash2’
Untuk meminta find untuk mencari file symlink saja, berikan argumen -type l seperti contoh berikut (untuk cara penggunaan find, jalankanlah perintah man 1 find): $ find -type l ./bash ./bash2 ./bash3 ./bash4
Berikut ini adalah gabungan dari find dan file: $ find -type l | xargs file ./bash: symbolic link to `/bin/ bash’ ./bash2: broken symbolic link to `/bin/bash2’ ./bash3: broken symbolic link to `/bin/bash3’ ./bash4: broken symbolic link to `/bin/bash4’
Dengan menggunakan grep untuk menyaring, kita akan mendapatkan daftar symlink yang broken (dan dapat kita simpan ke file laporan dengan redireksi standard output ke file tertentu): $ find -type l | xargs file | grep -i “broken symbolic link” ./bash2: broken symbolic link to `/bin/bash2’ ./bash3: broken symbolic link to `/bin/bash3’ ./bash4: broken symbolic link to `/bin/bash4’
Hard link Berbeda dengan halnya symlink, kehadiran hardlink tidak dapat dideteksi secara langsung pada filesistem. Hal ini disebabkan karena hardlink bukanlah file spesial dan tidak ada notasi khusus pada program ls ataupun file manager umumnya. Hard link, berbeda dengan halnya symlink, bukanlah dua file yang berbeda, dimana file yang satu mengacu kepada file lainnya. Hard link, di lain sisi, merupakan file yang sama, namun dengan nama file yang berbeda. Semacam nama lain pada suatu file. Dengan demikian, di filesistem, sesungguhnya hanya ada satu file.
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
TUTORIAL Link
Ketika ls dikenakan pada suatu hardlink, ukuran file akan ditampilkan apa adanya. Apabila ada 10 hardlink pada file, maka ukuran yang terpakai pada harddisk sesungguhnya hanya satu kali, dan bukan 10 kalinya. Bagaimana kita bisa mendeteksi hardlink? Salah satu cara yang bisa digunakan adalah dengan memeriksa inode numbernya. Sesungguhnya, karena merupakan file yang sama (hanya dengan nama berbeda), maka inodenya haruslah sama. Berikut ini adalah contohnya: $ ls -ali bash /bin/bash 169 -rwxr-xr-x 2 root root 625228 2004-12-19 23:53 bash 169 -rwxr-xr-x 2 root root 625228 2004-12-19 23:53 /bin/ bash
Opsi -i pada ls dapat digunakan untuk menampilkan inode. Pada hard link bash di direktori aktif ke /bin/bash, bisa kita lihat, inode (kolom paling kiri) kedua file tersebut adalah sama. Apabila pada symlink file yang dituju di-
hapus, maka symlink yang dibuat sebelumnya akan menjadi broken link. Tentu tidak demikian halnya dengan hard link. Apabila file yang ‘dituju’ dihapus, maka sesungguhnya filenya masih tetap ada karena ‘file dengan nama lain’ masih ada. Tidak ada istilah broken hard link, yang ada hanyalah broken link, yang mengacu kepada broken symlink. Dengan demikian, kalau kita membutuhkan fungsionalitas link, janganlah mempergunakan hard link karena susah untuk dilacak. Lantas, kapankah hard link digunakan? Yang paling terasa adalah ketika mengembangkan sistem dengan jumlah inode yang sangat terbatas, seperti pada sistem embedded ataupun distribusi super mini. Dalam banyak kasus embedded, busybox dipergunakan dengan sangat intensif. Apabila kita membuat symlink ke binary busybox (salah satu cara menggunakan busybox), kita akan membuang cadangan inode yang tersedia. Dengan menggunakan hard link, tidak ada inode yang terbuang.
www.infolinux.web.id
Memeriksa jumlah hard link menggunakan Python Bagi Anda yang senang mengembangkan aplikasi dengan Python, Anda bisa memeriksa jumlah hard link sebuah file dengan cara seperti berikut ini: P$ python Python 2.3.5 (#2, May 4 2005, 08:51:39) [GCC 3.3.5 (Debian 1:3.3.5-12)] on linux2 >>> import os >>> os.lstat(‘a’) (33261, 46893L, 769L, 4, 1000, 1000, 51212L, 1135094540, 1135094540, 1135094544)
Perhatikanlah keluaran lstat() pada index ke 3 (dimulai dari 0) yang bernilai 4. Nilai 4 tersebut menunjukkan jumlah hard link. Bacalah dokumentasi modul os untuk informasi lebih lanjut. Sampai di sini dulu pembahasan kita tentang link. Selamat mencoba! Noprianto ([email protected])
INFOLINUX 02/2006
55
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Scalix
Membangun E-mail Server dengan Scalix Membangun e-mail server di Linux tidak selalu susah dan rumit. Pemrograman Java telah melahirkan beberapa e-mail server yang lengkap dan mudah dikonfigurasi, antara lain Desknow yang dibahas pada edisi 12/2005 dan Scalix yang dibahas berikut ini.
E
-mail merupakan aplikasi yang paling banyak digunakan untuk aktivitas pekerjaan kita sehari–hari. Oleh karena itu, e-mail banyak diistilahkan sebagai killer application di antara aplikasi lainnya. Pada kesempatan ini, penulis akan memperkenalkan cara membangun e-mail server dari sebuah produk proprietary yang ada di lingkungan Linux, yakni dari Scalix. E-mail server ini mempunyai dua versi, Enterprise dan Community. Dan pada kesempatan ini kita akan membahas versi Community, karena ini merupakan free edition dari versi produk yang ada. Paket e-mail server ini bisa Anda dapatkan dari http://www.scalix.com. Sebenarnya di lingkungan Linux sudah banyak pilihan untuk membuat e-mail server versi GPL yang free seperti dengan Postfix, Qmail, Sendmail, atau lainnya, tapi banyak para pemula belum paham bahwa Postfix, Qmail, dan Sendmail bukan merupakan aplikasi e-mail ALL in One, tapi hanya sebagai MTA/SMTP server. Untuk itu, kita perlu aplikasi pendukung lainnya agar e-mail server kita dapat berfungsi maksimal. Sebagai contohnya kita perlu aplikasi untuk POP3 dan IMAP dengan CourierImap, CyrussIMAP, atau yang lain, serta juga aplikasi-aplikasi lainnya, seperti untuk administrasi e-mail server kita. Agar e-mail server kita juga berfungsi lebih maksimal, salah satunya kita juga perlu menggabungkannya dengan aplikasi LDAP (OpenLDAP untuk versi free). Sepengetahuan penulis, untuk menggabungkan dengan LDAP ini tidak mudah, jika kemampuan kita terbatas. Kita harus mengerti aplikasi LDAP itu sendiri, seperti skema-skema yang ada, dan lain–lain. Dan memang ba-
56
INFOLINUX 02/2006
nyak kelebihan jika e-mail server bisa kita gabungkan dengan LDAP server ini seperti direktori terpusat untuk database e-maile-mail, group-group e-mail, dan lain-lain. Bayangkan jika pada sebuah organisasi karyawannya berjumlah ratusan dan kita tidak mempunyai direktori address book terpusat untuk e-mail server kita, pasti akan merepotkan kita seperti kita perlu untuk meng-input satu per satu address book yang ada. Belum lagi mereka yang ingin mengirim untuk grup departemen mereka masing–masing atau group lainnya. Atau jika ada karyawan baru/keluar, bagaimana untuk sinkronisasi address book yang ada. Dengan adanya direktori terpusat, masalah seperti itu bisa kita selesaikan. Lain halnya ketika kita membangun e-mail server yang memang berasal dari sebuah paket aplikasi terpadu, yang kebanyakan memang dari produk propietary seperti Scalix CE ini, kita tidak perlu memikirkan aplikasi pendukung lainnya, seperti juga LDAP server. Scalix CE walaupun dari sebuah produk free propietary, pembuatnya tetap membolehkan email server ini untuk digunakan pada sebuah organisasi, dengan fitur-fitur yang ada, seperti share contact terpusat dan Interface webmail. Kita juga sudah mendapatkan lisensi 5 call untuk enterprise edition seperti akses group ware, public folder, kompatibilitas Microsoft Outook, dan unlimited akses email melalui scalix Web Acces (sebuah akses webmail dengan interface menyerupai desktop e-mail client). Produk ini bisa anda jadikan referensi jika anda berniat migrasi dari e-mail server Anda untuk tujuan mengurangi lisensi server. Server e-mail ini dibuat dari arsitektur
www.infolinux.web.id
HP Open Mail dan sendmail, jadi stabilisasi dan lainya tidak perlu kita ragukan.
Memulai instalasi Untuk instalasi ini penulis menggunakan Red Hat Enterprise Linux (RHEL) 4, karena aplikasi ini hanya mendukung versi enterprise Linux seperti halnya dari kebanyakan produk-produk propietary lainnya. Kita juga bisa menginstal Scalix di CentOS, karena CentOS memang di buat dari source code RHEL, tapi ada file yang harus kita edit dan ini bisa kita sebut hanya akal-akalan saja. SCALIX juga mendukung versi Enterprise dari SuSE dan Fedora Core 4. Dukungan terhadap Fedora Core hanya evaluasi saja.
Instalasi RedHat Enterprise Linux 4/CentOS Install RHEL sepeti biasa yaitu via boot CDROM, selanjutnya ada pilihan untuk aktifkan SELinux --> pilih disable. Untuk pembuatan partisi, ikuti saja yang direkomendasikan oleh program installer Red Hat. Contoh susunan partisi sebagai berikut: Partisi root ( / ) sebesar kira-kira 6 GB. Partisi /boot sebesar 50 MB. Partisi SWAP pilih kira-kira dua kali atau lebih besar dari memory fisik (RAM) yang ada. Partisi terakhir /VAR, ini untuk kebutuhan backup atau pemisahan partasi yang ada karena semua data konfigurasi Scalix ada di sini. Buat semua sisa ruang kapasitas harddisk (HDD) yang ada. Untuk pemilihan paket-paket yang diperlukan, ikuti saja sesuai yang direkomendasi-
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
TUTORIAL Scalix
kan juga, agar tidak meminta dependensi paket-paket yang ada. Berikut ini contoh daftar kelompok paket yang akan diinstal: X Window KDE atau Gnome, pilh salah satu saja Text Editor Graphical Internet Text base Internet Server Configuration Tools Web Server Network Server, select Detail pilih krb5server Development Tools Legacy Software Development Administrator Tools System Tools
Java(TM) 2 Runtime Environment, Standard Edition
Instalasi Scalix CE Sebelum memulai instalasi pastikan paket Scalix, ekstrak paket pada sebuah CD (dengan cara di-burn). Buka terminal console pada X Window, lalu masuk ke di rektori cdrom tempat menyimpan file Scalix-installer. # cd /mnt/cdrom
Perintah untuk menjalankan program instalasi Scalix: ./scalix-installer-community
atau Catatan: Untuk instalasi CentOS, edit file redhat-release sebegai berikut, misalnya dengan editor teks vi. # vi /etc/redhat-release
Ganti satu baris yang ada menjadi: “Red Hat Enterprise Linux AS release 4 (Nahant)”
Jika file ini tidak diedit, Scalix tidak akan dapat diinstal pada CentOS.
Persiapan instalasi Scalix CE Pastikan konfigurasi network Linux Anda sudah benar, antara lain dengan melihat isi file-file berikut ini:
./scalix-installer-community -warnonly
untuk penggunaan memory di bawah 512 MB.
tomcat, maka kita pilih untuk instal, dengan klik browse untuk mencari paket tomcat. Paket tomcat ada di paket scalix path /third_party/jakarta-tomcatxxx. Proses selanjutnya menanyakan path Java dan Tomcat. Klik Next. Selanjutnya akan menanyakan konfgurasi mail server Anda. Isi sesuai mailnode, serta domain mail yang ingin Anda buat. Jika tidak mengerti juga proses ini, sebaiknya baca juga dokumentasi yang ada pada CD Scalix. Instalasi selesai. Sebenarnya proses instalasi belum selesai sampai di sini, karena konfigurasi belum lengkap/maksimal seperti untuk SSL-nya dan initscrip untuk Jakarta-tomcat, serta virtual memory untuk Java. Untuk testing hasil instalasi, masuk ke direktori tomcat. # cd /root/jakarta-tomcatxxx/bin # ./startup.sh
Proses instalasi SCALIX CE Proses instalasi akan mengecek network setup dan paket instalasi. Jika pada Java dan Tomcat ada tanda warning biarkan saja, sampai meminta instalasi tomcat (paket Jakarta-tomcat sudah ada pada paket Scalix). Instalasi akan meminta home directory Tomcat. Karena kita belum menginstall
Untuk testing tomcat, gunakan web browser untuk mengakses alamat berikut ini http://localhost:8080” atau “http:”//localhost:8080/sac
Konfigurasi lanjutan untuk instalasi Scalix Masuk kembali ke direktori tomcat, lalu jalankan shutdown.sh.
Instal Java J2SE SDK Download Java1.4.2 dari http://java.sun. com, lalu instalasi dengan langkah-langkah berikut ini: root# chmod +x j2sdk-1_4_2_09linux-i586-rpm.bin root# ./j2sdk-1_4_2_09-linuxi586-rpm.bin root# rpm -ivh j2sdk-1_4_2_09linux-i586.rpm root# which java /usr/java/j2sdk1.4.2_09/bin/java root# java -version java version “1.4.2_09”
Konsole web untuk administrasi Scalix.
www.infolinux.web.id
INFOLINUX 02/2006
57
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Scalix
#cd /root/jakarta-tomcatxxx/bin #./shutdown.sh
Generate SSL keystore Masuk ke direktori java, lalu jalankan perintah keytool sebagai berikut. #cd /usr/java/j2sdk1.4.2xx/bin” #./keytool -genkey -alias tomcat -keyalg RSA”
Ikuti perintah yang ada, seperti password, nama lengkap organisasi, dan lainlain, kemudian masukkan juga password tomcat. Sebaiknya samakan saja password yang ada agar mudah diingat. Reconfigure SSL Jakarta-Tomcat Masuk ke direktori home tomcat (/root/jakarta-tomcatxxx/conf), lalu edit file “server. xml”. Ini untuk mengganti konfigurasi dari port 8080 menjadi SSL 8443, dengan memblok konfigurasi untuk port 8080 serta meremove comment konfigurasi untuk SSL port 8443. Anda hanya perlu membuang/ menambah comment string ini , serta menambahkan keystore dari password tomcat yang di-generate sebelumnya. Jika Anda kesulitan memahami hal ini, silakan membaca konfigurasi lengkapnya seperti penjelasan di bawah ini. Sebelum mengedit, sebaiknya back-up dulu file server.xml agar aman. Disable port 8080 -->
Mengaktifkan port 8443
Copy file tomcat ke file init.d. # cp tomcat d/
/etc/rc.d/init.
Masuk ke direktory init.d. # cd /etc/rc.d/init.d/
Jalankan chkconfig. #chkconfig --add tomcat #chkconfig --level 345 tomcat on
Edit file tomcat. Catatan: Jangan lupa menambahkan keystorePass, dan masukkan sesuai password tomcat yang di-generate sebelumnya, misal password =123456.
Konfigurasi init script untuk Jakarta-tomcat Sebenarnya pada paket Scalix sudah menyediakan semua script untuk penggunaan seperti rules untuk VirusScaner, script untuk maintenance, dan lain-lain, termasuk initscript tomcat, yaitu ada pada direktory admin_resource_kit. Untuk detail konfigurasi initscript tomcat, lakukan langkah-langkah seperti berikut ini. Masuk ke direktori admin_resource_kit. # cd /media/cdrom/admin_ resorure_kit
www.infolinux.web.id
#vi /etc/rc.d/init.d/tomcat
Pada baris “CATALINA_HOME=/home/ jakarta-tomcat-xxxx”, ganti home menjadi root: CATALINA_HOME=/root/jakartatomcat-xxxx Ini sesuai home jakarta-tomcat. Sampai di sini seharusnnya langkah konfigurasi sudah selesai. Restart Tomcat # service
tomcat restart
Atau bisa juga langsung restart komputer server. E-mail server Anda sudah selesai dikonfigurasi dan bisa digunakan. Untuk membuka admin console-nya, misalnya untuk pembuatan user/group e-mail, dan tugas
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
TUTORIAL Scalix
lainnya, gunakan web browser untuk mengakses alamat berikut ini https://mail.example.com:8443/sac. Untuk mengakses webmail, akses alamat di https://mail.anda.com:8443/webmail. Secara default, Scalix sudah mengatur relay e-mail hanya untuk domain e-mail yang anda konfigurasi, serta sudah menggunakan autentifikasi SMTP. Anda dapat mengubah konfigurasi lainnya seperti untuk anti spam dan lainlain sesuai kemauan dan kemampuan Anda.
Konfigurasi e-mail client external Scalix sudah menyediakan default aplikasi client via web browser, SCALIX Web Acces, dengan tampilan sama dengan ketika kita menggunakan aplikasi e-mail client versi desktop. Jika server Anda memiliki spesifikasi yang minimum, baik jumlah memory maupun tipe processor yang Anda gunakan, lebih nyaman jika Anda tetap menggunakan email client Externel seperti Thunderbird, Mozilla Mail, dan lain-lain. Anda dapat menjadikan SCALIX Web Acces hanya sebagai pilihan alternatif user ketika mereka ingin membaca/ mengirim e-mail secara instan.
Konfigurasi LDAP pada Thunderbird Buka e-mail client Thunderbird. Konfigurasi email user sesuai alamat masing-masing, dan pilih sesuai yang diinginkan apakah menggunakan IMAP atau POP3. Rekomendasi kami, sebaiknya menggunakan IMAP saja, tapi tetap user melakukan copy ke local inbox mereka. Ini dimaksudkan agar kita tetap punya back-up e-mail, yaitu ada e-mail tersimpan pada server dan pada local inbox mereka. Pilihannya ada di Tools|Account Setting, pilih Offline & diskspace |make the Messages in my inbox available when I am working offline. Kemudian untuk konfigurasi LDAP server untuk keperluan autoCompletion: Pilih Tools|Account Setting, kemudian Composition & Addresing. Pilih use a different LDAP Server. Pilih edit Directories. Klik ADD. Pada name ketikkan nama apa saja untuk LDAP Anda. Pada hostname ketikkan alamat/ip address e-mail Anda. Untuk port LDAP biarkan defalult 389 Kemudian kembali ke tools|Option pilih Composition.
Pada pilihan Address AutoCompletion pilih atau centang hanya ke directory Server dan arahkan ke LDAP yang anda setting sebelumnya. Ini semua untuk keperluan AutoCompletion, yaitu ketika user ingin mengirim mail ke user atau group yang sudah dibuat pada mail server Anda. User akan langsung menemukan tanpa mencari pada address book local-nya. Atau istilah teknisnya adalah share Contact terpusat yang ada pada direktori mail server anda. Ini semua untuk keperluan AutoCompletion, yaitu ketika user ingin mengirim mail ke user atau group yang sudah dibuat pada mail server anda. User akan langsung menemukan tanpa mencari pada address book local-nya. Atau istilah teknisnya adalah share Contact terpusat yang ada pada direktori mail server Anda.
Antivirus, SPAM, dan Maintenance E-mail Server Scalix Paket Scalix sudah menyediakan script– script bantuan untuk konfigurasi antivirus, maintenance e-mail, dan lain-lain, pada paket download yang ada. Untuk maintenance lebih lanjut, Anda dapat menggunakan tools open source, yakni NAGIOS, SYSMON, dan lain-lain.
Pada kesempatan ini, saya hanya menjelaskan antivirus saja, sebagai bagian penting dari e-mail server. Untuk monitoring serta maintenance, Anda dapat membaca dokumentasi yang ada.
Konfigurasi virus Scanning dan antivirus Kita dapat memilih antivirus yang sesuai keinginan kita, dan tentu yang sudah support untuk Linux serta command line. Misalnya, anti virus versi free ClamAV, atau versi komersil seperti Mc Affee, Trend Micro, dan lain-lain. Penulis tidak membahas proses instalasi ClamAV. Jika belum pernah menginstall serta mengonfigurasi ClamAV, Anda dapat mencari tutorial di Internet atau langsung mengunjungi situs ClamAV. Ketika e-mail masuk, virus protection akan mengecek pesan dan attachment yang ada. Scalix dapat melakukan hampir sama dengan virus scanning dengan bantuan script yang ada serta Anti virus. Scalix sudah menyediakan paket rulemap. Anda dapat mengonfigurasi dengan mengedit file omscan.map melalui wizard yang ada pada direktori /opt/scalix/emaples/general dan menyalinnya ke dalam direktori /var/opt/scalix/rules. Anda juga harus mengonfigurasi file omscan.cfg di direktori /var/opt/scalix/sys/. Selamat mencoba! Syahrony ([email protected])
Tampilan Webmail seperti mail client biasa.
www.infolinux.web.id
INFOLINUX 02/2006
59
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Autopackage
Autopackage, Multidistro Binary Packaging Framework untuk Linux System Andai saja menginstalasi software di Linux semudah menginstalasi software di Windows yang hanya perlu double click and next, tentu pengguna Linux akan semakin banyak jumlahnya. Mungkin beberapa tahun ke depan instalasi software di Linux sudah semakin mudah, karena sekarang sudah terdapat metode Autopackage untuk kemudahan instalasi software di Linux.
P
roblem yang paling sering dihadapi oleh para pengguna Linux, terutama untuk para newbie adalah saat menginstalasikan tambahan paket software di Linux. Apalagi jika paket software yang akan diinstal memerlukan banyak paket software lain yang harus lebih dulu diinstal. Ditambah lagi, fasilitas untuk mempermudah installasi yang ada di Linux seperti, urpmi, yum, Kpackage, apt-get, masih dirasakan cukup sulit oleh sebagian pengguna Linux yang masih awam. Berangkat dari persoalan tersebut, beberapa programer open source berpikir keras bagaimana caranya menciptakan suatu standar paket instalasi yang mudah digunakan, dapat digunakan di distro manapun, mudah di-maintenance, dan sebagainya. Dan setelah beberapa lama, terciptalah suatu cara installasi paket software diLinux yang bernama Autopackage. Dengan menggunakan Autopackage, diharapkan nantinya tidak ada lagi kesulitan instalasi software karena problem dependencies, sulit di-maintenance (jika menggunakan paket tarball), konflik dengan software lainnya, dan sebagainya. Dengan menginstalasikan software yang menggunakan format Autopackage, diharapkan user biasa pun dapat dengan mudah melakukan instalasi software dengan hanya melakukan double click dan next, layaknya instalasi software di Windows. Autopackage sendiri sebenarnya adalah
60
INFOLINUX 02/2006
framework yang dibuat untuk para developer yang mempermudah mereka membuat installer untuk software mereka. Autopackage menyediakan API yang berhubungan dengan framework, seperti installing menu entries, copy file, uninstall software, dan comment feedback ke user ketika selesai menginstall. Sebuah paket software yang menggunakan Autopackage secara umum merupakan sebuah self extracting shell script dengan ekstension .package. Paket software jenis ini kali pertama akan mengecek apakah Autopackage sudah terinstal di sistem Anda atau belum. Jika belum, maka proses secara otomatis akan men-download-nya, menginstalnya, dan meneruskan proses yang berhubungan dengan instalasi paket software tersebut. Dalam artikel kali ini, penulis akan menjelaskan sekilas mengenai fitur Autopackage, cara menggunakan Autopackage, dan isu-isu mengenai Autopackage.
Fitur Sebagai sebuah framework packaging software yang baru, ada beberapa fitur yang dimiliki Autopackage. Beberapa fiturnya, antara lain: Sistem paket file yang dihasilkan oleh Autopackage, bersifat netral atau tidak memihak pada distro manapun. Hal ini menunjukkan baik Anda menjalankan
www.infolinux.web.id
sebuah paket .rpm, .deb, maupun Slackware based, sebuah software yang menggunakan format Autopackage, dapat terinstalasi dengan baik tanpa menimbulkan kecemasan. Autopackage memiliki kemampuan untuk menginstallasikan program dengan menggunakan tools berbasis graphical. Tool atau aplikasi ini ada yang dibuat menggunakan front-end Qt maupun menggunakan GTK. Dengan menggunakan tools ini, urusan Add/Remove Software menjadi pekerjaan yang mudah untuk dilakukan. Dan beberapa yang lainnya.
Instalasi Autopackage Untuk menginstalasikan Autopackage sangat mudah. Anda cukup men-download sebuah paket yang sudah mempunyai format Autopackage, dan ketika Anda menginstalnya, Autopackage secara otomatis akan ikut terinstal, jika Anda belum menginstalnya. Untuk lebih jelasnya, ikuti saja langkah-langkah di bawah ini: 1. Untuk menginstalasikan Autopackage, Anda harus terkoneksi ke Internet terlebih dahulu untuk men-download paket yang dibutuhkan. 2. Masuklah ke situs http://autopackage.org/ downloads.html, dan download Qt FrontEnd untuk Autopackages. Saat penulis men-dowload file Qt FrontEnd dari url
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Autopackage
Gbr 1. Berikan privileges execute sebelum dapat menginstallasi format Autopackage
3.
4.
5.
6.
tersebut, nama filenya adalah autopackage-qt-1.0.1.x86.package. Letakkan saja file autopackage-qt1.0.1.x86.package hasil download tersebut, ke home direktori Anda. Setelah file autopackage-qt-1.0.1.x86. package sudah terdownload di sistem Anda, masuk ke file manager Nautillus atau konqueror, lalu berikan permission execute untuk user, agar dapat menjalankan file tersebut (lihat Gambar 1). Klik ganda file autopackage-qt-1.0.1.x86. package, yang telah diubah permissionnya oleh Anda. Jika Anda ingin melakukannya dari command line, Anda tinggal mengubah mode permission file autopackage tersebut menjadi 764, lalu jalankan langsung file tersebut. Setelah itu akan tampil layar graphical untuk memulai tahapan instalasi. Saat ditanyakan password untuk menginstallasikan software tersebut, isikan dengan password root Anda, kemudian lanjutkan saja sesuai dengan langkahlangkah yang diberikan sampai paket tersebut terinstalasi dengan baik di sistem Anda.
Secara garis besarnya, langkah-langkah yang dapat Anda lakukan untuk menginstallasikan software yang menggunakan format Autopackage adalah sebagai berikut: 1. Download & save Download package yang ingin Anda instal dan simpan ke komputer Anda.
Gbr 2. Gunakan Autopackage-Manager untuk menguninstall aplikasi Autopackage yang sudah terinstall
2. Open properties dialog Buka File Browser Anda (Firefox maupun Konqueror), lalu pindah ke folder di mana Anda menaruh package software tersebut. Klik kanan pada package tersebut, kemudian pilih Properties. 3. Enable permission Setelah tampil layar permission, pindah ke tab Permission, check execute checkbox. Jika terdapat lebih dari satu pilihan exec, pilih saja execute checkbox untuk owner. Setelah itu Open atau klik gandapackage tersebut untuk menginstalnya. 4. Uninstall previous dan Open. Jika package software yang ingin Anda install telah terinstalasi, remove terlebih dahulu, kemudian open file package tersebut untuk menginstal ulang kembali.
Beberapa aplikasi dalam format Autopackage Dari situs http://www.autopackage.org, penulis melihat beberapa aplikasi yang sudah tersedia dalam format Autopackage. Beberapa di antaranya adalah: Inkscape-0.4.2 Gimp-2.2.6 Gaim-1.5.0 AbiWord-2.4.1 Firefox-1.5 netPanzer-0.8 KXDocker-0.33 Qt Frontend-1.0.1 PureAdmin-0.2.2 LaTeX2RTF-1.9.16
www.infolinux.web.id
libgnomesu-0.9.7 GRF Tool-1.2 Lilypond-2.6.4 Supertux-0.1.2 GNOME PPX-0.6.1 kf Jabber Messenger-0.5.4 NVU HTML Editor-1.0.0 dan beberapa aplikasi lainnya.
Dari penjelasan singkat mengenai Autopackage ini, dapat kita lihat jika saja aplikasi ini terus berkembang dan terus menerus diperbaiki kelemahannya, maka segala masalah umum yang berkenaan dengan problem sulitnya instalasi software bagi pemula di Linux akan dapat teratasi dengan baik. Meski format ini sangat bagus, masih terdapat sangat banyak bugs pada aplikasi ini. Sebagai contoh, dari beberapa aplikasi berformat .package yang penulis coba instal, hanya beberapa paket saja yang berhasil terinstalasi dengan baik, seperti GIMP, GAIM, NVU, dan beberapa lainnya. Beberapa banyak yang tidak berhasil terinstalasi dengan baik. Selain itu, saat mencoba meng-uninstall aplikasi autopackage yang telah terinstal di sistem, terkadang memerlukan beberapa kali percobaan untuk menguninstal, agar dapat meremovenya dari sistem. Tapi terlepas dari semua masalah tersebut, Autopackage telah membuktikan, kalau installasi software di lingkungan Linux pun sudah dapat dilakukan semudah instalasi software di Windows. Selamat mencoba instalasi dari Autopackage. Supriyanto ([email protected])
INFOLINUX 02/2006
61
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
QEMU
Emulasi Komputer dengan QEMU Ada banyak kasus di mana kita membutuhkan sistem operasi lain (atau bahkan komputer lain) ketika kita menggunakan Linux. Bagi yang hanya memiliki satu komputer, maka penggunaan emulator komputer adalah salah satu solusi yang cukup bisa diandalkan.
B
agi pengguna yang baru berkenalan, emulator sendiri merupakan program yang dapat mengemulasikan hardware-hardware yang membentuk sebuah komputer secara keseluruhan. Emulator mengemulasikan CPU sendiri, memory sendiri, harddisk sendiri, kartu VGA sendiri, dan lain sebagainya. Ketika emulasi komputer dilakukan, kita bagaikan memiliki komputer yang sedang berjalan di dalam komputer. Apabila sistem menjalankan tiga emulator, maka kita akan memiliki tiga komputer yang sedang berjalan di dalam komputer. Apabila emulator mampu mengemulasikan jaringan, maka kita bisa membangun jaringan yang terdiri dari tiga komputer tersebut, ditambah dengan komputer yang menjalankan emulator-emulator tersebut. Akan sangat berguna bagi pengguna komputer yang hanya memiliki satu komputer namun ingin mempelajari jaringan, misalnya. Di dunia ini, kita mengenal begitu banyak emulator. Beberapa di antaranya juga telah dibahas di majalah InfoLINUX. Namun, karena tugas emulator sangatlah berat, maka jarang sekali ada emulator yang benar-benar dapat digunakan di segala kondisi. Kita memang mengenal emulator populer yang cukup bisa diandalkan, seperti halnya vmware. Vmware merupakan emulator multiplatform yang juga dapat mengemulasikan banyak komputer. Namun, vmware sendiri sangatlah mahal. Bukan solusi yang selalu paling tepat. Di dunia open source sendiri, kita mengenal emulator komputer bochs, plex86 dan masih banyak lagi. Untuk beberapa kasus, bochs sangatlah bagus. Namun, tidak salah kalau kita mencoba berbagai emulator lain yang tersedia. Terutama apabila emulasi komputer menjadi bidang yang menarik bagi Anda. Salah satu emulator lain yang akan kita bahas pada artikel kali ini adalah QEMU.
62
INFOLINUX 02/2006
Menurut dokumentasinya, QEMU merupakan emulator processor yang cepat, yang memanfaatkan dynamic translation untuk menunjang kecepatan emulasi. QEMU sendiri dapat berjalan pada dua modus emulasi: Emulasi komputer secara keseluruhan seperti yang telah dibahas pada awal tulisan. Sangat berguna apabila Anda membutuhkan lebih dari satu komputer. Emulasi yang berjalan secara user mode. Secara sederhana, apabila QEMU dijalankan pada modus ini, maka sebagai contoh, QEMU dapat digunakan untuk menjalankan aplikasi yang dikompilasi untuk CPU lain. Bagi developer yang bekerja untuk membangun aplikasi dengan cross-compiling, maka qemu juga dapat digunakan. QEMU juga dapat digunakan untuk menjalankan wine. Modus emulasi yang akan kita bahas dalam artikel kali ini adalah modus emulasi komputer secara keseluruhan. Dengan demikian, pada akhirnya, kita akan menjalankan komputer di dalam komputer.
Instalasi QEMU QEMU bisa didapatkan dari website-nya di http://fabrice.bellard.free.fr/qemu/. Saat tulisan ini dibuat, qemu telah mencapai versi terbaru 0.7.2. Di website tersebut, kita bisa mendapatkan source code-nya ataupun binary yang telah dikompilasi dan telah siap digunakan. Anda juga bisa selalu mencari ke CDROM/DVDROM distro Anda. Beberapa distro general telah memaketkan QEMU (instalasi akan jauh lebih mudah). Bagi Anda yang ingin men-download source code dan ingin melakukan kompilasi sendiri, maka paling tidak, Anda harus memperhatikan beberapa hal berikut ini: Versi GCC yang Anda gunakan. Saat ini,
www.infolinux.web.id
sudah banyak distro yang memaketkan GCC 4.x. Sayangnya, GCC versi 4.x masih belum didukung oleh QEMU. Kita harus mempergunakan GCC 3.x untuk mengompilasi QEMU. Anda akan membutuhkan SDL, aalib, esound dan alsa. Pada distribusi Anda, paket-paket tersebut mungkin dapat ditemukan dengan nama SDL-devel, aalib-devel, esound-devel dan alsa-devel. Bagi Anda yang ingin men-download binary dari website qemu, perhatikanlah halhal berikut ini: Anda akan membutuhkan pustakapustaka seperti SDL, aalib, alsa, esound, dan pustaka-pustaka lain. Umumnya, apabila Anda menginstal cukup lengkap distribusi Anda, maka pustaka-pustaka tersebut telah tersedia. Secara default, binary qemu yang dipaketkan dalam arsip .tar.gz akan diekstrak ke tree /usr/local. Anda bisa saja mengekstrak ke tempat berbeda, namun cara menjalankan qemu akan sedikit berbeda (akan dibahas kemudian). Tidak semua distro bisa mempergunakan binary yang telah disiapkan. Anda bisa melakukan kompilasi sendiri ataupun mencari paket untuk distro Anda. Untuk melakukan kompilasi qemu dari source, lakukanlah langkah-langkah berikut ini: Ekstraklah arsip source code dan masuklah ke direktori hasil ekstraksi. Berikan perintah berikut ini untuk konfigurasi: $ ./configure
Berikan perintah berikut ini untuk kompilasi: $ make
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
QEMU
Jadilah root, dan berikanlah perintah berikut ini untuk instalasi: # make install
Sebagai catatan: Anda bisa mengubah direktori default untuk instalasi dengan memberikan opsi –prefix=/dir/lain ketika memberikan perintah configure. Opsi --static juga bisa digunakan untuk melakukan kompilasi secara statis. Seperti yang telah disebutkan, versi GCC dan utiliti lain yang memegang peranan dalam kompilasi juga perlu diperhatikan. Pada tabel 1, bisa dilihat gcc, binutils dan glibc yang diketahui dapat digunakan untuk kompilasi QEMU. Setelah QEMU terinstall, maka kita siap melanjutkan ke pembahasan berikutnya.
Hardware yang diemulasikan Seperti yang telah dikatakan, tugas emulator sangatlah berat. Emulator paling tidak harus menghadapi dua tantangan besar berikut: Emulasi hardware komputer. Artinya, secara virtual, emulator harus memiliki (mengenal) hardware-hardware yang membangun sebuah komputer. Tabel 1.
GCC
Binutils
Glibc
Versi 3.2.2 Versi 3.2
Versi 2.13.90.0.18 Versi 2.13.2
Versi 2.3.2 Versi 2.1.3
Tabel 2.
Komponen Hardware
Tipe
Core
i440FX host PCI bridge and PIIX3 PCI to ISA bridge • Cirrus CLGD 5446 PCI VGA card • Dummy VGA dengan ekstensi VESA dari Bochs PS/2 standar PS/2 standar • Dua buah • Dukungan untuk hard disk dan cdrom Standar PC PCI NE 2000 Standar PC Soundblaster 16 BIOS dari Bochs
VGA
Mouse Keyboard PCI IDE
Floppy disk Network Adappter Serial port Sound card BIOS
Emulasi software komputer. Artinya, emulator harus mampu mengemulasikan sistem operasi di hardware yang dimiliki. Dari sisi emulasi hardware, umumnya, untuk suatu arsitektur, emulator akan mengemulasikan jenis hardware tertentu dan kemudian mengoptimalkan dukungannya. Adalah sangat susah bagi sebuah emulator untuk mengemulasikan berbagai jenis hardware. Dalam mengemulasikan komputer dengan arsitektur x86, qemu mengemulasikan hardware-hardware yang dapat dilihat pada tabel 2. Dengan mengetahui hardware apa saja yang diemulasikan, kita bisa mempersiapkan driver untuk sistem operasi seperti halnya Windows 95/98. Sistem operasi Linux umumnya dapat mengenali hardware yang diemulasikan dengan baik. Sebagai tambahan, qemu sebenarnya juga dapat digunakan untuk mengemulasikan arsitektur komputer yang lain seperti halnya PowerPC, Sparc (32 dan 64), dan lain sebagainya. Beberapa emulasi masih dalam tahap yang belum bisa digunakan untuk lingkungan produktif. Tipe hardware yang diemulasikan, kalau kita amati, merupakan hardware-hardware yang relatif lama. Hal ini umum ditemukan pada hampir semua emulator komputer. Umumnya, fokus emulator adalah mengemulasikan sistem sebaik mungkin agar dapat bekerja dengan baik. Belum sampai pada tahap emulasi hardware-hardware terbaru yang supercanggih.
Sistem operasi yang didukung Seperti dibahas sebelumnya, tantangan selain emulasi hardware komputer adalah emulasi software komputer, yang berarti bagaimana emulator dapat menjalankan suatu sistem operasi sebaik-baiknya pada hardware yang diemulasikan. Hal ini tidaklah mudah dilakukan karena setiap sistem operasi memiliki cara yang berbeda ketika bekerja. Pada tabel 3, bisa kita lihat sistem operasi apa saja yang dapat diinstal di komputer yang diemulasikan oleh QEMU. Perlakuan berbeda perlu diberikan untuk mengatasi masalah disk full pada saat instalasi (akan dibahas kemudian).
www.infolinux.web.id
Tabel 3.
Sistem operasi
Versi qemu Catatan
FreeDOS
0.5.5
Linux Fedora Core 1 0.5.5 Linux Fedora Core 2 0.6.0 Linux Knoppix 0.5.5 Linux Mandrake 9.1 0.5.5 Linux Mandrake 9.2 0.6.0 Linux Mandrake 10 0.6.0 Linux Redhat 9 0.5.5 Linux Redhat 0.5.5 Enterprise 2.1 0.5.5 Linux Debian 3.0 Minix 2.0.4 0.5.5 MS DOS 6.22 0.5.5 NetBSD 1.6.2 0.6.0 QNX Floppy 0.5.5 ReactOS 0.5.5 Solaris 9 x86 0.6.0 Solaris 10 x86 0.6.0 Windows 3.11 0.5.5 Windows 95 0.5.5 Windows 98SE 0.6.0 Windows ME 0.5.5 Windows 2000 0.5.5
Bermasalah pada saat install
Perlakuan berbeda perlu diberikan untuk mengatasi masalah disk full pada saat instalasi (akan dibahas kemudian)
Untuk ukuran suatu emulator free, sistem operasi yang didukung cukuplah banyak. Daftar yang dimasukkan ke tabel 3 tersebut merupakan daftar sistem operasi yang berjalan cukup mulus. Masih banyak sistem operasi lain yang dapat dijalankan (namun memerlukan langkah-langkah atau perhatian khusus) yang tidak dimasukkan ke dalam tulisan ini untuk menghemat halaman.
Menjalankan QEMU Untuk menjalankan QEMU, ada beberapa hal berikut ini yang harus diperhatikan: Bagi Anda yang men-download qemu binary dari website-nya, cara yang paling mudah adalah mengekstrak sesuai sarannya, yaitu ke /usr/local. Seperti telah disebutkan sebelumnya, apabila Anda mengekstrak ke lokasi yang berbeda (misal di home directory), maka ada parameter tambahan yang perlu diberikan (akan dibahas setelah ini).
INFOLINUX 02/2006
63
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
QEMU
Bagi Anda yang melakukan kompilasi dari source code, pastikan make install telah dilakukan tanpa ada pesan kesalahan. Secara default, QEMU akan mengemulasikan komputer dengan jumlah RAM adalah 128 MB. Apabila nilai default ini kita turuti, maka kita perlu mengalokasikan shared memory yang cukup besar untuk menampung RAM yang diemulasikan. QEMU mempergunakan /dev/ shm untuk kebutuhan tersebut. Dalam beberapa kondisi, /dev/shm mungkin tidak di-mount dengan ukuran yang mencukupi. Oleh karena itu, mount ulanglah /dev/shm dengan ukuran yang telah disesuaikan. Sebagai root, berikanlah perintah berikut ini: # umount /dev/shm # mount -t tmpfs -o size=144m none /dev/shm
Setelah /dev/shm di-mount dengan ukuran yang mencukupi, maka kita siap untuk menjalankan qemu. Berikanlah perintah berikut ini: $ qemu
QEMU merupakan aplikasi yang berjalan pada command line interface. Apabila dijalankan tanpa parameter, maka QEMU akan menampilkan sejumlah opsi dan parameter yang dapat digunakan. Berikut ini adalah beberapa opsi yang paling sering digunakan: -fda atau -fdb. Opsi ini digunakan untuk memberitahu QEMU untuk menggunakan file tertentu sebagai image disket pertama/kedua. Opsi ini akan membutuhkan satu parameter, yaitu nama file image floppy. -hda, -hdb, -hdc atau -hdd. Opsi ini digunakan untuk memberitahu QEMU untuk menggunakan file tertentu sebagai image harddisk pertama, kedua, ketiga atau keempat. Opsi ini membutuhkan satu parameter, yaitu nama file image harddisk. -cdrom. Opsi ini digunakan untuk memberitahu qemu untuk menggunakan file tertentu sebagai image cdrom. Opsi ini membutuhkan satu parameter yaitu nama file image cdrom. -boot. Opsi ini digunakan untuk menga-
64
INFOLINUX 02/2006
tur boot device. Opsi ini menerima parameter berupa: a: yang akan menyebabkan booting dilakukan dari floppy. c: yang akan menyebabkan booting dilakukan dari harddisk. d: yang akan menyebabkan booting dilakukan dari cdrom. -m. Opsi ini digunakan untuk mengatur jumlah RAM yang dipasang ke komputer yang diemulasikan. Opsi ini menerima satu parameter berupa jumlah RAM dalam satuan MB. -enable-audio. Opsi ini digunakan untuk mengaktifkan dukungan audio. -localtime. Opsi ini digunakan untuk meminta QEMU untuk mengatur waktu yang diemulasikan ke waktu lokal. Zona Waktu default yang digunakan adalah UTC. -full-screen. Opsi ini digunakan untuk menjalankan QEMU dalam modus full screen. -L. Opsi ini digunakan untuk memberitahu QEMU agar mencari BIOS dan VGA BIOS ke direktori tertentu. Opsi ini membutuhkan satu parameter berupa direktori yang mengandung BIOS dan VGA bios. Secara default, apabila instalasi dilakukan dari binary yang telah disediakan, maka lokasi BIOS dan VGA BIOS akan disimpan di /usr/local/share/ qemu. Dengan demikian, bagi Anda yang menginstal ke direktori yang berbeda, selalu jalankan QEMU dengan tambahan opsi -L ini.
Menggunakan image yang tersedia Sebuah emulator paling tidak membutuhkan media yang akan digunakan untuk menyimpan sistem operasi. Media tersebut umumnya adalah harddisk, namun bisa berupa floppy disk dan cdrom. Saat ini, kita belum memiliki satu pun image harddisk, cdrom, dan floppy. Oleh karena itu, kita akan menjalankan terlebih dahulu QEMU dengan memanfaatkan beberapa image harddisk yang telah tersedia dan bisa di-download di website-nya.
Linux-test Image yang akan kita gunakan pertamatama adalah image linux-test. Image ini
www.infolinux.web.id
berisikan sistem Linux yang telah terinstal dan bisa dicoba dengan mudah. Berikut ini langkah-langkah untuk mencoba: Download-lah arsip linux-test-xxx.tar.gz. Ekstraklah arsip linux-test-xxx.tar.gz. Masuklah ke direktori linux-test hasil ekstraksi. Jalankan perintah berikut ini (sesuaikan dengan path di sistem Anda): $ qemu -hda linux.img
Ketika perintah tersebut dijalankan, sebuah dialog baru akan ditampilkan. Di dalam dialog tersebut, simulasi sebuah komputer yang sedang booting akan ditampilkan. Beberapa saat kemudian, kita bisa melihat sistem operasi Linux dijalankan. Setelah booting Linux selesai, kita akan berhadapan dengan sebuah prompt, dimana kita bisa bekerja dengan sistem Linux tersebut.
FreeDOS Image kedua yang akan kita coba kali ini adalah image freedos yang telah tersedia di website QEMU. Sesuai namanya, kali ini kita akan menjalankan komputer yang telah terinstall dengan sistem operasi FreeDOS. Berikut ini langkah-langkah untuk mencoba: Download-lah arsip freedos.img.bz2. Ekstraklah arsip freedos.img.bz2 menggunakan program bunzip2. Setelah diekstrak, kita akan mendapatkan satu file image dengan nama freedos.img. Image ini adalah image harddisk yang di dalamnya telah terinstal freeDOS. Jalankan QEMU dengan perintah berikut ini (sesuaikan dengan path di sistem Anda): $ qemu -hda freedos.img
Setelah dijalankan, sebuah window yang menyimulasikan sebuah komputer yang terinstall DOS akan ditampilkan. Setelah proses booting selesai, kita akan segera menjumpai prompt C:. FreeDOS selanjutnya siap digunakan.
NetBSD Image ketiga yang akan kita coba adalah image harddisk yang telah terinstal NetBSD. NetBSD merupakan salah satu sistem UNIX dari keluarga BSD yang sangat populer.
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
QEMU
Emulasi Diskotix.
Berikut ini adalah langkah-langkah untuk mencoba: Downloadlah arsip small.ffs.bz2 Ekstraklah arsip small.ffs.bz2 tersebut dengan program bunzip2. Setelah diekstrak (menjadi small.ffs), jangan kaget apabila file arsip yang semua berukuran 4 MB-an berkembang menjadi 64 MB-an. Jalankan QEMU dengan perintah berikut ini (sesuaikan dengan path di sistem Anda): $ qemu -hda small.ffs
Setelah dijalankan, sebuah window yang menyimulasikan sebuah komputer yang telah terinstall NetBSD akan ditampilkan. Setelah proses booting selesai, kita akan diminta untuk memasukkan nama shell yang akan digunakan. Cukup tekan tombol ENTER untuk menggunakan /bin/sh. Setelah itu, shell akan dijalankan dan kita pun siap bekerja dengan NetBSD.
Diskotix Diskotix merupakan distribusi linux mini yang muat dalam satu disket. Diskotix datang bersama program-program berikut ini: Text Editor e3 dengan mode wordstar, Spreadsheet SC, Program kalkulator, Game tetris, Game Snake, Game Gomoku, Shell Ash, Busybox, Fdisk dan utiliti mkdosfs, dan lain-lain Diskotix dapat dianggap sebagai sistem Linux yang mirip dengan sistem MS DOS satu disket yang telah diinstal WordStar, Lotus 123 dan beberapa game. Image disket untuk Diskotix bisa didownload di http://www.noprianto.com/diskotix.php.
Memulai instalasi Debian.
Berikut ini adalah langkah-langkah untuk mencoba diskotix: Download-lah diskotix.img dari websitenya. Berikan perintah berikut ini untuk menjalankan qemu (sesuaikan dengan path di sistem Anda): $ qemu -fda diskotix.img
Karena Diskotix merupakan distro satu disket dan didistribusikan berupa image disket, maka opsi yang akan kita gunakan adalah -fda. Setelah perintah QEMU tersebut dijalankan, maka sebuah window yang menyimulasikan proses booting komputer akan ditampilkan. Tunggulah beberapa saat dan menu start Diskotix kemudian akan ditampilkan.
Pengaturan boot device Secara default, QEMU akan melakukan booting dari harddisk. Bagi kita yang kebetulan sedang mencoba beberapa image (misal dengan image floppy, harddisk dan cdrom disebutkan), maka image harddisklah yang akan digunakan untuk booting. Kondisi ini tentu tidak selalu diinginkan. Ada kalanya, kita ingin melakukan booting dari floppy ataupun cdrom. Untuk itu, kita bisa meminta kepada qemu untuk melakukan booting dari device lain secara eksplisit dengan memberikan opsi -boot seperti yang telah dijelaskan sebelumnya. Sebagai contoh, masih menggunakan image-image yang dicontohkan sebelumnya, ketika kita memberikan perintah berikut ini: qemu -fda diskotix.img -hda linux.img
www.infolinux.web.id
Maka, secara default, image harddisk linux.img lah yang akan di-boot. Untuk mengubah agar image diskotix.img yang digunakan untuk boot, tambahkan opsi -boot a sehingga perintah selengkapnya menjadi: qemu -fda diskotix.img -hda linux.img -boot a
Mengatur jumlah RAM Bagi Anda yang sedang melakukan pengujian sistem atau sekadar ingin mengubah jumlah RAM yang akan dialokasikan untuk komputer yang diemulasikan, maka opsi -m bisa digunakan untuk keperluan tersebut. Opsi ini membutuhkan sebuah parameter berupa ukuran RAM dalam satuan MB. Sebagai tambahan, terutama ketika Anda hanya memiliki RAM yang terbatas, simulasi beberapa komputer sekaligus akan sangat banyak memakan resource sistem. Untuk mengatur jumlah RAM, pastikan /dev/shm di-mount dengan ukuran sesuai yang diperlukan. Contoh untuk melakukan mount ulang /dev/shm dapat dibaca pada bagian menjalankan QEMU (di bagian sebelumnya). Apabila Anda menyimulasikan dua sistem dengan alokasi RAM masing-masing adalah 196 MB dan 100 MB, idealnya, tentu Anda perlu melakukan mount /dev/shm dengan ukuran yang mampu menampung 296 MB. Namun, hal tersebut sebenarnya tidak selalu diperlukan. Anda bisa saja hanya melakukan mount /dev/shm sebesar 256 MB. Hanya, apabila sistem Anda mencukupi (RAM besar, SWAP besar), usahakan untuk selalu melakukan mount /dev/shm dengan ukuran ideal.
INFOLINUX 02/2006
65
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
QEMU
Berikut ini adalah contoh penggunaan opsi -m di mana /dev/shm di-mount dengan ukuran yang terlalu kecil: $ qemu -hda small.ffs -m 512 You do not have enough space in ‘/dev/shm’ for the 512 MB of QEMU virtual RAM. To have more space available provided you have enough RAM and swap, do as root: umount /dev/shm mount -t tmpfs -o size=528m none /dev/shm
Membuat disk image sendiri Kita telah mencoba berbagai disk image yang telah tersedia. Sekarang, kita akan membuat disk image sendiri, agar kita bisa melakukan instalasi sistem operasi sendiri. Untuk membuat disk image sendiri, kita dapat mempergunakan program qemu-img yang datang bersama paket QEMU. Program qemu-img merupakan program yang berjalan pada interface command line dan dapat dijalankan sebagai berikut: $ qemu-img
Program qemu-img setidaknya membutuhkan dua paramater: Nama file image. Ukuran file image. Berikut ini adalah contoh pembuatan disk image menggunakan program qemuimg: $ ./qemu-img create hd1.img 150M Formating ‘hd1.img’, fmt=raw, size=153600 kB
Untuk membuktikan bahwa hd1.img telah dibuat, kita akan melihat isi direktori tempat menyimpan hd1.img tersebut: $ ls -alh hd1.img -rw-r--r-- 1 nop users 150M 2005-11-17 16:29 hd1.img
File hd1.img yang kita buat merupakan file image dalam format raw. Pada kenyataannya, kita mengenal beberapa tipe image yang dikenal oleh qemu seperti: vvfat, vpc, bochs, dmg, cloop, vmdk, qcow, cow, danraw. Setelah disk image selesai dibuat, maka kita pun siap untuk melanjutkan ke pembahasan berikutnya.
66
INFOLINUX 02/2006
Instalasi Debian 2.2 r7 Kita telah memiliki disk image berukuran 150 MB dengan nama hd1.img. Dengan adanya disk image tersebut, kita telah siap untuk melakukan instalasi sistem operasi karena kita telah memiliki harddisk sendiri. Sistem operasi contoh yang akan kita instal adalah Debian 2.2 r7. Instalasi akan dilakukan dari CDROM. Distro Debian 2.2 yang akan kita gunakan datang bersama 3 CDROM. Di sistem penulis, CDROM-CDROM tersebut telah penulis buat imagenya sehingga tidak ada keping CDROM secara fisik yang digunakan. Nama file-file image CDROM adalah binary-i3861.iso, binary-i386-2.iso dan binary-i3863.iso. Masing-masing untuk CD pertama, CD kedua, dan CDketiga. Dalam contoh instalasi kali ini, kita akan menggunakan binary-i386-1.iso sebagai image CDROM, hd1.img sebagai image harddisk dan boot device yang digunakan adalah cdrom (d). Berikan perintah berikut ini untuk memulai instalasi: $ qemu -hda hd1.img -cdrom binary-i386-1.iso -boot d
Steelah perintah tersebut diberikan, emulasi komputer pun dimulai. Kita dapat melakukan instalasi sistem operasi seperti biasa. Apabila selama instalasi sistem memberitahu bahwa partisi harddisk bermasalah, abaikan saja pesan kesalahan tersebut. Hal ini wajar karena harddisk baru saja kita buat. Gunakan fasilitas pengaturan partisi yang disediakan untuk membuat partisi sendiri. Dalam melakukan instalasi sistem operasi yang besar, ada kalanya sistem akan menjadi tidak responsif. Beberapa tip berikut ini mungkin bisa digunakan agar penggunaan qemu tidak terlalu membebani sistem: Gunakan swap. Dalam penggunaan emulator, swap sangatlah membantu. Matikan semua aplikasi besar. Selain mengurangi proses, ini juga dapat dilakukan sebagai langkah antisipasi kalaukalau emulator membuat sistem crash. Gunakan jumlah memory virtual untuk emulator yang masuk akal. Aturlah agar total memori untuk semua emulator yang berjalan adalah maksimal (!) setengah jumlah memory sistem Anda.
www.infolinux.web.id
Usahakan agar dalam satu saat, hanya ada satu emulator yang intensif mengakses harddisk sistem. Aktifkan DMA pada harddisk Anda. Hal ini seharusnya telah dilakukan secara otomatis oleh distro Anda.
Qemu Accelerator Module Sampai di sini, kita masih menggunakan qemu tanpa memanfaatkan qemu accelerator module. Penggunaan Qemu Accelerator Module akan meningkatkan kecepatan pada saat emulasi PC di lakukan di dalam PC. Dengan demikian, QEMU dapat meminta processor di host untuk menjalankan langsung aplikasi yang diinginkan. Metode kerja demikian akan membuat aplikasi dapat dijalankan dengan sangat cepat (hampir seperti aslinya). Qemu Accelerator Module akan sangat berguna pada lingkugan kerja produktif. Sebagai perbandingan, QEMU yang digunakan untuk mengemulasi tanpa bantuan qemu accelerator module akan berjalan pada rasio 5 sampai 10 kali lebih lambat. Sementara, apabila qemu accelerator module digunakan, perlambatan akan berada pada rasio satu sampai dua kali. Luar biasa, bukan? QEMU sendiri dapat di-download di website QEMU. Namun, satu catatan, qemu accelerator module merupakan aplikasi yang closed source, walaupun tetap bisa digunakan tanpa harus membayar biaya lisensi. Setelah di-download, qemu accelerator module yang didistribusikan dalam arsip .tar.gz, kita perlu melakukan ekstraksi terlebih dahulu. Di Linux, qemu accelerator module sendiri merupakan modul kernel. Oleh karena itu, kita perlu melakukan kompilasi terlebih dahulu. Sebelum melakukan kompilasi pada kernel 2.6, pastikan Anda telah memiliki: Source code kernel telah dikonfigurasi. Compiler GCC dan segala yang dibutuhkan untuk proses kompilasi.
Kompilasi QEMU accelerator module Setelah itu, berikanlah perintah berikut ini untuk melakukan kompilasi qemu accelerator module (modul kernel QEMU): $ make -C /usr/src/linux M=`pwd` modules
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
TUTORIAL QEMU
Proses instalasi Debian.
Instalasi QEMU accelerator module Setelah kompilasi sukses dilakukan, jalankanlah script install.sh sebagai root untuk melakukan instalasi modul kernel kqemu. ko ke lokasi yang tepat, sekaligus membuat device /dev/kqemu. # ./install.sh
Eksekusi modul kernel Setelah qemu accelerator module (kqemu. ko) terinstal, maka kita perlu mengeksekusi modul kernel kqemu.ko tersebut agar qemu accelerator module dapat digunakan. Berikanlah perintah berikut ini sebagai root: # modprobe kqemu
Setelah modul kernel kqemu.ko sukses dieksekusi, maka qemu pun dapat dijalankan dengan fasilitas qemu accelerator module telah diaktifkan. Anda tidak akan lagi melihat pesan kesalahan berikut ini setiap kali menjalankan QEMU: Could not open ‘/dev/kqemu’ - QEMU acceleration layer not activated
Anda bisa membandingkan sendiri apakah penggunaan qemu accelerator module dapat meningkatkan kecepatan emulasi.
Qemu monitor Qemu merupakan aplikasi yang sangat lengkap dan menarik. Selain datang dengan accelator module, qemu juga datang dengan qemu monitor. Yang satu ini sudah satu paket dengan qemu dan merupakan free software. Qemu monitor akan sangat berguna apabila kita ingin memberikan perintah yang
Qemu menjalankan Debian 2.2.
kompleks kepada qemu. Sebagai contoh: Kita ingin mengganti CDROM. Ini sangatlah umum dilakukan. Mem-freeze virtual machine. Menginspeksi status virtual machine. Mengcapture layar (dalam format PPM). dan lain sebagainya. Sebagai contoh, jalankanlah emulasi salah satu image yang telah dibahas ataupun harddisk image yang telah Anda install dengan sistem operasi tertentu. Penulis akan mempergunakan debian 2.2 yang diinstal sebelumnya sebagai contoh. Pada saat sistem operasi yang diemulasikan selesai boot, aktifkanlah qemu monitor dengan menekan kombinasi tombol CTRL-ALT-2. Sebuah prompt qemu akan ditampilkan untuk Anda. Untuk kembali ke layar emulasi, tekanlah kombinasi tombol CTRL-ALT-1. Sebagai contoh, kita akan memberikan beberapa perintah berikut: Untuk mengirimkan penekanan tombol kepada qemu. Berikanlah perintah sendkey seperti contoh berikut: (qemu) sendkey ctrl-alt-f3
Perintah tersebut akan berfungsi seperti halnya ketika kita menekan kombinasi tombol CTRL-ALT-F3. Pindahlah kembali ke layar emulator dengan menekan CTRL-ALT-1. Anda akan melihat bahwa kita sudah berpindah ke tty3 (berkat pemberikan perintah sendkey pada qemu monitor). Untuk mengcapture layar. Berikan perintah screendump seperti contoh berikut ini:
www.infolinux.web.id
(qemu) screendump /tmp/NOP/ qemu.ppm
Lokasi penyimpanan gambar hasil capture adalah di host (sistem yang menjalankan emulator), bukan di sistem operasi yang diemulasikan (guest). Untuk mereset sistem. Berikan perintah system_reset seperti contoh berikut: (qemu) system_reset
Pemberian perintah ini bisa disamakan dengan penekanan tombol Reset pada komputer ketika sedang berjalan. Di luar contoh-contoh yang kita bahas, kita selalu bisa memberikan perintah help di prompt qemu monitor untuk melihat perintah-perintah yang tersedia.
Masalah disk full pada Windows 2000 Sebelum kita menutup pembahasan tentang qemu, kita akan membahas tentang permasalahan instalasi Windows 2000 yang berhubungan dengan problem ‘disk full’. Para developer menyatakan bahwa kesalahan tersebut disebabkan karena bug pada installer Windows 2000. Untuk mengatasi masalah ini, berikanlah opsi -win2k-hack pada saat menjalankan qemu untuk menginstall Windows 2000. Setelah instalasi dilakukan, opsi tersebut tidak perlu diberikan lagi pada saat menjalankan qemu (karena akan memperlambat transfer data IDE). Sampai di sini dulu pembahasan kita tentang QEMU. Selamat mencoba! Noprianto ([email protected])
INFOLINUX 02/2006
67
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Qt
Berkenalan dengan Bbjek QTable Milik Qt Bagian 1 dari 2 artikel Sebagai sebuah framework pemrograman, kemampuan Qt sudah tidak perlu diragukan lagi. Kita bisa lihat bagaimana Qt digunakan di berbagai aplikasi besar seperti KDE, Opera dan Skype. Kelengkapan widget-nya pun luar biasa. Dan, di “Tutorial” kali ini, kita akan membahas beberapa contoh dasar penggunaan Qtable, sebuah objek table yang sangat berguna ketika kita bekerja dengan data. Bisa kita lihat betapa menyenangkan bekerja dengan QTable.
D
i “Tutorial” ini, kita akan memfokuskan diri pada objek QTable saja. Namun, pertama-tama, sebagai pengantar, kita akan melihat bagaimana melakukan kompilasi dengan pustaka Qt. Tutorial ini mengasumsikan kita telah mengetahui sintaks-sintaks dasar bahasa C++, termasuk konsep OOP secara mendasar. Pengetahuan akan Qt tidak diperlukan. Penjelasan akan dibahas setelah source code. Tutorial ini dibangun pada sistem SUSE 9.3, GCC 3.3.5 dan Qt 3.3.4, namun seharusnya dapat digunakan pada sistem-sistem lainnya. Untuk dapat bekerja dengan baik, siapkanlah editor source code yang baik. Penulis menggunakan Vim untuk pengeditan source code. Walaupun Qt memiliki Qt designer (untuk mendesain user interface dengan mudah dan cepat), kita tidak akan mempergunakannya dalam kesempatan kali ini. Untuk mendapatkan dokumentasi Qt, installah juga paket dokumentasi Qt dan tool Qt Assistant (documentation tool). Berikut ini adalah paket-paket yang berhubungan dengan Qt yang terinstal di sistem penulis dan diperlukan dalam tutorial kali ini: $ rpm -qa | grep -i ^qt qt3-3.3.4-11 qt3-devel-3.3.4-11 qt3-devel-tools-3.3.4-11
68
INFOLINUX 02/2006
qt3-extensions-3.3.4-11 qt3-devel-doc-3.3.4-11
Sebagai catatan, di dalam tutorial kita kali ini, sekali lagi, fokus adalah hanya pada objek QTable. Hal ini berarti, kita hanya akan menampilkan widget QTable tunggal dalam aplikasi kita. Tidak ada widget lain selain QTable yang akan ditampilkan dalam window utama aplikasi. Ini juga berarti, tidak ada sistem layout yang akan dibahas. Apabila semua kebutuhan telah terinstal, kita siap untuk melanjutkan ke pembahasan pertama, yaitu cara kompilasi menggunakan pustaka Qt.
Kompilasi program Qt Ada empat langkah untuk menghasilkan program Qt. Untuk langkah pertama, kita perlu mengetikkan source code aplikasi. Sebagai saran, sebaiknya, buatlah direktori tersendiri untuk setiap aplikasi. Sebagai contoh, kita akan membuat aplikasi dengan nama 1. Maka, kita akan membuat direktori 1, masuk ke dalamnya, dan mengetikkan source code yang disimpan sebagai 1.cpp. Berikut ini adalah isi source codenya: #include #include int main(int argc, char* *argv)
Penjelasan kode: setiap aplikasi Qt harus menggunakan header qapplication.h. Dalam setiap aplikasi Qt, harus ada satu objek QApplication. QApplication akan mengatur resource yang berhubungan dengan aplikasi seperti kursor dan font. Qt sangat baik mengorganisasi header dan widget. Umumnya, nama header akan sama dengan nama widget. Dalam contoh kali ini, kita akan menggunakan widget QPushButton (tombol) sehingga kita perlu menggunakan header qpushbutton.h. Aplikasi Qt perlu memproses jumlah argumen (argc) dan daftar argumen (argv) yang diberikan oleh user, yang dikirim pada saat pembuatan objek QApplication seperti pada kode. Harap diperhatikan bahwa objek QApplication perlu dibuat sebelum objek window Qt lainnya dibuat.
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Qt
Pembuatan QPushButton dapat langsung dilengkapi dengan label tombol seperti pada kode. Widget utama aplikasi kita adalah tombol yang kita buat sebelumnya (app.setMainWidget()). Pada saat objek dibuat, status visibilitynya adalah false. Kita perlu mengubahnya menjadi true dengan memanggil method show(). Terakhir, return value ke sistem untuk aplikasi kita akan diserahkan kepada method exec() milik objek aplikasi Qt. Setelah langkah pertama selesai, kita akan melanjutkan ke langkah kedua, yaitu pembuatan project. Untuk saat ini, kita tidak perlu memusingkan apapun. Ketika berada di dalam direktori source code, kita cukup memberikan perintah berikut ini untuk menghasilkan project: $ qmake -project
Setelah perintah ini kita berikan, maka akan terbentuk satu file dengan nama 1.pro, dengan contoh isi file pada sistem penulis: ############################### ############################### ######## # Automatically generated by qmake (1.07a) Tue Dec 20 10:56:05 2005 ############################### ############################### ########
akhir, yaitu melakukan kompilasi aplikasi. Kompilasi aplikasi dapat dilakukan dengan memberikan perintah:
Lakukanlah prosedur kompilasi seperti pada contoh untuk mendapatkan binary 2.
$ make
Setelah langkah terakhir ini kita jalankan, maka akan terbentuk sebuah binary dengan nama 1, yang siap untuk dijalankan. Dengan cara yang serupa, kita bisa belajar membangun aplikasi sederhana satu widget. Pembahasan berikutnya akan difokuskan pada objek QTable, dengan prosedur kompilasi yang serupa dengan contoh (pembuatan project, pembuatan Makefile, kompilasi dengan menjalankan make).
Contoh QTable sederhana Dalam contoh berikut ini, kita akan membangun aplikasi dengan nama aplikasi 2, dan oleh karenanya, kita perlu membuat direktori 2, masuk ke dalamnya, dan mengetikkan source code 2.cpp. Contoh 2.cpp akan berikan cara pembuatan objek QTable, yang terdiri dari 2 baris dan 4 kolom. Baris dan kolom akan diberi nama mulai dari 1. Berikut ini adalah isi 2.cpp: #include #include int main(int argc, char * * argv) { QApplication app (argc, argv);
TEMPLATE = app CONFIG -= moc INCLUDEPATH += .
bility tbl1 (objek QTable yang kita buat) menjadi true
QTable tbl1(2, 4);
Mengisi sel di dalam tabel Dalam contoh berikut, kita akan membangun aplikasi dengan nama 3. Buatlah direktori 3 dan masuklah ke dalamnya untuk membuat 3.cpp. Dalam contoh ini, kita akan mengisikan tulisan test ke dalam setiap sel di dalam tabel. Berikut ini adalah isi 3.cpp: #include #include
int rows = 2; int cols = 4; QTable tbl1(rows, cols);
for (int i=0; i
app.setMainWidget (&tbl1); tbl1.show();
# Input SOURCES += 1.cpp
app.setMainWidget (&tbl1); tbl1.show();
return app.exec(); }
Sampai di sini, langkah kedua selesai. Kita akan melanjutkan ke langkah ketiga, yaitu pembuatan Makefile. Cukup berikan perintah berikut ini untuk membuat makefile secara otomatis: $ qmake
Setelah perintah ini kita berikan, sebuah file dengan nama Makefile akan terbentuk. Apabila kita telah memiliki Makefile, maka kita tinggal melanjutkan ke langkah ter-
return app.exec(); }
Penjelasan kode: Karena kita ingin menggunakan QTable, maka kita perlu menggunakan header qtable.h. Salah satu constructor QTable yang bisa digunakan adalah constructor yang mengijinkan kita langsung memberikan jumlah baris dan kolom Selebihnya, kita akan mengatur widget utama aplikasi dan mengubah status visi-
www.infolinux.web.id
Penjelasan kode: Pertama, kita membuat variabel rows dan cols, yang masing-masing digunakan untuk menampung jumlah baris dan kolom. Selanjutnya, menggunakan perulangan dalam perulangan, kita mengatur isi text setiap sel dengan tulisan test. Untuk mengatur isi text sel, kita menggunakan method setText() yang akan
INFOLINUX 02/2006
69
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Qt
membutuhkan tiga parameter: Baris. Kolom. Tulisan yang ingin diisikan.
Melakukan pengecekan sederhana pada baris Dalam contoh berikut, kita akan membangun aplikasi dengan nama 4. Buatlah direktori 4 dan masuklah ke dalamnya untuk membuat 4.cpp. Dalam contoh ini, kita akan memeriksa nomor baris, dan untuk setiap sel pada baris tersebut, kita akan menuliskan teks baris genap ataupun baris ganjil sesuai nomor baris sel tersebut. Setiap sel terbentuk dari perpotongan baris dan kolom. Dalam contoh ini, hanya baris yang akan diperiksa. Berikut ini adalah isi 4.cpp: #include #include int main(int argc, char * * argv) { QApplication app (argc, argv); int rows = 4; int cols = 6; QTable tbl1(rows, cols); for (int i=0; i
70
INFOLINUX 02/2006
Penjelasan kode: Sama seperti contoh 3, kita melakukan perulangan dan perulangan untuk mengisi setiap sel. Namun, kita menambahkan pemeriksaan terhadap baris (diwakili oleh variabel i). Karena baris dimulai dari 0 namun tampil bagi user dimulai dari 1, maka kita perlu menambahkan 1 ke i sebelum kita bagi dengan 2 dan periksa sisa baginya. Apabila sisa bagi adalah 1, maka kita akan menuliskan baris ganjil. Apabila sisa bagi adalah 0, maka kita akan menuliskan baris genap.
Pengecekan pada baris dan kolom Dalam contoh berikut, kita akan membangun aplikasi dengan nama 5. Buatlah direktori 5, masuklah ke dalamnya dan buatlah 5.cpp. Dalam contoh kali ini, kita akan melengkapi contoh 4 dengan memeriksa juga kolom sehingga di dalam setiap sel, akan terulis: Baris genap, kolom genap. Baris genap, kolom ganjil. Baris ganjil, kolom genap. Barus ganjil, kolom ganjil.
Berikut ini adalah isi 5.cpp: #include #include int main(int argc, char * * argv) { QApplication app (argc, argv); int rows = 4; int cols = 5; QTable tbl1(rows, cols); for (int i=0; i
www.infolinux.web.id
Penjelasan kode: Secara umum sama seperti contoh 4, hanya dalam contoh ini, kita juga memeriksa variabel j (ditambah 1 untuk menyesuaikan tampilan pada user).
Menuliskan posisi baris dan kolom pada sel Dalam contoh ini, kita akan membangun aplikasi dengan nama 6. Buatlah direktori 6, masuklah ke dalamnya dan buatlah 6.cpp. Dalam contoh kali ini, kita akan mengisi setiap sel dengan teks dalam format (baris,kolom). Dengan demikian, sel yang terbentuk dari perpotongan baris 3 dan kolom 4 akan berisikan teks (3,4). Contoh ini juga sekaligus memperkenalkan QVariant, objek tipe data variant. Berikut ini adalah isi dari 6.cpp: #include #include #include int main(int argc, char * * argv) {
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
TUTORIAL Qt
QApplication app (argc, argv); int rows = 4; int cols = 5; QTable tbl1(rows, cols);
for (int i=0; i
masuklah ke dalamnya dan buatlah 7.cpp. Dalam contoh kali ini, kita akan membangun tabel dengan 4 baris dan 4 kolom, serta mengganti label kolom menjadi A, B, C dan D. Contoh ini juga sekaligus memperkenalkan objek QStringList, yang berisikan daftar-daftar (list) string. Berikut ini adalah isi dari 7.cpp: #include #include #include #include
Penjelasan kode: Karena kita akan menggunakan objek QVariant, maka kita perlu menggunakan header qvariant.h. Masih menggunakan perulangan dalam perulangan, kita mengisikan isi teks setiap sel. Dalam perulangan, kita membangun dua objek QVariant, yaitu j2 dan i2, yang masing-masing nilainya adalah j+1 dan i+1. Kemudian, kita membangun objek QString temp dan membangun format (baris,kolom). Baris dan kolom, yang sebelumnya kita dapat dari i+1 dan j+1 yang disimpan ke variant i2 dan j2, kita jadikan string dengan method toString(), sehingga bisa digabungkan dengan string lainnya (“(“, “,” dan “)”). Setelah itu, kita tinggal melewatkan temp ke setText() milik QTable.
Mengubah label kolom Dalam contoh ini, kita akan membangun aplikasi dengan nama 7. Buatlah direktori 7,
Penjelasan kode: Karena kita akan menggunakan QStringList untuk menampung label-label kolom, maka kita perlu menggunakan header qstringlist.h. Selanjutnya, kita membuat objek QStringList dan mempergunakan method append() untuk menambahkan label kolom. Untuk mengubah label kolom, kita mempergunakan method setColumnLabels() milik QTable. Kita masih memliki contoh 8 sampai 16 seputar penggunaan qtable yang lebih menarik yang akan kita bahas pada edisi berikutnya. Selamat mencoba! Noprianto ([email protected])
www.infolinux.web.id
INFOLINUX 02/2006
71
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Replikasi Database MySQL
Teknik Replikasi Database di MySQL Salah satu database open source terpopuler saat ini adalah MySQL. Selain cepat melakukan query, database ini juga bersifat free. Pada artikel kali ini, penulis akan menjelaskan teknik replikasi database di MySQL.
S
uatu database dapat didefinisikan sebagai kumpulan data yang disatukan dalam suatu organisasi. Sebagai sebuah database open source yang paling populer, banyak perusahaan saat ini menggunakan MySQL baik untuk membuat sistem informasi, maupun membuat aplikasi desktop yang lebih lengkap untuk sistem perusahaan. Salah satu hal terpenting yang biasa dilakukan oleh perusahaan adalah proses backup data. Dengan back-up data, diharapkan jika terjadi kerusakan atau error komputer, maka data yang sudah ada tidak semuanya hilang karena sudah di-back-up. Metode yang paling mudah untuk backup data yang ada di MySQL adalah menggunakan perintah mysqldump. Dengan menggunakan perintah ini, maka semua tabel dan isinya yang ada di suatu database, dapat dengan mudah di-back-up ke dalam bentuk file yang berisikan syntax SQL database tersebut. Sayangnya, cara seperti ini tidaklah praktis dan efisien. Mungkin bisa saja Anda menset interval waktu setiap 1 menit melalui crontab untuk melakukan dumping database MySQL jika terjadi perubahan. Tapi bagaimana jika dalam waktu kurang dari 1 menit, tiba-tiba beberapa isi dari database transaksi ada yang hilang atau corrupt. Jika data yang belum sempat terdump tersebut merupakan data yang sangat penting, tentu hal itu akan menjadi masalah buat Anda. Untuk mengatasi hal itu, ada cara yang lebih efektif yang dapat Anda gunakan. Yaitu dengan menggunakan dua buah PC sebagai Master Server dan Slave Server, yang kemudian kita setting untuk dapat menjalankan
72
INFOLINUX 02/2006
metode replikasi di MySQL. Dengan menggunakan metode replikasi ini, maka setiap ada perubahan yang ada di Master, maka otomatis perubahan itu akan terjadi juga di komputer Slave secara realtime. Pembuatan replikasi ini dimaksudkan untuk membuat salinan/back-up data asli. Jadi bila seperti ada kasus seperti di atas, kalau database secara ‘tidak sengaja’ hilang, maka akan masih ada gantinya, yaitu replikasi itu tadi. Tetapi proses replikasi ini belum bisa dijalankan antara sistem operasi yang berbeda. Misal dari Windows ke Linux. Dari dokumentasi yang dibaca penulis di suatu sumber di Internet, proses replikasi ini baru bisa berjalan antara Sistem Operasi yang sejenis misal antara sesama Linux, misal: Fedora dengan Debian. Akan lebih aman lagi, bila kedua distro dan versi MySQL yang digunakan sama persis antara yang ada di komputer Master dengan yang ada di komputer Slave. Dalam “Tutorial” kali ini, kami akan menjelaskan cara replikasi database bernama portaldb yang ada di Master dengan IP address 192.168.2.1 ke komputer Slave yang memiliki IP addess 192.168.2.2. Pada ujicoba kali ini, kedua komputer yang penulis gunakan menjalankan Debian Sarge dan menjalankan MySQL versi 4.1. Dan seharusnya konfigurasi ini juga dapat Anda terapkan pada distro yang lainnya dengan sedikit atau tanpa modifikasi sama sekali. Untuk mempersingkat waktu, mari kita lihat penjelasan di bawah ini.
Tahapan sebelum konfigurasi Sebelum masuk ke tahapan konfigurasi, ada beberapa hal yang harus diperhatikan, antara lain sebagai berikut :
www.infolinux.web.id
1. Penulis berasumsi kalau Anda telah memiliki dua buah PC sebagai bahan ujicobanya. Di kedua PC tersebut, sudah terinstallasi sistem operasi Linux. Untuk pilihan distro yang dipilih, tergantung pada selera Anda. Hanya saja pada pembuatan artikel ini, penulis menggunakan Debian Sarge untuk ujicobanya. 2. Instal software MySQL yang memiliki versi yang sama terlebih dahulu di kedua PC tersebut. Hal ini untuk meminimalisasi kegagalan proses replikasi yang disebabkan akibat perbedaan versi MySQL yang digunakan. Dalam artikel ini, penulis menggunakan MySQL versi 4.1.11 di kedua PC sebagai pilihannya. 3. Jika terdapat perbedaan letak file atau parameter konfigurasi yang disebabkan penggunaan distro yang berbeda, sesuaikan saja sesuai dengan kondisi yang ada di system Linux Anda. 4. Artikel ini menitikberatkan pada penerapan teknik replikasi di MySQL saja. Mengenai cara pembuatan user di MySQL, beserta dengan kebijakan atau hak akses yang diberikan pada user dengan database yang boleh diakses, Anda dapat membacanya sendiri di manual MySQL.
1. Konfigurasi komputer master Pertama-tama, kita harus mengedit file /etc/mysql/my.cnf. Kita akan meng-enable-kan fungsi networking untuk MySQL, agar MySQL dapat menerima request dari semua IP address. Untuk melakukan hal ini, beri comment (#) pada bagian berikut dalam baris file yang ada di /etc/mysql/ my.cnf. # Instead of skip-networking the
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Replikasi Database My SQL
Edit parameter file my.cnf di komputer pertama agar berfungsi sebagai komputer Master MySQL.
default is now to listen only on # localhost which is more compatible and is not less secure. # bind-address = 127.0.0.1
Arti dari perintah di atas adalah, jika bind-address kita enable (tanpa tanda pagar), maka user lain yang host-nya selain localhost tidak akan bisa mengakses MySQL. Setelah itu, kita akan memberitahu MySQL, database mana yang seharusnya menulis file logs (file logs ini digunakan oleh Slave untuk melihat perubahan yang ada di Master), dimana log file itu seharusnya digunakan, dan kita harus menspesifikasikan bahwa MySQL server di komputer 192.168.2.1 merupakan database Masternya. Dalam contoh kasus ini, kita hanya akan melakukan replikasi terhadap database portaldb, jadi kita akan mengaktifkan baris berikut ini yang ada dalam file /etc/mysql/ my.cnf. server-id = 1 log-bin = /var/log/mysql/ mysql-bin.log binlog-do-db = portaldb
Ketikkan isi file portaldb.sql ini dengan menggunakan editor kesayangan Anda. CREATE TABLE bukualamat no int(11) NOT NULL auto_ increment, nama varchar(50) default NULL, alamat varchar(100) default NULL,
Edit juga parameter file my.cnf di komputer kedua agar berfungsi sebagai komputer Slave MySQL.
Berikutnya buat database portaldb, dan dump isi file portaldb.sql kedalam database portaldb. $ mysqladmin -u supriyanto -p create portaldb $ mysql -u supriyanto -p portaldb < portaldb.sql
Restart service MySQL Anda: # /etc/init.d/mysql restart
www.infolinux.web.id
Login sebagai root, dan buatlah sebuah user yang memiliki replication privileges: # mysql -u root -p
Setelah masuk ke MySQL shell, masuk ke database mysql dan ketikkan perintah berikut: use mysql; GRANT REPLICATION SLAVE ON *.* TO ‘slave_user’@’%’ IDENTIFIED BY ‘slaveaje’; FLUSH PRIVILEGES;
Arti dari perintah di atas adalah memberikan hak akses replikasi semua database untuk slave-user yang berada pada host 1 92.168.2.x/255.255.255.0 diidentifikasikan (dengan password) slaveaje. Setiap user dan privilege yang dibuat tidak akan secara otomatis dikenal oleh server MySQL. Kali pertama MySQL dijalankan, MySQL akan membaca tabel-tabel privillege dan disimpan ke dalam memory. Itu sebabnya kita memakai FLUSH PRIVILEGES; untuk memaksa MySQL membaca user dan privilege baru. Berikutnya (masih tetap di MySQL shell), lakukan perintah berikut: use portaldb; FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
Hasil dari perintah show master status, akan terlihat seperti pada tabel 1. (dapat berbeda nilainya di setiap komputer). Tuliskan informasi tersebut ke catatan Anda, karena kita akan membutuhkan-
INFOLINUX 02/2006
73
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Replikasi Database MySQL
Tabel 1. Hasil dari perintah show master status.
+---------------+------------+---------------+-----------------+ File Position Binlog_do_db Binlog_ignore_db +---------------+------------+---------------+-----------------+ mysql-bin.056 79 portaldb +---------------+------------+---------------+-----------------+ 1 row in set (0.10 sec)
nya pada saat mengonfigurasi komputer Slave.
portaldb yang ada di komputer Slave. # mysql -u root portaldb.sql
-p portaldb <
Keluar dari MySQL shell. quit;
Berikutnya, kita akan beranjak untuk mengonfigurasi komputer Slave.
2. Konfigurasi komputer slave Setelah kita mengonfigurasi komputer Master, langkah selanjutnya yang harus kita lakukan adalah mengonfigurasi komputer Slave sebagai back-up server. Untuk itu, kita harus berpindah terlebih dahulu ke komputer 192.168.2.2 untuk memulai konfigurasi ini. Setelah kita berada di komputer Slave, hal pertama yang harus dilakukan adalah membuat database portaldb, untuk menampung isi portaldb.sql yang ada di komputer Master. # mysqladmin -u root -p create portaldb
Selanjutnya, kita akan melakukan dumb isi file portaldb.sql yang sama dengan yang ada komputer Master, ke dalam database
Buat database portaldb untuk menampung hasil dump portaldb.sql.
74
INFOLINUX 02/2006
Langkah berikutnya adalah, kita harus mengonfigurasikan MySQL di Slave, untuk menunjukkan kalau MySQL di 192.168.2.2 adalah sebagai Slave dan komputer 192.168.2.1 adalah Master-nya. Selain itu, kita juga akan memberitahu juga kalau Master database yang akan direplikasi adalah database portaldb. Untuk hal itu, kita perlu menambahkan baris berikut ke /etc/mysql/my.cnf. server-id=2 master-host=192.168.2.1 master-user=slave_user master-password=slaveaje master-connect-retry=60 replicate-do-db=portaldb
Kemudian restart servis MySQL Anda. # /etc/init.d/mysql restart
Sampai tahapan ini, komputer Slave sudah siap sebagai Backup Server untuk komputer Master. Tahapan berikutnya yang akan kita lakukan adalah menguji apakah
proses replikasi database yang sudah kita buat, sudah berjalan dengan baik atau belum. Untuk melakukan hal tersebut, kita akan beranjak ke tahapan testing.
3. Tahapan testing Bagaimana Anda tahu bahwa Anda telah berhasil melakukan replikasi? Seperti telah dikatakan sebelumnya bahwa replikasi akan membuat copy-an database dari Master server ke server Slave, dan akan meng-update perubahan-perubahan yang terjadi secara otomatis. Jadi nantinya isi database di komputer Slave akan sama dengan database di Master. Untuk melakukan pengujian, ikuti langkah-langkah sebagai berikut: Uji coba tambah data Pindah ke komputer Master, kemudian tambahkan beberapa data di tabel bukualamat yang ada di database portaldb. $ mysql -u supriyanto -p portaldb
Setelah masuk ke MySQL konsole, ketikkan perintah berikut: INSERT INTO `bukualamat` VALUES (4,’Cecilia Maharani’, ’Jl. Mardani 2’, ‘10450’, ’[email protected]’,’3909292’, ’1’,’2’); INSERT INTO `bukualamat` VALUES (5,’Farah Dillah’, ‘Jl. Ikan Paus ‘, ‘10480’, ‘[email protected]’,’7272779’, ’2’,’2’); INSERT INTO `bukualamat`
Melihat status Master MySQL dengan menggunakan perintah SHOW MASTER STATUS.
www.infolinux.web.id
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Setelah itu lakukan perintah select pada MySQL konsole, di komputer Master dan komputer Slave untuk melihat apakah isi tabel bukualamat sudah sama isinya (dalam contoh ini terdapat 7 buah record). select *from bukualamat;
Jika jumlah record yang ada di tabel bukualamat (baik pada komputer Master maupun pada komputer Slave), sudah sama persis, berarti proses replikasi sudah berjalan dengan baik. Coba lakukan proses delete sebuah record yang ada pada komputer Master. delete from bukualamat where no=’7’;
Perhatikan jumlah record di komputer Slave. Jika jumlah recordnya berkurang satu, berarti baik proses tambah record maupun delete record, sudah dapat direplikasikan dengan baik oleh MySQL. Uji coba tambah tabel Langkah berikutnya adalah kita akan mencoba menambahkan tabel pada database portaldb yang ada di komputer Master. Beberapa tabel akan kita tambahkan ke database portaldb. Untuk itu, masuk ke dalam database portaldb, kemudian lakukan perintah berikut: $ mysql -u supriyanto -p portaldb
Setelah masuk ke MySQL konsole, ketikkan perintah berikut SQL berikut ini: CREATE TABLE `hubungan` ( `kodehub` char(1) NOT NULL default ‘’, `namahub` varchar(25) default NULL, PRIMARY KEY (`kodehub`) );
Dengan menggunakan SSH, Anda dapat melihat proses replikasi yang sudah berjalan di kedua komputer.
Selanjutnya, pindah ke komputer Slave, dan lihat perubahan yang terjadi. Jika di komputer Slave sudah terdapat tabel hubungan dan tabel kota, berarti replikasi database portaldb yang terdapat di komputer Master sudah dapat berjalan dengan baik. Coba lagi tambahkan beberapa record untuk tabel kota, dari komputer Master dengan dua buah record sebagai berikut: INSERT INTO `kota` VALUES (‘tsk’,’Tasikmalaya’); INSERT INTO `kota` VALUES (‘bdg’,’Bandung’);
Jika record di atas otomatis bertambah di tabel kota yang terdapat di komputer Slave, Selamat! berarti Anda telah sukses melakukan replikasi database portaldb secara baik dan benar. Demikian tutorial replikasi database MySQL yang dapat penulis jelaskan. Dengan meng-
www.infolinux.web.id
gunakan metode replikasi ini, diharapkan risiko hilangnya data akibat kerusakan harddisk pada komputer Master yang berisi database server MySQL, dapat diminimalisasasi dengan baik. Jika suatu saat komputer Master database MySQL tersebut rusak, maka Anda dapat dengan cepat men-switch-nya ke komputer Slave, yang dapat langsung bertindak menggantikan fungsi komputer Master. Yang perlu Anda lakukan paling tidak mengubah IP Address komputer Slave menjadi IP Address komputer Master. Mengenai sisi keamanan dari teknik replikasi ini, penulis belum sempat untuk mengujinya lebih jauh dikarenakan keterbatasan waktu yang dimiliki. Anda dapat mencarinya sendiri mengenai cara mengamankan server database MySQL dengan metode replikasi, dari sumber-sumber online yang ada di Internet. Untuk mempermudah pembuatan tabel, insert data ke tabel, melakukan proses dump, dan sebagainya, Anda juga dapat menggunakan PHPMyAdmin yang sudah terdapat di dalam CD distro Debian Sarge. Akhir kata, semoga artikel ini dapat membantu Anda dalam memudahkan urusan backup server database MySQL. Sampai jumpa! Supriyanto ([email protected])
INFOLINUX 02/2006
75
TUTORIAL
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
Jabberd2 dan MySQL
Membuat Instant Messaging Server dengan Jabberd2 dan MySQL Server chatting tidak hanya milik Yahoo!, Google, atau Microsoft. Anda pun dapat membuat sendiri server chatting berbasis software open source, misalnya dengan Jabberd2 dan MySQL.
T
utorial” ini membahas pembuatan server instant messaging berbasis pada protokol jabber dengan menggunakan Jabberd2 (http://jabberd.jabberstudio. org/2/) sebagai server, database MySQL sebagai tempat penyimpanan data jabber, dan dukungan terhadap SSL dengan menggunakan openSSL. Untuk kebutuhan instalasi tersebut pastikan terlebih dahulu Anda telah menginstalasi paket libidn versi 0.3 atau setelahnya serta paket development-nya, paket OpenSSL versi 0.9b atau versi setelahnya serta paket development-nya, dan paket MySQL serta paket development-nya untuk kelancaran proses instalasi Jabberd2.
Instalasi Jabberd2 Setelah Anda mendapatkan jabberd2 versi terbaru dan stabil, langkah selanjutnya adalah melakukan instalasi jabberd2 pada komputer anda. Pastikan Anda berada di direktori tempat anda menyimpan file hasil download Anda. Berikut ini langkah-langkah instalasinya: 1. Buat user dan group baru dengan nama jabber. $ su password : <masukkan password root anda> # groupadd jabber # useradd -g jabber jabber
2. Buat direktori untuk menyimpan file-file log jabberd2: # mkdir -p /usr/local/var/ jabberd/log
3. Buat direktori untuk menyimpan file-file PID jabberd2.
76
INFOLINUX 02/2006
# mkdir -p /usr/local/var/ jabberd/pid
4. Ganti kepemilikan direktori untuk filefile log dan PID untuk user dan group jabber. # chown -R jabber:jabber / usr/local/var/jabberd/
5. Ekstrak file jabberd. # tar -zxf jabberd-2.0s10. tar.gz
6. Pindah ke direktori hasil ekstraksi dan lakukan perintah konfigurasi. # cd jabberd-2.0s10 # ./configure --enable-idn -enable-mysql --enable-ssl
7. Setelah proses konfigurasi selesai, kemudian lakukan build dan instalasi.
9. Untuk memudahkan pengaturan konfigurasi, buat simbolik link direktori konfigurasi jabberd2 ke direktori /etc yang merupakan standar file konfigurasi di Linux. # ln -s /usr/local/etc/ jabberd/ /etc/jabberd
Konfigurasi Jabberd2 File-file konfigurasi Jabberd berupa file dengan ekstensi .xml. Bagian di antara tanda merupakan komentar dan diabaikan oleh Jabberd. Untuk tahapan awal lakukan konfigurasi pada file sm.xml dan c2s. xml. Edit file sm.xml dengan editor kesukaan anda, misalnya dengan vi. # vi /etc/jabberd/sm.xml
Pada bagian masukkan nama hostname sebagai identifikasi untuk server jabber Anda, misalnya jabber.local.org. jabber.local.org
# make && make install
Secara default file instalasi berada di direktori /usr/local. File-file konfigurasi jabberd2 berada di direktori /usr/local/ etc/jabberd, sedangkan file-file binari jabberd berada di direktori /usr/local/bin (terdiri dari dari file jabberd, c2s, resolver, router, s2s dan sm). 8. Ganti kepemilikan file-file konfigurasi untuk user root dan ganti permisi file agar selain user root tidak mendapatkan akses untuk membaca atau menulis pada file-file tersebut. # chown -R root:jabber /usr/ local/etc/jabberd/* # chmod 640 /usr/local/etc/ jabberd/*
www.infolinux.web.id
Pada bagian pada sesi Router connection configuration, ganti ip 127.0.0.1 menjadi alamat ip server Anda. Contoh: 192.168.10.223 <port>5347
Simpan konfigurasi Anda kemudian edit file c2s.xml, # vi /etc/jabberd/c2s.xml
Berita | Ulasan | Utama | Bisnis | Alternatif | Praktik Instan | Solusi | Tutorial
TUTORIAL Jabberd2 dan MySQL
Ganti alamat ip pada bagian Router connection configuration dengan alamat ip server Anda. 192.168.10.223 <port>5347
Lalu edit pada bagian Local network configuration dengan mengganti isian pada bagian dengan nama host server sebagaimana yang telah diisikan pada file sm.xml. jabber.local.org
and port --> localhost <port>3306 jabberd2 <user>jabberd2 <pass>secret
Pada sesi MySQL driver configuration, ganti isian pada <user> dengan nama user database MySQL Anda, dan ganti isian pada <pass> dengan password user database Anda. <user>user_db <pass>pass_user_db
Konfigurasi MySQL Jalankan script MySQL setup yang berada di direktori tools pada direktori source jabber (sebagai contoh jabberd2.0s10/tools). Pertama, pindah ke direktori tools. # cd tools
Pastikan service MySQL server sedang berjalan, kemudian jalankan perintah berikut dari konsole/terminal. mysql -u root -p mysql> \. db-setup.mysql mysql> GRANT select, insert, delete, update, ON jabberd2.* to jabberd2@localhost IDENTIFIED by ‘secret’;
User jabberd2 dengan password secret merupakan user dan password default yang diberikan oleh script db-setup.mysql. Anda bisa menyesuaikan perintah di atas dengan user dan password anda sendiri. Jika anda menggunakan user dan password default di atas, maka anda tidak perlu mengedit file konfigurasi pada file sm.xml dan c2s.xml. Tapi jika anda menggunakan user dan password sendiri, maka lakukan penyesuaian pada file sm.xml dan c2s.xml pada bagian berikut ini: <mysql>