TUTORIAL SHELL SCRIPT Bagian 3 dari 3 Tulisan
Melengkapi Shell Script dengan Progress Bar
U
ntuk proses yang melibatkan waktu tunggu yang lama, progress bar adalah indikator progress yang sangat berguna untuk user. Di edisi-edisi sebelumnya, kita telah membahas progress bar dengan bantuan dialog dan zenity. Di edisi ini, kita akan mempergunakan program tput sebagai alat bantu serta membuat progress bar sendiri.
Contoh-contoh tugas yang melibatkan penggunaan progress bar yang akan kita bahas pada tulisan ini pada prinsipnya sama dengan contoh-contoh tugas pada edisiedisi sebelumnya. Bedanya adalah apabila sebelumnya kita menggunakan dialog dan zenity, kali ini kita mempergunakan tool lain. Berikut ini adalah tugas-tugas yang akan kita berikan progress bar: Berbagai contoh proses dummy. Iterasi semua file dalam direktori, untuk kemudian akan diperiksa md5sumnya. Proses yang waktu tunggunya tidak dapat diperkirakan. Untuk contoh ekstraksi arsip, kita tidak akan membahasnya lagi karena telah dibahas di dua edisi sebelumnya. Tool yang akan kita pergunakan kali ini adalah program tput, di mana pembuatan progress bar dilakukan secara manual. Bagi yang tidak menyukai tput, kita juga bisa menggambar progress bar sendiri. Keduanya dibahas pada tulisan ini. Sama seperti edisi-edisi sebelumnya, semua contoh dalam tulisan ini dibuat pada sistem Debian GNU/Linux Sarge, namun seharusnya dapat pula diterapkan pada sistem lainnya tanpa masalah.
Masalah pada zenity dan dialog Kedua tool tersebut memang dikhususkan untuk pembuatan dialog yang ramah untuk program yang ditulis dengan shell script. Shell script yang menggunakan bantuan
52
11/2006 INFOLINUX
tool tersebut setidaknya akan memiliki user interface yang lebih ramah bagi user. Terutama shell script yang dibangun dengan zenity, yang berjalan pada interface grafikal. Namun, menggunakan kedua tool tersebut dalam shell script juga memiliki kekurangan, di antaranya: Ketergantungan yang besar pada pustaka eksternal. Terutama untuk shell script yang dibangun dengan bantuan zenity. Shell script yang sedianya sudah cukup lambat, harus berjalan lebih lambat lagi. Terutama untuk shell script yang dibangun dengan bantuan zenity. Kurangnya fleksibilitas dalam merancang user interface. Walaupun kedua tool tersebut memberikan kemudahan luar biasa bagi kita, user interface yang disediakan hanya itu-itu saja. Dalam pembuatan progress bar misalnya, kita tidak bisa mengubah posisi progress barnya. Atau, kita tidak bisa menambahkan informasi lain di posisi lain.
Menggunakan tput Tput adalah program yang dapat digunakan untuk bekerja pada terminal. Tput juga dapat digunakan untuk menulis pada posisi tertentu di terminal. Untuk kebutuhan pembuatan progress bar, tput memang tidak menyediakan fungsi yang bisa langsung digunakan. Oleh karena itu, kita perlu “menggambar” sendiri progress bar kita secara manual. Usaha yang diperlukan memang lebih besar, namun kita bisa “menggambar” sesuka hati.
Walaupun fleksibel, penggunaan tput juga memiliki kekurangan. Di antaranya adalah: Usaha yang harus dikeluarkan menjadi lebih besar karena progress bar harus digambar sendiri secara manual. Tampilan progress bar kurang menarik. Tput membutuhkan pustaka ncurses, yang berukuran cukup besar. Dari sisi kebutuhan pustaka sistem, tput kurang lebih sama saja dengan dialog. Proses penggambaran progress bar secara manual akan memicu eksekusi proses secara terpisah. Bagi end user, efek-efeknya adalah: Relatif lebih lambat (dalam beberapa kasus, bisa lebih lambat dibandingkan dengan penggunaan program dialog). Terjadinya kedipan layar. Sebelum menggunakan tput, kita akan melihat terlebih dahulu dasar penggunaannya. Untuk menginisialisasi terminal, berikanlah perintah berikut ini: $ tput init
Untuk me-reset terminal, gunakanlah perintah berikut ini: $ tput reset
Untuk membersihkan layar, berikanlah perintah berikut ini: $ tput clear
www.infolinux.web.id
TUTORIAL SHELL SCRIPT Untuk mengetahui jumlah kolom terminal, berikut ini adalah perintah yang dapat digunakan: $ tput cols 159
Untuk memindahkan posisi kursor pada koordinat x0, y0 (pojok kiri atas), berikanlah perintah berikut:
function p_put { let DROW=$ROW-1 let N=$1/$STEP let N_COL=$COL+$N let L_COL=$COL+$LENGTH+ 1 let S_COL=$COL+1 # clear line tput cup $DROW $COL echo -n “$CLEAR_CHAR”
Sebagai catatan, progress bar yang kita gambar sendiri tersebut akan memiliki karakteristik-karakteristik berikut ini: Karakter yang digunakan untuk progress bar adalah karakter # (bisa diganti sesuai keinginan). Setiap pergerakan lima persen akan menambahkan satu karakter # (bisa diganti sesuai keinginan).
# add desc and percent tput cup $DROW $COL echo -n “[$1%] $2”
Berikut ini adalah penjelasan source code: Untuk membersihkan layar, kita menggunakan perintah:
$ tput cup 0 0
Untuk memindahkan posisi kursor pada koordinat x20, y 10, berikanlah perintah berikut: $ tput cup 10 20
Untuk memindahkan posisi kursor pada koordinat x20, y 10, dan menulis kata halo di posisi tersebut, berikanlah perintah berikut:
$ tput clear # put progress bar tput cup $ROW $COL echo -n ‘|’ tput cup $ROW $L_COL echo -n ‘|’ tput cup $ROW $S_COL for i in `seq 1 $N` do echo -n $CHAR done
$ tput cup 10 20; echo halo
Dasar-dasar tersebut diperlukan untuk menggambar progress bar sendiri. Pada dasarnya, pembuatan progress bar adalah menggambar karakter tertentu (misal #) di posisi tertentu. Posisinya akan berubahubah sesuai dengan persentase yang telah dicapai. Kita akan melihatnya pada contoh pertama.
} tput clear
contoh 1: progress bar sederhana Kita akan memulai contoh progress bar sederhana, di mana kita memiliki beberapa contoh tugas berat (yang waktu tunggunya dibantu oleh program sleep). Berikut ini adalah isi dari shell script tput1.sh: #!/bin/sh # progress bar demo # Noprianto, 21 April 2006 # GPL # # simple progress bar demo using tput # simple 1 ROW=4 COL=20 CLEAR_CHAR=” CHAR=# STEP=5 # each $STEP incr will add one $CHAR let LENGTH=100/$STEP
www.infolinux.web.id
p_put 0 “Initializing...” sleep 3 p_put 50 “Please wait” sleep 3 p_put 80 “Amost done” sleep 1 p_put 100 “Done.” echo
“
lama 1 detik. Kemudian, menampilkan informasi done (pada posisi 100 percent) dan keluar.
Ketika script ini dijalankan, layar akan dibersihkan. Setelah itu, akan tampil sebuah progress bar yang akan: Menampilkan tulisan Initializing... (pada posisi 0 persen) selama 3 detik. Kemudian, menampilkan informasi Please wait (pada posisi 50 percent) selama 3 detik. Kemudian, menampilkan informasi Almost done (pada posisi 80 percent) se-
Untuk menunda eksekusi, kita menggunakan program sleep. Untuk membuat progress bar berada pada posisi 80 persen sambil menampilkan informasi “Almost done”, kita menggunakan perintah berikut ini: p_put 80 “Amost done”
Dengan adanya fungsi p_put, penampilan progress bar menjadi sangat mudah. Kita hanya perlu memberikan dua parameter: nilai persentase dan keterangan yang ingin ditampilkan. Bagaimanakah fungsi p_put bekerja? Mari kita lihat lebih detail: Variabel-variabel berikut akan mempengaruhi bagaimana progress bar ditampilkan: $ROW adalah posisi y progress bar. $COL adalah posisi x progress bar. $CLEAR_CHAR adalah karakter yang ditampilkan untuk membersihkan deskripsi/keterangan progress bar. Umumnya, kita akan mengisikan sederetan karakter spasi. $CHAR adalah karakter yang digunakan untuk progress bar. $STEP dapat dijelaskan sebagai jumlah langkah/persentase yang telah dicapai untuk menambahkan satu karakter CHAR. $LENGTH adalah panjang progress bar. Kecilkan $STEP untuk mendapatkan progress bar yang lebih panjang. ROW=4 COL=20
INFOLINUX 11/2006
53
TUTORIAL SHELL SCRIPT CLEAR_CHAR=”
# put progress bar tput cup $ROW $COL echo -n ‘|’ tput cup $ROW $L_COL echo -n ‘|’ tput cup $ROW $S_COL for i in `seq 1 $N` do echo -n $CHAR done
“ CHAR=# STEP=5 # each $STEP incr will add one $CHAR let LENGTH=100/$STEP
Pertama-tama, fungsi p_put akan mendapatkan posisi baris untuk menuliskan deskripsi/keterangan. Baris akan disimpan ke $DROW. function p_put { let DROW=$ROW-1
Setelah itu, kita akan menentukan jumlah $CHAR yang akan ditulis dan menyimpannya ke $N. Harap diperhatikan, $N didapatkan dari parameter pertama fungsi (yaitu nilai persentase) dibagi dengan $STEP (lihatlah penjelasan sebelumnya). let N=$1/$STEP
Setelah itu, ditentukan pula posisi untuk mulai menulis $CHAR let N_COL=$COL+$N let L_COL=$COL+$LENGT
}
Apabila Anda merasa bahwa fungsi ini kurang informatif atau kurang menarik, silahkan ubah sesuai kebutuhan. Sebelum mengubah total fungsi p_put, Anda mungkin juga akan mengubah beberapa variabel yang telah disebutkan dan dibahas sebelumnya. Contoh 2: Progress bar sederhana 2 Di dalam contoh sederhana 2 ini, kita akan menampilkan pergerakan setiap 10 persen, di mana setiap 10 persen akan diberikan delay masing-masing 1 detik. Apabila progress telah mencapai 100%, maka dengan sendirinya dialog akan keluar. Berikut ini adalah isi dari shell script tput2.sh: #!/bin/sh
H+1 let S_COL=$COL+1
Baris deskripsi kemudian dibersihkan dengan menuliskan $CLEAR_CHAR # clear line tput cup $DROW $COL echo -n “$CLEAR_CHAR”
Menuliskan deskripsi dan nilai persentasenya. Harap diperhatikan, deskripsi didapatkan dari parameter kedua, sementara, persentase didapatkan dari parameter pertama. # add desc and percent tput cup $DROW $COL echo -n “[$1%] $2”
Barulah, kita benar-benar menggambar progress bar. Pertama-tama, kita menentukan posisi. Setelah itu, kita menggambar karakter pipe (|) pada batas kiri dan kanan progress bar. Kemudian, kita pun mengulang dari 1 sampai $N untuk menggambar $CHAR.
54
11/2006 INFOLINUX
# progress bar demo # Noprianto, 21 April 2006 # GPL # # simple progress bar demo using tput # simple 2 ROW=4 COL=20 CLEAR_CHAR=”
“ CHAR=# STEP=5 # each $STEP incr will add one $CHAR let LENGTH=100/$STEP
function p_put { let DROW=$ROW-1 let N=$1/$STEP
... [dipotong, lihatlah contoh1] ... } tput clear PERCENT=0 p_put $PERCENT “ complete” while [ 1 ] do sleep 1 let PERCENT=$PERCENT+10 p_put $PERCENT “ complete” test $PERCENT -eq 100 && break done echo
Ketika script ini dijalankan, maka akan tampil sebuah progress bar yang akan: Menampilkan tulisan [0%] complete selama 1 detik. Kemudian, Menampilkan tulisan [10%] complete selama 1 detik. Kemudian, Menampilkan tulisan [20%] complete selama 1 detik. Dan seterusnya, sampai mencapai 100 persen, program akan keluar dengan sendirinya. Berikut ini adalah penjelasan source code: Kita kemudian mengulang tanpa batas (while [ 1 ]), di mana kita akan melakukan hal-hal berikut ini: Tunda 1 detik. Tambahkan persentase dengan 10. Menampilkan informasi persentase. Menguji apakah persentase sudah mencapai 100. Apabila sudah, maka perulangan akan dihentikan. Contoh 3: Progress bar sederhana 3 Contoh yang ketiga ini merupakan contoh sederhana terakhir, di mana kita akan mengulang 1 sampai 100, kemudian menampilkan progress sesuai kondisi sesungguhnya. Semuanya otomatis dan tanpa mempergunakan bantuan program sleep sama sekali. Berikut ini adalah isi dari shell script tput3.sh: #!/bin/sh
www.infolinux.web.id
TUTORIAL SHELL SCRIPT satu untuk kemudian disimpan ke file, dan pada akhirnya menampilkan isi file tersebut. Berikut ini adalah isi dari shell script tput4.sh:
# progress bar demo # Noprianto, 21 April 2006 # GPL # # simple progress bar demo using tput # simple 3
“ will
function p_put { let DROW=$ROW-1 let N=$1/$STEP ... [dipotong, lihatlah contoh1] ... }
# progress bar demo # Noprianto, 21 April 2006 # GPL # # simple progress bar demo using tput # simple 4 # iterate dir, check md5sum and display nice progress
p_put 0 “ complete “ for i in `seq 1 100` do p_put $i “ complete “ done echo
Ketika script ini dijalankan, maka akan tampil sebuah progress bar yang akan: Menampilkan tulisan [N%] complete, di mana N adalah dari 1 sampai 100. Karena iterasi berjalan cepat, maka kedipan layar akan sangat mungkin terjadi. Berikut ini adalah penjelasan source code: Kita akan mengulang dari 1 sampai 100. Di dalam perulangan tersebut, kita menampilkan informasi persentase. Contoh 4: iterasi direktori, cek md5sum setiap file dan laporkan Kita akan mengiterasi setiap file dalam direktori, memeriksa md5sumnya satu per
md5sum $F_CHECK >> $F_RESULT done p_put 100 “done.” echo rm -f $F_TEMP less $F_RESULT
ROW=4 COL=20 CLEAR_CHAR=”
“ CHAR=# STEP=5 # each $STEP incr will add one $CHAR let LENGTH=100/$STEP
tput clear
www.infolinux.web.id
let PERCENT=$i/$P_DIV p_put $PERCENT “Scanning $F_CHECK”
#!/bin/sh
ROW=4 COL=20 CLEAR_CHAR=”
CHAR=# STEP=5 # each $STEP incr add one $CHAR let LENGTH=100/$STEP
$F_TEMP | tail -n1`
function p_put { let DROW=$ROW-1 let N=$1/$STEP ... [dipotong, lihatlah contoh1] ... } tput clear DIR=/usr/bin F_TEMP=/tmp/$$.temp find $DIR -type f > $F_TEMP F_COUNT=`cat $F_TEMP | wc -l` F_RESULT=/tmp/$0.result let P_DIV=$F_COUNT/100+1 rm -f $F_RESULT PERCENT=0 p_put $PERCENT “Scanning $F_ CHECK” for i in `seq 1 $F_COUNT` do F_CHECK=`head -n$i
Ketika script ini dijalankan, maka akan tampil sebuah progress bar yang akan: Menampilkan tulisan [N%] Scanning
, di mana adalah nama file yang benar-benar sedang diperiksa dan akan selalu digantikan dengan nama file lain apabila pemeriksaan md5sum pada file tersebut telah selesai. N akan digantikan dengan persentase aktual. Ketika semua file telah diperiksa, maka kita akan memanggil program less untuk menampilkan informasi md5sum. Karena proses berlangsung cepat, maka kedipan layar akan sangat mungkin terjadi. Pada edisi sebelumnya, kita telah membahas program strncp, yang dapat digunakan untuk memotong string sampai karakter tertentu, sehingga panjang nama file yang ditampilkan selalu tetap. Harap diperhatikan, untuk terminal yang berukuran 80x25, akan sangat masuk akal apabila nama file (path lengkap) lebih panjang dari 80 karakter. Apabila pemeriksaan md5sum dilakukan pada file tersebut dan informasi pathnya ditampilkan lengkap, maka tampilan progress bar akan terlihat jelek sekali. Apabila diperlukan, gunakanlah program strncp. Informasi selengkapnya tentang logika yang digunakan bisa dibaca pada dua edisi sebelumnya. Sampai di sini dulu contoh penggunaan tput untuk pembuatan progress bar secara manual. Silakan modifikasi fungsi p_put sesuai kebutuhan.
INFOLINUX 11/2006
55
TUTORIAL SHELL SCRIPT Tampil sederhana dengan membuat progress bar sendiri Bagi Anda yang merasa tput cukup merepotkan, namun tetap berat dan membutuhkan pustaka besar (sementara Anda anti dengan dialog atau zenity), Anda selalu bisa membuat progress bar sendiri yang murah meriah dan sederhana, namun tetap informatif. Kali ini, kita tidak akan membutuhkan program berpustaka besar. Aplikasi kita, untuk kebutuhan progress bar saja, tidak akan bergantung pada pustaka ncurses. Lantas, apa yang akan kita gunakan? Cukup perintah echo saja. Dalam beberapa kasus, juga akan mempergunakan bantuan program printf. Apa saja konsekuensi dari menggambar sendiri progress bar secara manual ini? Berikut ini adalah beberapa di antaranya: Usaha yang harus dikeluarkan menjadi lebih besar karena progress bar harus digambar sendiri secara manual. Tampilan mungkin kurang menarik, namun untungnya, tetap sangat informatif. Aplikasi tidak bergantung kepada program lain. Eksekusi cukup cepat (untuk level shell script) Dalam beberapa kondisi, mungkin akan terjadi kedipan layar. Namun, ini sangat tergantung pada bagaimana kita menggambar progress bar. Contoh 1: Progress bar sederhana Di dalam contoh sederhana ini, kita akan menampilkan pergerakan setiap 10 persen, di mana setiap 10 persen akan diberikan delay masing-masing 1 detik. Apabila progress telah mencapai 100%, maka dengan sendirinya dialog akan keluar. Berikut ini adalah isi dari shell script text2.sh: #!/bin/sh # # # # # #
progress bar demo Noprianto, 21 April 2006 GPL simple progress bar demo simple 2
PERCENT=0 printf “\r$PERCENT percent complete”
56
11/2006 INFOLINUX
while [ 1 ] do sleep 1 let PERCENT=$PERCENT+10 printf “\r$PERCENT percent complete” test $PERCENT -eq 100 && break done echo
Ketika script ini dijalankan, program akan: Menampilkan tulisan 0 percent complete selama 1 detik. Kemudian, Menampilkan tulisan 10 percent complete selama 1 detik. Kemudian, Menampilkan tulisan 20 percent complete selama 1 detik. Dan seterusnya, sampai mencapai 100 persen, program akan keluar dengan sendirinya. Semua informasi tersebut ditampilkan dalam baris yang sama. Berikut ini adalah penjelasan source code: Kita mengulang tanpa batas (while [ 1 ]), dimana kita akan melakukan hal-hal berikut ini: tunda 1 detik tambahkan persentase dengan 10 Menampilkan informasi persentase Menguji apakah persentase telah mencapai angka 100. Apabila telah mencapai 100, maka perulangan akan dihentikan. Bagaimana kita dapat menulis dalam baris yang sama tanpa mengubah posisi kursor secara eksplisit, misalnya menggunakan program tput? Caranya adalah dengan menggunakan program printf (bagian dari paket coreutils). Kita memberikan escape character \r kepada program printf. Contoh 2: progress bar sederhana 2 Pada contoh yang kedua ini, kita akan mengulang dari 1 sampai 10000, kemudian menampilkan progress sesuai kondisi sesungguhnya, tanpa mempergunakan program sleep. Berikut ini adalah isi dari shell script text3.sh:
#!/bin/sh # # # # # #
progress bar demo Noprianto, 21 April 2006 GPL simple progress bar demo simple 3
PERCENT=0 printf “\r$PERCENT percent complete” for i in `seq 1 10000` do let PERCENT=$i/100 printf “\r$PERCENT percent complete” done echo
Ketika script ini dijalankan, maka akan tampil sebuah progress bar yang akan: Menampilkan tulisan N percent complete, di mana N adalah dari 1 sampai 100 Semua informasi ditampilkan dalam satu baris yang sama. Berikut ini adalah penjelasan source code: Kita akan mengulang dari 1 sampai 10000. Di dalam perulangan tersebut, kita melakukan: Perhitungan persentase, di mana angka persentase didapatkan dari counter aktif ($i) dibagi dengan 100. Menampilkan informasi persentase. Kita juga mempergunakan bantuan program printf untuk menulis dalam satu baris yang sama. Contoh 3: progress bar sederhana 3 Pada contoh yang kedua ini, kita akan mengulang dari 1 sampai 10000, kemudian menampilkan progress sesuai kondisi sesungguhnya, tanpa mempergunakan program sleep. Mirip dengan contoh sebelumnya, hanya tidak ada informasi persentase berupa angka yang ditampilkan. Yang ditampilkan adalah karakter: pertama digantikan \
www.infolinux.web.id
TUTORIAL SHELL SCRIPT digantikan | digantikan / digantikan lagi dengan -, dan seterusnya. Dengan demikian, informasi progress akan menampilkan satu karakter yang seolah-olah berputar-putar seperti balingbaling. Sangat umum ditemukan pada aplikasi dengan interface text. Berikut ini adalah isi dari shell script text3b.sh: #!/bin/sh # # # # # #
progress bar demo Noprianto, 21 April 2006 GPL simple progress bar demo simple 3b
PERCENT=0 CHAR=’-’ for i in `seq 1 10000` do let PERCENT=$i/100 case $CHAR in ‘-’ ) ;; ‘\’ ) ;; ‘|’ ) ;; ‘/’ ) ;; esac
CHAR=’\’ CHAR=’|’ CHAR=’/’ CHAR=’-’
Kita juga mempergunakan bantuan program printf untuk menulis dalam satu baris yang sama. Bagaimana menampilkan karakter ‘berputar’? Kita sepakati terlebih dahulu, kalau perputaran dilakukan dalam urutan -, \, |, / dan kembali lagi ke -. Aturlah karakter pertama (CHAR=’’) Setelah itu, periksalah karakter sebelumnya, dan aturlah karakter setelahnya, bersesuaian dengan kesepakatan kita sebelumnya. Lakukan ini secara berulang/di dalam perulangan. Tampilkan di tempat yang sama dengan bantuan program printf.
#!/bin/sh
printf “\rdone.” echo
Penjelasan source code: Kita akan mengulang dari 1 sampai 10000. Di dalam perulangan tersebut, kita melakukan: Perhitungan persentase, dimana angka persentase didapatkan dari counter aktif ($i) dibagi dengan 100 (tidak digunakan, namun dipersiapkan) menampilkan karakter ‘berputar’
www.infolinux.web.id
Sampai di sini dulu rangkaian pembahasan progress bar kita. Penggunaan progress bar akan membantu aplikasi kita untuk tampil lebih ramah dan informatif. Kita telah membahas berbagai tool, mulai dari yang sederhana sampai yang berbasis GUI. Dalam aplikasi yang mungkin dijalankan dalam berbagai jenis user interface, adalah sangat penting untuk menguji lingkungan kerja sebelum progress bar ditampilkan. Sebagai contoh: Apabila Anda menganut prinsip “coba dulu yang terbaik, baru menurunkan standar apabila tidak memungkinkan”, maka Anda mungkin perlu memeriksa ketersediaan X ( variabel $DISPLAY ), ketersediaan terminal dan berbagai variabel lainnya. Sebagai contoh: #!/bin/sh
Contoh 4: progress bar untuk proses yang tidak pasti Apabila proses keseluruhan bisa dipecah ke dalam berbagai proses kecil, namun waktu selesainya tidak dapat diprediksi, maka untuk informasi kepada user bahwa proses masih berjalan, kita bisa membuat progress bar sederhana. Hanya, tidak ada informasi persentase yang ditampilkan. Cara ini mirip dengan cara karakter ‘berputar’ sebelumnya. Namun, jauh lebih sederhana, karena kita hanya akan menampilkan terus karakter ‘#’. Mirip dengan transfer file melalui protokol FTP menggunakan program ftp client sederhana. Berikut ini adalah isi dari shell script textu.sh:
printf “\r$CHAR” done
Penutup
# # # # # #
progress bar demo Noprianto, 21 April 2006 GPL simple progress bar demo simple u
TEMP=0 while [ 1 ] do echo -n ‘#’ let TEMP=$TEMP+1 test $TEMP -eq 1000 && break done
if [ ! -z $DISPLAY ] then IFACE=”GUI” else IFACE=”TEXT” fi echo “User Interface yang digunakan adalah $IFACE”
Apabila X tersedia, maka zenity akan dipergunakan. Apabila tidak, maka dialog yang akan dipergunakan. Tentunya, sebelum benar-benar mengeksekusi zenity atau dialog, perlu dicek juga keberadaan program-program tersebut. Yang terakhir, walaupun progress bar dapat menjadikan program lebih informatif, kita harus sadari bahwa, akan sangat mungkin menjadikan program berjalan lebih lambat. Untuk dijalankan oleh end user, tampilan yang ramah mungkin lebih penting daripada kecepatan eksekusi. Tapi, toleransinya harus dipikirkan baik-baik. Jangan proses yang sedianya dapat berjalan 5 detik harus menjadi 5 menit hanya karena penggunaan progress bar. Lihatlah contoh ekstraksi arsip tar/tar. gz yang telah kita bahas. Informasi tidak perlu terlalu detil (karena malah akan menakutkan), yang penting, tetap informatif dan tidak mengorbankan hal penting lainnya. Selamat mencoba! Noprianto [[email protected]]
INFOLINUX 11/2006
57
TUTORIAL PARTISI DI LINUX
Bekerja dengan Partisi di Linux
D
i dalam tulisan ini, kita akan membahas bagaimana bekerja dengan partisi di Linux menggunakan berbagai tool yang telah tersedia, lengkap dengan berbagai contoh. Sebagai tambahan, kita juga akan membahas sekilas tentang membangun solusi custom memanfaatkan tool-tool tersebut.
Bagi pengguna yang berkutat dengan sistem seperti membangun distribusi Linux sendiri, atau membangun installer distribusi Linux, bekerja dengan partisi adalah tugas sehari-hari yang harus dihadapi. Sebagai contoh adalah menampilkan semua partisi, membuat partisi, menghapus partisi, me-resize partisi, dan lain sebagainya. Untungnya, Linux datang dengan sejumlah fasilitas, aplikasi dan pustaka yang dapat kita gunakan. Kita akan membahasnya di tulisan ini. Sebagai catatan, semua contoh di dalam tulisan ini dibangun di atas Debian GNU/Linux 3.1, namun seharusnya dapat diterapkan pada berbagai sistem lain tanpa masalah. Instalasi berbagai tool yang digunakan berada di luar cakupan tulisan ini.
Berbagai tool partisi Untuk bekerja dengan partisi, cara yang paling mudah adalah dengan menggunakan berbagai tool partisi, seperti, fdisk, cfdisk, sfdisk, dan GNU Parted. Dengan memanfaatkan tool tersebut, kita dapat melakukan semua tindakan umum terhadap partisi seperti pembuatan dan penghapusan. GNU Parted bahkan dapat digunakan untuk me-resize partisi. Bagi Anda yang menggunakan distribusi Linux SUSE (openSUSE), YaST telah menyediakan tool partitioner yang jauh lebih mudah untuk digunakan, dengan berbagai fungsionalitas ekstra. Tool yang dibahas di dalam tulisan ini adalah fdisk dan GNU Parted.
58
11/2006 INFOLINUX
Menggunakan fdisk Program yang satu ini merupakan program tradisional yang umumnya digunakan oleh pengguna yang telah lama dan terbiasa bekerja dengan sistem. Fdisk bisa melakukan hampir semua tindakan yang ingin diterapkan pada partisi harddisk. User pemula diharapkan tidak menggunakan tool ini karena salah memberikan perintah dapat berpotensi kehilangan data. Untuk bekerja dengan harddisk tertentu, berikanlah device harddisk sebagai parameter untuk program fdisk. Sebagai contoh: # fdisk /dev/hda The number of cylinders for this disk is set to 1044. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK)
Apabila kita memberikan perintah m, maka daftar perintah fdisk akan ditampilkan: Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition’s system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)
Command (m for help):
fdisk merupakan program yang dapat dijalankan dengan memberikan perintah tertentu, yang umumnya berupa 1 karakter/ huruf. Sebagai contoh, pada prompt fdisk, kita bisa melihat bahwa perintah m bisa digunakan untuk menampilkan bantuan.
Secara default, daftar perintah yang ditampilkan tersebut merupakan daftar perintah standar. Bagi Anda yang membutuhkan fungsionalitas lebih, berikanlah perintah x. Tulisan pada prompt menu akan berubah dan berbagai fungsionalitas ekstra akan diberikan.
www.infolinux.web.id
TUTORIAL PARTISI DI LINUX Command (m for help): x Expert command (m for help): m Command action b move beginning of data in a partition c change number of cylinders d print the raw data in the partition table e list extended partitions f fix partition order g create an IRIX (SGI) partition table h change number of heads m print this menu p print the partition table q quit without saving changes r return to main menu s change number of sectors/ track v verify the partition table w write table to disk and exit
Untuk kembali ke menu utama setelah berada pada menu expert, berikanlah perintah r.
Menampilkan tabel partisi Untuk menampilkan tabel partisi, berikanlah perintah p pada menu utama: Command (m for help): p
Selanjutnya, submenu pemilihan partisi primary atau extended akan ditampilkan. Untuk disk label msdos, sebuah harddisk hanya bisa berisikan empat buah partisi primary. Dengan demikian, apabila dibutuhkan lebih dari empat partisi dalam satu harddisk, buatlah sebagai contoh tiga primary, satu extended dan sejumlah logical di dalam extended. Pertama-tama, kita akan buat partisi primary (nomor 3) dengan ukuran 1024 MB. Sebagai catatan, untuk memberikan nilai yang telah disarankan, kita cukup menekan tombol ENTER. p Partition number (1-4): 3 First cylinder (682-1044, default 682): Using default value 682 Last cylinder or +size or +sizeM or +sizeK (682-1044, default 1044): +1024M
Setelah itu, kita akan membuat partisi extended (nomor 4): Command (m for help): n Command action e extended p primary partition (1-4) e Selected partition 4 First cylinder (807-1044, default 807): Using default value 807
Last cylinder or +size or +sizeM or +sizeK (807-1044, default 1044): Using default value 1044
Dengan demikian, kita telah memiliki tambahan 1 partisi primary (1024 M; partisi ketiga) dan satu partisi extended. Command (m for help): p Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot End Blocks /dev/sda1 608 4883728+ /dev/sda2 681 586372+ Solaris /dev/sda3 806 1004062+ /dev/sda4 1044 1911735
Start Id System 1 83 Linux 609 82 Linux swap /
83
682 Linux 807 5 Extended
Contoh berikutnya, kita tambahkan lagi satu partisi logical dengan ukuran 500 MB: Command (m for help): n First cylinder (807-1044, default 807):
Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot End Blocks /dev/sda1 608 4883728+ /dev/sda2 681 586372+ Solaris
Start Id System 1 83 Linux 609 82 Linux swap /
Membuat partisi Untuk membuat partisi, berikanlah perintah n pada menu utama: Command (m for help): n Command action e extended p primary partition (1-4)
www.infolinux.web.id
Website GNU Parted.
INFOLINUX 11/2006
59
TUTORIAL PARTISI DI LINUX Using default value 807 Last cylinder or +size or +sizeM or +sizeK (807-1044, default 1044): +500M
Dengan demikian, berikut ini adalah tabel partisi terbaru kita: Command (m for help): p Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot End Blocks /dev/sda1 608 4883728+ /dev/sda2 681 586372+ Solaris /dev/sda3 806 1004062+ /dev/sda4 1044 1911735 /dev/sda5 868 497983+
Meresize partisi ala fdisk
Untuk menghapus partisi, berikanlah perintah d:
Fdisk dapat pula digunakan untuk meresize partisi tanpa menyebabkan kehilangan data, namun lakukanlah dengan sangat berhatihati. Sayangnya, cara seperti ini barangkali tidak berlaku pada semua filesystem. Cara ini juga hanya berlaku apabila tersedia tool untuk me-resize filesistem. Bacalah subbagian pembahasan ini sampai selesai sebelum mencoba me-resize dengan fdisk. Idenya adalah dengan mengubah ukuran last cylinder, namun tetap mempertahankan first cylinder. Dengan demikian, agar resize suatu partisi ala fdisk ini tidak merusak partisi lain setelahnya, haruslah tersedia ruang kosong setelah last cylinder. Sebagai contoh adalah partisi kelima kita, yang memiliki System ID Linux. Sebelum resize dilakukan, partisi tersebut telah memiliki filesystem ReiserFS, yang dibuat dengan mkfs.reiserfs. Sebelum di-resize, mount-lah partisi tersebut, copy-kanlah beberapa file, dan unmount-lah partisi tersebut.
Command (m for help): d Partition number (1-5): 3
Sebagai catatan, berhati-hatilah dalam menghapus partisi extended, karena semua logical di dalamnya juga akan terhapus:
Mengubah system ID partisi Secara default, system ID partisi adalah Linux. Ini bisa dilihat dari dua kolom terakhir daftar tabel partisi: Command (m for help): p
Start Id System 1 83 Linux 609 82 Linux swap /
Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
682 Linux 807 5 Extended 807 83 Linux
Device Boot End Blocks /dev/sda1 608 4883728+ /dev/sda2 681 586372+ Solaris /dev/sda3 806 1004062+ /dev/sda4 1044 1911735 /dev/sda5 868 497983+
83
Keluar tanpa menyimpan perubahan Untuk keluar tanpa menyimpan, berikanlah perintah q
Menulis/menyimpan perubahan dan keluar Setelah selesai melakukan perubahan dan ingin menyimpan, jangan lupa untuk memberikan perintah w: Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.
Setelah kembali ke prompt, reboot-lah sistem Anda.
60
Menghapus partisi
11/2006 INFOLINUX
Start Id System 1 83 Linux 609 82 Linux swap / 682 Linux 807 5 Extended 807 83 Linux 83
Untuk mengubah system ID partisi, sebagai contoh, partisi ke tiga akan diubah menjadi Windows 95 FAT 32 (LBA), berikanlah perintah t (untuk mengubah system ID). Setelah itu, kita akan diminta untuk memasukkan nomor partisi. Masukkanlah 3 untuk partisi ke 3. Kemudian, kita akan diminta untuk memasukkan kode heksa system ID. Masukkanlah c untuk Windows 95 FAT32 (LBA). Untuk kode selengkapnya, berikanlah perintah L pada saat diminta memasukkan kode heksa sebelumnya. Command (m for help): t Partition number (1-5): 3 Hex code (type L to list codes): c Changed system type of partition 3 to c (W95 FAT32 (LBA))
# mount /dev/sda5 /tmp/sda5/ # cp -v /bin/l* /tmp/sda5/ `/bin/ln’ -> `/tmp/sda5/ln’ `/bin/loadkeys’ -> `/tmp/sda5/ loadkeys’ `/bin/login’ -> `/tmp/sda5/login’ `/bin/ls’ -> `/tmp/sda5/ls’ `/bin/lsmod’ -> `/tmp/sda5/lsmod’ `/bin/lsmod.modutils’ -> `/tmp/ sda5/lsmod.modutils’ `/bin/lspci’ -> `/tmp/sda5/lspci’ # umount /tmp/sda5/
Kemudian, jalankan kembali fdisk: # fdisk /dev/sda
Tampilkanlah tabel partisi: Command (m for help): p Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot End Blocks /dev/sda1
Start Id System 1
www.infolinux.web.id
TUTORIAL PARTISI DI LINUX 608 4883728+ /dev/sda2 681 586372+ Solaris /dev/sda3 806 1004062+ (LBA) /dev/sda4 1044 1911735 /dev/sda5 868 497983+
83 82
c
5 83
Linux 609 Linux swap /
1044): 1000
682 W95 FAT32
Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
807 Extended 807 Linux
Pertama-tama, catatlah first cylinder (start; kolom ketiga) dan last cylinder (End; kolom keempat). Dalam contoh ini, first cylinder adalah 807 dan last cylinder adalah 868. Kemudian, hapuslah partisi kelima tersebut: Command (m for help): d Partition number (1-5): 5 Command (m for help): p Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot End Blocks /dev/sda1 608 4883728+ /dev/sda2 681 586372+ Solaris /dev/sda3 806 1004062+ (LBA) /dev/sda4 1044 1911735
Start Id System 1 83 Linux 609 82 Linux swap / 682 W95 FAT32
c
5
807 Extended
Langkah kedua adalah membuat kembali partisi tersebut, usahakan dengan start cylinder yang sama, dan dengan last cylinder yang diinginkan. Sebagai contoh, start cylinder tetap 807 dan last cylinder menjadi 1000. Command (m for help): n First cylinder (807-1044, default 807): Using default value 807 Last cylinder or +size or +sizeM or +sizeK (807-1044, default
www.infolinux.web.id
Command (m for help): p
Device Boot Start End Blocks Id System /dev/sda1 1 608 4883728+ 83 Linux /dev/sda2 609 681 586372+ 82 Linux swap / Solaris /dev/sda3 682 806 1004062+ c W95 FAT32 (LBA) /dev/sda4 807 1044 1911735 5 Extended /dev/sda5 807 1000 1558273+ 83 Linux
Simpanlah perubahan dan keluar dari fdisk, dan reboot-lah sistem Anda. Setelah reboot, periksalah kembali filesistem partisi yang “di-resize” tersebut (dalam hal ini dengan program fsck.reiserfs), pastikan semuanya baik-baik saja. # fsck.reiserfs /dev/sda5 ... ... ########### reiserfsck --check started at Mon Jul 24 11:57:58 2006 ########### Replaying journal.. Reiserfs journal ‘/dev/sda5’ in blocks [18..8211]: 0 transactions replayed Checking internal tree..finished Comparing bitmaps..finished Checking Semantic tree: finished No corruptions found There are on the filesystem: Leaves 1 Internal nodes 0 Directories 1 Other files 7 Data block pointers 84 (0
of them are zero) Safe links 0 ########### reiserfsck finished at Mon Jul 24 11:58:00 2006 ###########
Catatan untuk ReiserFS, ketika resize dilakukan mengecil, fsck.reiserfs mungkin akan gagal dilakukan. Oleh karena itu, berikanlah opsi tambahan –rebuild-sb untuk me-rebuild superblock. Pada saat opsi ini dilakukan, ada pertanyaan apakah resizer digunakan. Jawablah y dan ikutilah langkah berikutnya. Akan terdapat kemungkinan masih ada yang corrupt setelah langkah ini dilakukan. Ada kalanya, opsi –fix-fixable juga bisa diberikan untuk memperbaiki. Setelah itu, cobalah mount kembali partisi Anda dan pastikan tidak ada kesalahan yang ditampilkan. Apabila diperlukan, periksalah kembali file-file Anda. # mount /dev/sda5 /tmp/sda5 # ls -al /tmp/sda5/ total 336 drwxr-xr-x 3 root root 224 2006-07-24 11:45 . drwxrwxrwt 10 root root 376 2006-07-24 11:56 .. -rwxr-xr-x 1 root root 23096 2006-07-24 11:45 ln -rwxr-xr-x 1 root root 36856 2006-07-24 11:45 loadkeys -rwsr-xr-x 1 root root 35512 2006-07-24 11:45 login -rwxr-xr-x 1 root root 75948 2006-07-24 11:45 ls -rwxr-xr-x 1 root root 5600 2006-07-24 11:45 lsmod -rwxr-xr-x 1 root root 129868 2006-07-24 11:45 lsmod.modutils -rwxr-xr-x 1 root root 24752 2006-07-24 11:45 lspci
Langkah ketiga adalah me-resize filesistem. Untuk ReiserFS, tersedia program resize_reiserfs untuk melakukan resize. Sebagai contoh untuk /dev/sda5 kita: # resize_reiserfs -s 1500M /dev/sda5 resize_reiserfs 3.6.19 (2003 www. namesys.com)
resize_reiserfs: On-line resizing
INFOLINUX 11/2006
61
TUTORIAL PARTISI DI LINUX finished successfully.
Sebagai catatan umum, me-resize partisi seperti ini bisa tidak berlaku pada file sistem tertentu. Cara ini juga merupakan cara yang sangat berbahaya. Lakukan cara ini apabila Anda sungguh-sungguh terpaksa untuk melakukannya. Selalu backuplah data penting Anda terlebih dahulu sebelum mencoba. InfoLINUX tidak memberikan garansi apapun.
Menggunakan GNU Parted Sama seperti menjalankan fdisk, berikanlah nama device harddisk ketika menjalankan parted. Sebagai contoh: # parted /dev/sda GNU Parted 1.6.21 with HFS shrink patch 16 Copyright (C) 1998 - 2004 Free Software Foundation, Inc. This program is free software, covered by the GNU General Public License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Using /dev/sda (parted)
Untuk melihat bantuan, berikanlah perintah help: (parted) help check MINOR do a simple check on the filesystem cp [FROM-DEVICE] FROM-MINOR TO-MINOR copy filesystem to another partition help [COMMAND] prints general help, or help on COMMAND mklabel LABEL-TYPE create a new disklabel (partition table) mkfs MINOR FS-TYPE make a filesystem FS-TYPE on partititon MINOR mkpart PART-TYPE [FS-TYPE] START END make a partition mkpartfs PART-TYPE FS-TYPE START
62
11/2006 INFOLINUX
END make a partition with a filesystem move MINOR START END move partition MINOR name MINOR NAME name partition MINOR NAME print [MINOR] display the partition table, or a partition quit exit program rescue START END rescue a lost partition near START and END resize MINOR START END resize filesystem on partition MINOR rm MINOR delete partition MINOR select DEVICE choose the device to edit set MINOR FLAG STATE change a flag on partition MINOR (parted)
Berbeda dengan fdisk, perintah pada parted umumnya memiliki argumen tertentu. Selain itu, perubahan juga otomatis tersimpan dan umumnya, kita tidak perlu mereboot sistem setelah keluar dari parted.
Melihat tabel partisi Untuk melihat tabel partisi, berikanlah perintah print. Sebagai contoh: (parted) print Disk geometry for /dev/sda: 0.0008192.000 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.031 4769.296 primary reiserfs 2 4769.297 5341.926 primary linux-swap
Membuat partisi baru Untuk membuat partisi, berikanlah perintah mkpart. Sebagai contoh: (parted) mkpart primary 5342 6342 (parted) print Disk geometry for /dev/sda: 0.0008192.000 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.031 4769.296 primary reiserfs 2 4769.297 5341.926
primary linux-swap 3 5341.926 6338.144 primary
Menghapus partisi Untuk menghapus partisi, berikanlah perintah rm. Sebagai contoh: (parted) rm 3 (parted) print Disk geometry for /dev/sda: 0.0008192.000 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.031 4769.296 primary reiserfs 2 4769.297 5341.926 primary linux-swap (parted)
Keluar dari parted Untuk keluar dari parted, berikanlah perintah quit.
Me-resize partisi Untuk meresize partisi, berikanlah perintah resize. Sebagai contoh, kita akan membuat terlebih dahulu partisi 3: (parted) mkpart primary 5342 6342 (parted) print Disk geometry for /dev/sda: 0.0008192.000 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.031 4769.296 primary reiserfs 2 4769.297 5341.926 primary linux-swap 3 5341.926 6338.144 primary
Kemudian, kita keluar dari parted, membuat filesistem (fat32) dan mengisikan beberapa file ke dalamnya. Setelah itu, kita masuk kembali: (parted) print Disk geometry for /dev/sda: 0.0008192.000 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.031 4769.296 primary reiserfs 2 4769.297 5341.926
www.infolinux.web.id
TUTORIAL PARTISI DI LINUX primary linux-swap 3 5341.926 6338.144 primary fat32 (parted)
Mendapatkan tabel partisi Berikut ini adalah isi script getpart1.sh yang berguna untuk mendapatkan partition table: #!/bin/sh
Berikan perintah resize berikut untuk me-resize Start 4341.926 ke 5350 dan End 6338.144 ke 6500. Parted memiliki kemampuan untuk me-resize mulai dari awal partisi. Namun, kemampuan resize pada berbagai filesistem bisa berbeda. (parted) resize 3 5350 6500 (parted) print Disk geometry for /dev/sda: 0.0008192.000 megabytes Disk label type: msdos Minor Start End Type Filesystem Flags 1 0.031 4769.296 primary reiserfs 2 4769.297 5341.926 primary linux-swap 3 5349.771 6502.873 primary fat32 (parted)
Membangun solusi sendiri Apabila kita membangun installer suatu distro yang menyediakan partition editor misalnya, menggunakan fdisk atau parted sangatlah tidak disarankan karena di antaranya masalah user interface yang mungkin susah dipahami oleh user pemula atau user interface yang tidak konsisten dengan tahapan lain dalam installer kita. Untuk yang terakhir ini, akan sangat jelek apabila tahapan lain dalam installer memiliki tampilan yang konsisten, namun ketika membuat partisi, fdisk atau parted yang dijalankan. Setidaknya, ada dua cara yang bisa dilakukan: Bagi Anda yang membangun dengan bahasa seperti C/C++, Anda bisa menggunakan libparted. Cara ini tidak dibahas di dalam tulisan ini. Bagi Anda yang ingin cepat dengan shell script (+dialog/+whiptail/+zenity) gunakanlah bantuan program parted. Contoh sederhana akan dibahas. Developer yang menggunakan shell script bisa memanfaatkan parted karena kemampuannya untuk menerima perintah parted sebagai argumen ketika program dijalankan.
# (c) Noprianto, 2006 # GPL read -p “Masukkan nama device (contoh: /dev/hda): “ DEV echo “Partition Table ($DEV)” echo “===========================” /sbin/parted $DEV print | grep -e ^[0-9]
Contoh output: # ./getpart1.sh
Masukkan nama device (contoh: /dev/ hda): /dev/sda Partition Table (/dev/sda) ================================== 1 0.031 4769.296 primary reiserfs 2 4769.297 5341.926 primary linux-swap 3 5349.771 6502.873 primary fat32
Sebagai catatan, untuk mendapatkan tabel partisi, kita juga bisa membaca file / proc/partitions: # cat /proc/partitions major minor #blocks name 8 8 8 8
0 1 2 3
8388608 4883728 586372 1180777
sda sda1 sda2 sda3
# cat /proc/partitions | grep -e [0-9]$ 8 1 4883728 sda1 8 2 586372 sda2 8 3 1180777 sda3
Dengan cara serupa, kita bisa membangun aplikasi partition editor yang cukup baik, hanya dengan memanfaatkan shell script, parted dan program untuk memperindah tampilan seperti dialog, whiptail atau zenity. Sampai di sini dulu pembahasan kita. Selamat mencoba! Noprianto [[email protected]]
www.infolinux.web.id
INFOLINUX 11/2006
63
TUTORIAL DYNDNS
Layanan Web Server dengan DNS dari DynDNS
D
ari sekian banyak pengguna Internet rumahan, kebanyakan IP yang didapat dari ISP merupakan IP dynamic. Untuk membuat layanan web server berbasiskan IP dynamic agar dapat diakses dari luar, Anda dapat memanfaatkan layanan DNS berbasis IP dynamic yang diberikan oleh beberapa layanan free DNS.
Jika Anda pengguna Internet rumahan yang menggunakan koneksi Internet melalui dial-up, cable, maupun ADSL, kebanyakan IP yang diberikan dari ISP adalah IP dynamic. Hal ini tentu berbeda dengan para pengguna Internet corporate, yang mendapatkan IP static pada koneksi Internetnya. Untuk mengetahui apakah koneksi Internet yang kita gunakan menggunakan IP static atau IP dynamic, cukup restart modem, lalu coba koneksikan kembali ke Internet. Jika IP WAN yang didapat saat ini berbeda dengan IP WAN sebelumnya, berarti IP yang Anda peroleh adalah IP dynamic. Jika IP WAN yang didapat saat ini tidak berubah dengan IP WAN sebelumnya, berarti IP yang Anda dapatkan adalah IP static. Salah satu kekurangan IP dynamic adalah, kita agak kesulitan untuk memberikan layanan server yang kebanyakan menggunakan alamat domain seperti untuk mail server, web server, dan sebagainya, karena IP yang digunakan selalu berubah-ubah. Hal ini tentu tidak memungkinkan untuk pembuatan DNS server yang biasanya membutuhkan IP static. Untuk menangani hal ini, kita dapat menggunakan layanan free DNS yang diberikan oleh sejumlah situs seperti DynDNS, NoIP.com, zoneedit. com, dan sebagainya, sehingga IP dynamic yang kita miliki tetap dapat menggunakan nama domain. Pada “Tutorial” kali ini, akan dijelaskan cara untuk mengonfigurasi web server
64
11/2006 INFOLINUX
dengan menggunakan layanan free DNS yang diberikan oleh DynDNS sehingga web server yang Anda miliki tetap dapat diakses dari luar. Sebagai bahan percobaan, komputer yang dikonfigurasikan pada tutorial ini memiliki interface langsung ke jaringan luar. Bagi komputer yang berada di belakang NAT, harus dilakukan port forwarding terlebih dahulu pada sisi gateway maupun modem, ke IP komputer yang akan bertindak sebagai web server. Pada saat pengujian, tutorial ini menggunakan distro Fedora Core 5 untuk bahan uji cobanya. Namun bagi pengguna distro lain, langkah ini dapat pula diterapkan dengan melakukan sedikit penyesuaian.
Pembuatan DNS di DynDNS Sebelum dapat memiliki DNS dengan menggunakan IP dynamic yang kita miliki, langkah pertama yang harus kita lakukan adalah membuat sebuah account terlebih dahulu di DynDNS. Adapun cara registrasi dan konfigurasi DNS dengan menggunakan layanan dari DynDNS tersebut adalah sebagai berikut: 1. Untuk dapat membuat DNS dengan menggunakan IP dynamic, Anda harus membuat sebuah account terlebih dahulu di situs DynDNS. Masuk ke situs www.dyndns.com, kemudian klik link Create Account untuk membuat sebuah account baru.
Proses pembuatan domain pada situs DynDNS.
www.infolinux.web.id
TUTORIAL DYNDNS
Contoh IP Dynamic pada layanan Dial-up yang selalu berubah setiap melakukan koneksi baru.
2. Setelah tampil halaman create DynDNS Account, isikan sejumlah informasi yang dibutuhkan pada halaman tersebut, kemudian klik tombol Create Account. Jika proses pembuatan account telah berhasil dilakukan, berarti Anda sudah memiliki sebuah account di DynDNS. 3. Langkah selanjutnya yang akan kita lakukan adalah membuat sebuah alamat DNS di DynDNS. Untuk itu, silakan login terlebih dahulu pada halaman utama www.dyndns.com, untuk dapat masuk ke halaman Account Anda. 4. Setelah berada dalam halaman Account Anda, terdapat lima menu pada bagian atas halaman Account, yaitu menu About, Services, Account, Support, dan News. Untuk membuat sebuah alamat dynamic DNS, klik menu Services. Pada bagian DNS Services, klik Dynamic DNS untuk memulai pembuatan sebuah DNS yang menggunakan IP dynamic. 5. Pada halaman Dynamic DNS, klik Add Dynamic DNS. Setelah itu, akan tampil halaman New Dynamic Host yang berfungsi untuk membuat sebuah alamat domain. Sebagai latihan, isikan saja nama domain yang Anda inginkan pada kotak Hostname, dan pilih nama domain utama yang telah disediakan oleh DynDNS. Untuk isian yang lainnya, biarkan saja tetap dalam kondisi default. Setelah mengisikan kotak hostname, klik Add Host. Sebagai contoh, saya membuat nama domain supriyanto pada domain
www.infolinux.web.id
dyndns.org. Sehingga alamat lengkap domain adalah supriyanto.dyndns.org. 6. Sampai saat ini, tahapan registrasi dan pembuatan domain sudah selesai. Langkah berikutnya yang akan kita lakukan adalah menginstal Apache sebagai web server.
Instalasi Apache dan test DynDNS Jika pada saat instalasi Fedora Core 5, Anda telah memilih paket web server untuk diinstall, mungkin tahapan ini dapat dilewati. Untuk memastikannya, ketikkan saja perintah dibawah ini untuk memastikan kalau paket httpd sudah terinstalasi atau belum pada sistem Anda. # rpm -qa | grep httpd httpd-2.2.0-5.1.2
Namun bila paket httpd belum terinstal, Anda dapat mencarinya pada DVD InfoLINUX edisi 05/2006, atau melalui repository yum Fedora. Untuk menginstalasi paket httpd melalui repositori yum, jalankan perintah berikut: # yum install httpd
Selanjutnya, jalankan servis Apache. # /etc/init.d/httpd start
Uji paket httpd dari browser dengan mengetikkan alamat localhost. Jika tampil halaman selamat datang dari Apache Web Server, berarti web server Apache sudah terinstalasi dengan baik pada sistem Anda.
Langkah berikutnya yang akan kita lakukan adalah menghubungkan web server internal yang terdapat pada komputer kita, agar dapat diakses langsung dari luar dengan menggunakan alamat domain yang sudah kita buat di DynDNS. Untuk melakukan hal ini, Anda dapat melakukan hal berikut : 1. Masuk ke halaman http://www.dyndns. com, kemudian login ke Account Login yang Anda miliki. 2. Dari halaman Account Login, pilih menu Service, lalu klik Dynamic DNS. 3. Pada halaman Dynamic DNS, klik Manage Existing Hosts. Setelah tampil nama hostname yang telah Anda buat, klik Details. Untuk mengubah agar IP yang tertera pada halaman modify dynamic DNS ini sesuai dengan IP WAN yang kita dapat saat ini, klik button Modify Host. 4. Sekarang web server Anda sudah dapat diakses dengan menggunakan nama domain yang sebelumnya telah dibuat. Sebagai contoh, pada saat registrasi tadi, penulis sudah membuat domain bernama supriyanto.dyndns.org di www. dyndns.com. Untuk memastikan apakah web browser ini sudah dapat langsung diakses dari Internet, cukup ketikkan alamat url http://supriyanto.dyndns.org pada kotak url web browser. Jika tampil halaman selamat datang dari Apache Web Server, berarti web server Internal kita sudah dapat diakses oleh siapa saja dari Internet.
Penggunaan ddclient Dari cara sebelumnya, tentu sangat membosankan jika setiap kali ip dynamic yang kita peroleh selalu berubah, kita harus menyinkronisasikan dahulu melalui halaman Account Login. Untuk menanganinya, kita dapat menggunakan aplikasi update clients, yang secara otomatis dapat memperbarui alamat ip dynamic yang saat ini sedang kita peroleh. Beberapa aplikasi update client yang dapat menyinkronisasikan IP dynamic yang kita miliki saat ini ke server dyndns adalah ddclient dan ez-ipupdate. Berdasarkan alasan kemudahan penggunaan dan kelengkapan fitur, kita akan menggunakan ddclient sebagai aplikasi update client-nya. Berikut langkah-langkah penggunaannya. 1. Aplikasi ddclient dapat di download dari url http://sourceforge.net/projects/ddclient,
INFOLINUX 11/2006
65
TUTORIAL DYNDNS atau dapat Anda temukan pada DVD majalah InfoLINUX kali ini. 2. Copykan paket ddclient.tar.gz ke suatu direktori pada sistem Anda, kemudian extract file tarball tersebut. 3. Aplikasi ddclient membutuhkan paket perl-IO-Socket-SSL, yaitu perl library yang digunakan untuk mendukung ssl. Untuk itu, installasikan terlebih dahulu paket perl-IO-Socket-SSL, agar ddclient dapat mendukung penggunaan ssl. 4. Login sebagai root, kemudian lakukan sejumlah langkah di bawah ini: Pindah ke direktori hasil extract ddclient, kemudian copy-kan file ddclient ke direktori /usr/sbin/. # cp ddclient /usr/sbin/
Buat folder ddclient pada direktori /etc. # mkdir /etc/ddclient
Copykan file konfigurasi sampleetc_ddclient.conf ke direktori /etc/ ddclient. # cp sample-etc_ddclient.conf /etc/ddclient/ddclient.conf
Berikutnya Anda perlu mengubah beberapa parameter konfigurasi yang terdapat pada file ddclient. conf. Beberapa parameter yang mungkin perlu Anda ubah di antaranya adalah sebagai berikut:
Tampilan halaman pembuka Apache pada web server internal, yang sudah dapat diakses dari Internet.
daemon=30 # check ip setiap interval 30 detik ssl=yes use=web, web=checkip.dyndns. org/, web-skip=’IP Address’ protocol=dyndns2 server=members.dyndns.org login=’username-dyndns-anda’ password=’password-dyndnsanda’ supriyanto.dyndns.org # rubah baris diatas dengan
nama domain DynDNS Anda.
Agar service ddclient dapat berjalan dalam modus daemon, copykan file sample-etc_rc.d_init.d_ddclient ke /etc/rc.d/init.d. # cp sample-etc_rc.d_init. d_ddclient /etc/rc.d/init. d/ddclient
Jalankan chkconfig agar script daemon ddclient dapat berjalan setiap kali komputer booting. # /sbin/chkconfig --add ddclient
5. Setelah aplikasi ddclient sudah terinstalasi dengan baik, sekarang setiap koneksi Internet Anda berubah IP dynamic-nya, maka secara otomatis ddclient dapat meng-update-nya ke situs dyndns.com. Untuk mengujinya, ketikkan alamat domain Anda di DynDNS pada url web browser. Jika web browser dapat menampilkan halaman web server internal, berarti aplikasi update client ini sudah dapat bekerja dengan baik. Demikian tutorial singkat mengenai penggunaan DynDNS untuk menampilkan halaman website yang berada pada web server internal. Telusuri lebih lanjut penggunaan DNS ini untuk layanan server lainnya. Akhir kata, selamat mencoba! Kini web site pada web server internal, sudah dapat diakses dari mana saja selama koneksi Internet berjalan.
66
11/2006 INFOLINUX
Supriyanto [[email protected]]
www.infolinux.web.id
TUTORIAL KNOWLEDGETREE
KnowledgeTree–Knowledge Management & Digital Library
S
alah satu software knowledge management dan digital library yang relatif mudah dan baik untuk digunakan adalah KnowledgeTree. Karena proses penggunaan knowledgeTree tidak terlalu sulit, praktis kita bisa mulai dapat mengoperasikan perpustakaan digital yang relatif baik di server kita sendiri.
Persiapan Instalasi KnowledgeTree Software KnowledgeTree dapat dilihat di http://www.ktdms.com/. Untuk men-download software tersebut dapat langsung mengakses ke URL http://www.ktdms.com/products/knowledgetree/download/thankyou. Sebelum menjalankan aplikasi KnowledgeTree, ubah konfigurasi PHP agar cukup besar untuk menampung posting dan upload file. Edit file konfigurasi /etc/php.ini dengan mengubah bagian berikut ini: post_max_size = 32M upload_max_filesize = 32M
Untuk proses searching di KnowledgeTree, dibutuhkan beberapa tool untuk mengonversikan file doc, exel, power point menjadi text agar memudahkan proses Indexing yang kemudian akan digunakan untuk proses search. Untuk mengonversi-
Website Knowledgetree.
www.infolinux.web.id
kan doc ke text digunakan tool catdoc yang dapat di ambil dari situs http://www.45.free. net/~vitus/software/catdoc/ atau tepatnya di http://ftp.45.free.net/pub/catdoc/catdoc0.94.2.tar.gz. Yang perlu kita lakukan untuk meng-compile dan menginstal tool catdoc tersebut adalah sebagai berikut: # mv catdoc-0.94.2.tar.gz /usr/ local/src/ # cd /usr/local/src # tar zxvf catdoc-0.94.2.tar.gz # cd catdoc-0.94.2 # ./configure –prefix=/usr # make # make install
Selain doctotest juga dibutuhkan tool pstotext yang dapat di ambil dari situs http://www.cs.wisc.edu/~ghost/doc/pstotext. htm atau tepatnya di ftp://mirror.cs.wisc.edu/
pub/mirrors/ghost/contrib/pstotext-1.9.tar. gz. Yang perlu dilakukan untuk menginstal tool pstotext adalah: # mv pstotext-1.9.tar.gz /usr/ local/src/ # cd /usr/local/src/ # tar zxvf pstotext-1.9.tar.gz # cd pstotext-1.9 # make # cp pstotext /usr/bin/
Copy-kan semua PHP code knowledgeTree ke folder HTML. Perintah yang dilakukan dapat seperti berikut: # cp knowledgeTree-3.1.tgz /var/ www/html # cd /var/www/html # tar zxvf knowledgeTree-3.1.tgz
Konfigurasi Knowledgetree.
INFOLINUX 11/2006
67
TUTORIAL KNOWLEDGETREE
Melihat Kesiapan PHP.
File PHP knowledgeTree akan ada dalam folder /var/www/html/knowledgeTree. Membuat database yang akan digunakan oleh KnowledgeTree pada saat operasional, dapat menggunakan perintah: # mysql -u root -p Enter password: (password root untuk database MySQL) mysql> create database dms; mysql> grant all on dms.* to dms@localhost identified by ‘123456’; mysql> grant all on dms.* to dms identified by ‘123456’; mysql> exit
Dalam contoh di atas, telah dibuat database dms untuk knowledgeTree dan user dms dengan password 123456 untuk mengakses database tersebut. Penuhi database dengan tabel yang dibutuhkan, lakuan secara berurut perintah pembuatan tabel dari template yang tersedi melalui perintah:
Setting yang direkomendasikan.
data yang benar adalah sebagai berikut: ; Database login details dbHost = localhost dbName = dms dbUser = dms dbPass = 123456 dbPort = default dbAdminUser dbAdminPass
= root = password
Pastikan semua folder KnowledgeTree dapat diakses oleh web server. Di Fedora Core 5, Web server akan bekerja sebagai user apache, group apache. Yang perlu kita lakukan adalah mengubah owner seluruh file dan folder KnowledgeTree di /var/www/ html mengunakan perintah: # chown -Rf apache.apache knowledgeTree
Selesai sudah proses persiapan instalasi KnowledgeTree. Selanjutnya adalah instalasi KnowledgeTree melalui web.
Konfigurasi KnowledgeTree Proses konfigurasi KnowledgeTree dilakukan melalui web setelah persiapan selesai dilakukan. URL yang perlu diakses adalah http://localhost/knowledgeTree/setup/precheckup.php. Melalui URL http://localhost/knowledgeTree/setup/precheckup.php knowledgeTree akan membantu kita mencek apakah tool / instalasi yang dibutuhkan sudah cukup baik atau belum, sehingga diharapkan opersionalnya nanti akan bermasalah. Pada bagian PHP setting, kita dapat melihat apakah PHP yang kita gunakan memenuhi syarat dan apakah berbagai dukungan yang dibutuhkan tersedia.
# mysql -uroot -ppassword dms < /var/www/html/knowledgeTree/sql/ mysql/install/structure.sql # mysql -uroot -ppassword dms < /var/www/html/knowledgeTree/sql/ mysql/install/data.sql # mysql -uroot -ppassword dms < /var/www/html/knowledgeTree/sql/ mysql/install/user.sql
Edit isi file konfigurasi knowledgeTree yang berlokasi di /var/www/html/knowledgeTree/config/config.ini. Pastikan bahwa database, user database, password yang digunakan telah benar. Dalam contoh ini,
68
11/2006 INFOLINUX
PHP Setting Limit.
www.infolinux.web.id
TUTORIAL KNOWLEDGETREE Dalam contoh ini, data yang benar adalah sebagai berikut: ; Database login details dbHost = localhost dbName = dms dbUser = dms dbPass = 123456 dbPort = default dbAdminUser dbAdminPass
Post-configuration Checkup.
Walaupun di situ tertulis KnowledgeTree tidak bekerja dengan PHP 5, pengalaman saya menunjukkan bahwa kita masih dapat memaksa KnowledgeTree versi 3.1 untuk bekerja dengan PHP 5. Sejauh ini masih baikbaik saja, belum ada masalah yang fatal. Pada bagian Recommended Setting untuk PHP configuration, ada beberapa rekomendasi setting yang diusulkan. Tidak terlalu banyak perlu yang dikhawatirkan, karena sebagian besar akan dibetulkan secara automatis. Pada bagian PHP Setting Limit, ini yang agak bermasalah. Jika kita tidak menset isi /etc/php.ini, maka kemungkinan besar KnowledgeTree akan complain dan memberikan warna merah. post_max_size = 32M upload_max_filesize = 32M
Pastikan nilai post_max_size dan upload_max_filesize 32M agar KnowledgeTree
Checkup Database.
www.infolinux.web.id
tidak complain. KnowledgeTree akan mencek apakah folder /var/www/html/knowledgeTree/var/ log dan /var/www/html/knowledgeTree/ var/Documents dapat di write atau tidak. Pastikan folder tersebut dapat di write oleh Web server apache. Jika tidak, anda perlu melakukan chown: # chown -Rf apache.apache /var/ www/html/knowledgeTree
Selanjutnya kita mencek apakah database untuk KnowledgeTree dapat diakses atau tidak. Pastikan tidak ada error acces deny. Jika terjadi error access deny, cek kembali isi file config ini: # less /var/www/html/ knowledgeTree/config/config.ini
Pastikan bahwa database, user database, password yang digunakan telah benar.
= root = password
Selesai sudah proses konfigurasi KnowledgeTree. Kira sudah mulai dapat menggunakan KnowledgeTree melalui web. Pada saat kita masuk KnowledgeTree pertama kali pada URL http://localhost/ knowledgeTree akan di arahkan ke login page KnowledgeTree. Standar akses untuk admin KnowledgeTree adalah username admin dengan password admin. Halaman pertama yang akan kita lihat adalah dashboard KnowledgeTree. Melalui Dashboard ini kita dapat melakukan banyak yang berkaitan dengan penggunaan maupun adminstrasi KnowledgeTree. Pada menu administrator, kita dapat melakukan beberapa hal seperti: Mengatur user dan group. Mengatur keamanan / security. Mengatur tempat penyimpanan dokumen. Mengatur metadata dan workflow situs yang kita operasikan. Melalui menu browse --> folders, kita dapat melakukan banyak hal yang berkaitan denga dokumen yang akan di kelola, seperti: Menambahkan dokumen. Menambahkan folder.
Halaman Login Knowledgetree.
INFOLINUX 11/2006
69
TUTORIAL KNOWLEDGETREE
Halaman Pertama atau Dashboard.
Mengatur perizinan. Meng-import sebuah lokasi ke server. Upload dalam jumlah banyak/besar. Menu untuk meng-import sebuah lokasi ke server sangat membantu kita dalam memanage berbagai file yang ingin kita upload ke server, karena seluruh proses dapat dilakukan secara remote di komputer yang kita gunakan. Setelah selesai proses persiapan, baru dilakukan upload ke server sekaligus. Dengan menggunakan tool indexing yang memungkinkan mengonversikan semua kata di sebuah file menjadi text akan sangat memudahkan proses search yang ada pada menu browse --> simple search. Proses penggunaan KnowledgeTree tidak terlalu sulit. Dengan teknik-teknik yang dijelaskan di atas, praktis kita sudah mulai dapat mengoperasikan perpustakaan digital yang relatif, baik di tempat kita sendiri.
Membuat Content Untuk Perpustakaan Digital KnowledgeTree hanyalah wadah tempat kita
Browse Folder.
70
11/2006 INFOLINUX
Halaman Administrasi.
menyimpan perpustakaan digital. Menginstalasi wadah perpustakaan digital sama sekali tidak sulit. Yang akan membuat proses menjadi sulit adalah mengisi wadah tersebut. Tentunya kita tidak dapat se-enaknya meng-copy bukubuku / e-book yang ada di Internet ke wadah perpustakan KnowledgeTree yang kita bangun karena kemungkinan besar kita akan melanggar hak cipta. Di tahun 1999-2000, waktu saya menjabat sebagai kepala perpustakaan pusat di Institut Teknologi Bandung, mengisi wadah ini menjadi momok paling berat dari sebuah perpustakaan digital. Isu terbesar yang akan dihadapi adalah masalah hak cipta. Tidak banyak orang yang rela karyanya dinikmati secara gratis oleh orang lain dengan cara diambil secara elektronik. Ada beberapa strategi yang mungkin akan sangat membantu dapat mengisi Perpustakaan digital, memang tidak semua strategi dapat di implementasikan dengan mudah. Beberapa pilihan strategi yang dapat kita gunakan antara lain adalah: Meminta semua tugas-tugas siswa dan mahasiswa agar dimasukkan dalam bentuk
softcopy dan di-upload ke perpustakaan digital tersebut. Konsekuensi yang nantinya akan ditanggung adalah para guru/ dosen pemberi tugas tidak bisa memberikan tugas yang sama setiap semesternya supaya tidak dimungkinkan terjadi plagiat antar siswa/mahasiswa. Juga harus dibuat mekanisme yang agak kreatif yang menyebabkan tugas setiap siswa berbeda satu dengan lainnya. Meminta semua laporan yang dibuat siswa/mahasiswa, misalnya laporan kerja praktek, laporan praktik lapangan, laporan kuliah kerja nyata semua dibuat dalam bentuk softcopy dan dapat di-upload ke server KnowledgeTree. Salah satu situs perpustakaan umum yang mungkin akan sangat membantu dalam membangun isi perpustakaan digital adalah Internet Public Library http:// www.ipl.org. Semoga tulisan ini dapat membantu mereka yang ingin mengembangkan perpustakaan digital di sekolahnya. Onno W. Purbo [[email protected]]
Browse Simple Search.
www.infolinux.web.id
kuisioner
TUTORIAL WAJANBOLIC E-GOEN
Instalasi USB WLAN ZD1211 untuk Wajanbolic e-goen
S
alah satu cara untuk menghemat investasi peralatan akses ke Internet menggunakan peralatan wireless Internet adalah dengan teknik wajanbolic e-goen. Dengan teknik ini, biaya di sisi pelanggan dapat ditekan menjadi hanya sekitar Rp350.000,- saja, jadi jauh di bawah sebuah ponsel—tapi dapat digunakan untuk akses Internet kecepatan 54 Mbps!
Teknik wajanbolic e-goen (http://pg.photos. yahoo.com/ph/gunpwk/my_photos) sangat kreatif dengan menggunakan USB WLAN, yang dimasukkan ke antenna kaleng, dan di-extend kabel USB-nya menggunakan kabel UTP dan sebuah wajan sebagai reflector. Sedikit penjelasan tentang teknik membuat wajanbolic e-goen ini dapat dibaca di situs Sejarah Internet Indonesia http://wikihost.org/wikis/indonesiainternet/ pada link Wajanbolic e-goen. Detail material yang dibutuhkan untuk membuat wajanbolic egoen adalah: Tutup panci atau wajan penggorengan yang cukup besar dengan diameter 70+ cm. Pipa Pralon 3” untuk feeder. Tutup pralon 3”: 2 buah. Pralon 1” buat support pemasangan Wifi USB. Tutup pralon 1”: 1 buah. Baut besar: 1 buah. Baut kecil: 1 buah. Aluminum tape, untuk melapisi pralon 3” yg dipakai buat feeder. Rubber Tape, untuk nutup pipa listrik. Pipa listrik yg kecil (diameter 1 cm), untuk pelindung sambungan kabel UTP. Hardware yang butuhkan: USB WLAN, saya kebetulan mempunyai USB WLAN LevelOne & JAHT. USB 2.0 Extender cable, salah satu yang disarankan oleh Pak E-goen adalah ATen Model No. UE-250.
72
11/2006 INFOLINUX
Beberapa ukuran yang perlu di perhatikan adalah: Untuk wajan dengan kedalaman 20 cm, diameter 70 cm, maka titik fokus para bola kira-kira berada pada 15,3 cm. Untuk wajan yang berbeda ukuran diameter-nya maka titik fokus akan berbeda. Panjang pralon 3” yang harus ditutup rubber tape adalah 25cm. Total panjang pralon 3” yang dibutuhkan adalah panjang fokus ditambah pralon yang ditutup rubber tape, jadi total sekitar 41 cm. Titik fokus lebih kritis, jadi harus tepat di 15,3 cm, sementara rubber tape tidak kritis, jadi dapat lebih panjang. Posisi lubang untuk USB WLAN di pralon 3” adalah 8.3cm dari ujung pralon yang ber-rubber tape. File spreadsheet untuk menghitung berbagai dimensi antena ini dapat diambil di http://www.telkomspeedy.com di pojok Onno di sebelah kiri bawah, di bagian file, masuk ke folder /library-onno-eng/practical-guide-rebelnet/the-guide/wifi/. Gain antena wajanbolic e-goen ini cukup tinggi, sekitar 21-23dBi, dapat digunakan untuk menyambungkan sebuah rumah ke cccess point wireless dalam jarak 2-3 km dengan relatif mudah. Salah satu kesulitan dalam menggunakan USB WLAN adalah memperpanjang kabel USB ke komputer. Kabel USB WLAN bawaan biasanya sangat pendek kurang dari
satu (1) meter. Untuk memperpanjang kabel USB WLAN ini agar komputer di dalam rumah dapat disambungkan ke antena Wajanbolic yang berada di luar rumah dapat dilakukan dengan memperpanjang kabel USB menggunakan USB Extender, memotong kabel USB, dan menyambungkannya dengan kabel UTP. Kabel UTP mempunyai 8 kabel sementara kabel USB hanya ada 4 kabel. Kita perlu menyolder kabel sebagai berikut: USB warna putih ke UTP warna putih. USB warna hijau ke UTP warna hijau. USB warna merah ke 2 kabel UTP (dapat merah dan satu lagi yang lain). USB warna hitam ke sisa kabel UTP yang ada, supaya cukup arus yang besar. Kesulitan utama bagi penggunakan Linux untuk mengadopsi teknik ini adalah mencari driver USB yang cocok untuk USB WLAN yang digunakan. Saya kebetulan menggunakan USB WLAN LevelOne dan USB WLAN JAHT yang keduanya meng-
Foto Wajanbolic e-goen.
www.infolinux.web.id
TUTORIAL WAJANBOLIC E-GOEN Boot linux Anda. PC Anda secara otomatis mendeteksi USB WLAN, dan peralatan yang terpasang mulai dapat dioperasikan. Biasanya langkah pertama yang akan dilakukan adalah menscan frekuensi untuk melihat apakah USB WLAN yang kita gunakan dapat memonitor frekuensi atau tidak. Perintah yang perlu dijalankan adalah: # iwlist scanning
Contoh hasil sebuah proses scanning adalah sebagai berikut:
Website Driver WLAN Atheros.
gunakan driver yang sama yaitu ZD1211 dari Atheros. Pada kesempatan ini saya coba jelaskan teknik menginstalasi driver ZD1211 di Fedora Core 5 yang sudah saya modifikasi kernel-nya menggunakan kernel 2.6.16.20. Saya belum sempat mencoba dengan kernel yang baru 2.6.17.11. Driver USB WLAN ZD1211 dapat diambil di http://www.atheros.com/RD/downloads/download_ZD1211.htm. Beberapa file yang mungkin menarik untuk diambil dan sangat membantu dalam proses instalasi ada di bagian Linux (kernel 2.4/2.6) adalah: Drvier 2_6_0_0. WPA Supplicant. User Guide. Sebelum melakukan instalasi, cek apakah “echi-hcd” terinstal menggunakan perintah lsmod: # lsmod | grep ehci-hcd
Pada umumnya distro Linux, ehci-hcd telah terinstal. Instalasi driver ZD1211 tidak sukar, yang perlu dilakukan adalah: # cp ZD1211LnxDrv_2_6_0_0.tar.gz /usr/local/src # cd /usr/local/src # tar zxvf ZD1211LnxDrv_2_6_0_ 0.tar.gz # cd /usr/local/src/ ZD1211LnxDrv_2_6_0_0
Edit Makefile supaya menjadi sebagai berikut:
www.infolinux.web.id
# if the kernel is 2.6.x, trun on this KERN_26=y KERNEL_SOURCE=/usr/src/linux2.6.16.20 # if the kernel is 2.4.x, trun on this #KERN_24=y #KERNEL_SOURCE=/usr/src/linux2.4.26
Bagi Anda yang mengunakan LevelOne / JAHT, berarti anda membutuhkan driver ZD1211. Proses compile dan instal driver menggunakan perintah berikut ini: # make clean # make ZD1211REV_B=0 # make ZD1211REV_B=0 install
# iwlist scanning eth1 Scan completed : Cell 01 - Address: 00:02:B3:35:42:71 ESSID:”SWADAYAJAHT” Protocol:IEEE 802.11bg Mode:Master Channel:1 Encryption key:off Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s 9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s 48 Mb/s; 54 Mb/s Quality=86/100 Signal level=-44 dBm Extra: Last beacon: 220ms ago Cell 02 - Address: 00:16:B6:EC:DC:F9 ESSID:””
Bagi Anda yang membutuhkan ZD1211B, maka proses instal yang dilakukan adalah menggunakan perintah: # make clean # make ZD1211REV_B=1 # make ZD1211REV_B=1 install
w Untuk melihat daftar USB WLAN yang membutuhkan ZD1211 & ZD1211b, dapat mengakses pada URL http://zd1211.ath. cx/ Setelah compile dan instal, jalankan perintah depmod: # depmod
Protocol:IEEE 802.11b Mode:Master Channel:1 Encryption key:off Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s Quality=87/100 Signal level=-42 dBm Extra: Last beacon: 248ms ago
Ada beberapa informasi yang dapat kita lihat dari sebuah proses scanning. Misal-
INFOLINUX 11/2006
73
TUTORIAL WAJANBOLIC E-GOEN nya, access point mana saja yang dapat dimonitor, kekuatan sinyal, kecepatan yang didukung, protokol yang digunakan, mode operasi access point, MAC address access point, dan lain-lain. Beberapa perintah yang akan membantu proses operasional USB WLAN yang terdeteksi sebagai eth0 yang akan menggunakan Access Point dengan SSID NAMASSID, gateway 192.168.0.1, dan IP 192.168.0.2 adalah sebagai berikut: # iwconfig eth0 essid NAMASSID # ifconfig eth0 192.168.0.2 # route add default gw 192.168.0.1
Contoh hasil peritah iwconfig sesudah PC kita berasosiasi dengan access point NAMASSID: # iwconfig eth0 unassociated ESSID:”NAMASSID” Mode:Managed Frequency=2.412 GHz Access Point: 00:02:B3:35:42:71 Bit Rate=54Mb/s TxPower:16 dBm Retry limit:15 RTS thr:off Fragment thr:off Encryption key:off Power Management:off Link Quality:0 Signal level:0 Noise level:0 Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:0 Invalid misc:309 Missed beacon:0
Jika menggunakan DHCP dalam jaringan Wireless, maka dapat digunakan perintah berikut untuk mendapatkan konfigurasi IP secara otomatis: # dhclient eth0
Menggunakan Teknik Network Address Translation (NAT). Menggunakan Proxy Squid. Menggunakan DHCP server untuk memberikan IP otomatis kepada client LAN. Tentunya bagi Anda yang berani mengeksplorasi teknologi, kita dapat mengembangkan sentral telepon VoIP Rakyat sebagai bagian dari RT/RW-net yang kita kembangkan. Teknik Network Address Translation (NAT) tidak sulit. Kita menggunakan fasilitas NAT yang telah tersedia perintah iptables yang ada di Linux. Bagi Anda yang memperoleh IP statik dari provider, maka dapat menggunakan perintah: # iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.168.34
Di mana eth0 adalah USB WLAN dan IP yang diperoleh dari provider adalah 192.168.168.34. Sedangkan bagi mereka yang memperoleh IP address dynamic dari provider, maka perlu menggunakan perintah: # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Di mana eth0 adalah USB WLAN. Proxy Web server menggunakan Squid akan efektif di jaringan yang penggunanya sering masuk ke beberapa server tertentu, seperti www.friendster.com. Teknik menggunakan Proxy Squid yang sederhana adalah sebagai berikut: Instal Squid pada saat kali pertama instalasi Linux atau melalui fasilitas Add/ Remove Software. Biasanya ada di bagian Web Server. Aktifkan Squid agar langsung beroperasi pada saat komputer start up. Menggunakan perintah: # chkconfig squid on
Membuat gateway Linux sederhana Setelah sambungan ke Internet terjadi dengan menggunakan WLAN USB ZD1211, sering kali kita ingin menyambungkan beberapa komputer lain di belakang PC Linux agar dapat secara bersama-sama mengakses Internet. Teknik ini biasa digunakan di WARNET atau lebih di kenal hari ini sebagai RT/RW-net. Ada beberapa teknik yang dapat digunakan, seperti:
74
11/2006 INFOLINUX
Ubah izin akses yang ada di file /etc/ squid/squid.conf agar workstation di LAN memperoleh izin menggunakan squid. Perintah minimal sekali yang perlu diubah adalah: http_access deny all
menjadi: http_access allow all
Tentunya dengan mengubah perintah tersebut semua workstation menjadi dapat mengakses squid proxy server yang kita gunakan, tanpa ada security apapun. Sangat disarankan untuk membaca-baca isi file / etc/squid/squid.conf utk mengerti berbagai teknik pembatasan yang ada. Hal lain yang perlu diaktifkan di sebuah gateway Linux adalah DHCP server yang memungkinkan gateway Linux memberikan IP address secara otomatis kepada workstation yang ada di LAN. Beberapa langkah minimal sekali yang perlu dilakukan untuk mengaktifkan DHCP Server adalah: Instal DHCP Server pada saat pertama kali instalasi Linux atau melalui fasilitas Add/Remove Software. Biasanya ada di bagian Network Servers. Aktifkan DHCP Server agar langsung beroperasi pada saat komputer start up. Menggunakan perintah: # chkconfig dhcpd on
Konfigurasi file /etc/dhcpd.conf, isikan format berikut: ddns-update-style interim; ignore client-updates; subnet 192.168.0.0 netmask 255.255.255.0 { # --- default gateway option routers 192.168.0.1; # IP address LAN eth1 192.168.0.5 option subnet-mask 255.255.255.0; option nis-domain “domain. org”; option domain-name “domain. org”; option domain-name-servers 202.159.32.2; # DNS ISP anda }
Bagi Anda yang merasa nekad dan ingin bergabung ke dalam jaringan VoIP Rakyat http://www.voiprakyat.or.id, Anda dapat menginstalasi sentral telepon VoIP di PC gateway Linux yang Anda gunakan. Ambil software softswitch Asterisk dari www.asterisk.org. Onno W. Purbo [[email protected]]
www.infolinux.web.id
IKLAN
TUTORIAL FREENX
Remote Desktop Connection Menggunakan FreeNX
T
eknologi remote desktop cukup bermanfaat untuk user yang sering bekerja di lebih dari satu desktop PC. Salah satu aplikasi remote desktop yang cukup bagus adalah FreeNX. Selain bersifat free, aplikasi ini juga dapat menjalankan proses remote dengan cepat pada tipe koneksi dengan bandwidth yang rendah.
Mungkin ada kalanya Anda ingin mengakses desktop Linux yang terdapat di rumah, saat sedang melakukan pekerjaan di kantor. Untuk melakukan hal ini, sudah terdapat beberapa aplikasi di Linux yang dapat kita manfaatkan (lihat rubrik “Utama” majalah InfoLINUX edisi 09/2006). Salah satu aplikasi remote desktop yang cukup bagus untuk kita gunakan adalah FreeNX. FreeNX merupakan implementasi free software dari NX server yang berasal dari teknologi NX NoMachine. Teknologi NX diklaim dapat menghasilkan kecepatan akses melalui koneksi WAN dengan bandwith rendah ke komputer yang ingin kita remote, sama halnya seperti kecepatan koneksi yang dilakukan dalam jaringan LAN. Untuk mempersingkat, langsung saja kita bahas langkah instalasi dan cara penggunaan NX Server dan NX client untuk melakukan proses remote desktop di suatu desktop Linux.
Instalasi FreeNX Sebelum dapat melakukan remote desktop dengan NX Client, kita harus terlebih dahulu menginstalasikan FreeNX yang akan bertindak sebagai NX Server di komputer yang ingin kita remote. Secara default, paket FreeNX tidak disertakan ke dalam sejumlah distro. Untuk itu, kita perlu mencari paket FreeNX untuk distro yang sedang kita gunakan. Sebagai contoh dalam tulisan ini, pengguna distro Fedora Core 5 dapat mengenablekan repositori Fedora Extras yang
76
11/2006 INFOLINUX
terdapat pada file /etc/yum.repos.d/fedora-extras.repo, kemudian jalankan perintah berikut untuk mulai menginstalasi. # yum install freenx
Untuk pengguna distro Ubuntu Dapper, tambahkan repositori di bawah ini ke dalam file /etc/apt/source.list. deb http://free.linux.hp.com/ ~brett/seveas/freenx dapperseveas freenx deb-src http://free.linux.hp.com/ ~brett/seveas/freenx dapperseveas freenx
Berikutnya, jalankan perintah apt-get untuk menginstal freenx. # apt-get update # apt-get install freenx
Satu hal lain yang terpenting, FreeNX sangat membutuhkan service SSH untuk dapat menjalankan NX. Jadi, pastikan paket openssh sudah terinstal dengan baik pada sistem Anda.
Instalasi NX Client Setelah FreeNX yang bertindak sebagai nxserver sudah dapat terinstalasi dengan baik, berikutnya kita akan menginstalasi NX Client. Untuk pilihan aplikasi NX Client yang akan digunakan, kita akan menggunakan aplikasi NX Client yang dibuat oleh NOMACHINE (http://www.nomachine.com). Aplikasi NX Client buatan NOMACHINE
ini sudah dapat berjalan di berbagai platform. Beberapa platform yang disupport, di antaranya Windows, Linux, MacOS, dan Solaris. Sebagai contoh, di sini akan dijelaskan langkah instalasi untuk distro berbasis Debian paket dan RPM paket. Jika pada saat instalasi paket tersebut dependencies dengan paket yang lainnya, instalasikan terlebih dahulu paket yang dibutuhkan. Untuk instalasi NX Client di sistem berbasiskan paket Deb (Ubuntu, Debian, Xandros), Anda dapat menginstalasikan paket NX Client untuk Debian yang telah kami sertakan pada DVD InfoLINUX edisi ini. Untuk menginstalasinya, cukup jalankan perintah berikut. # dpkg -i nxclient_2.0.0-98_ i386.deb
Untuk instalasi NX Client di sistem berbasiskan paket RPM (Mandriva, SuSE, Fedora, RedHat), cukup jalankan perintah berikut untuk dapat menginstalasi aplikasi NX Client.Paket ini juga telahkami sertakan dalam DVD InfoLINUX edisi ini. Untuk menginstalasinya, cukup jalankan perintah berikut. # rpm -ivh nxclient-2.0.098.i386.rpm
Memulai proses remote Pada langkah ini kita akan mulai mencoba melakukan proses remote desktop dari PC yang sudah terinstal NX Client ke kom-
www.infolinux.web.id
TUTORIAL FREENX ingin di-remote. Pada bagian Desktop, pilihlah desktop yang digunakan. Pilih juga ukuran layar untuk remote desktop yang Anda inginkan. Sebuah layar login akan ditampilkan. Tekan tombol Configure, dan pada Tab General, klik tombol Key. Dari situ, klik tombol Import, lalu arahkan ke file client.id_dsa.key yang tadi telah kita copykan ke user supriyanto di PC-2. Setelah proses import selesai, klik tombol Save. Dari layar login, masukkan username dan password user di PC-1. Dalam contoh ini username adalah ‘taufik’ dan password ‘test123’.
Tampilan remote desktop connection dari PC-2 yang menjalankan Debian Sarge, ke PC- yang menjalankan Fedora Core.
puter yang sudah terinstal NX Server. Sebagai contoh, PC-1 yang akan di-remote, dan PC-2 yang akan melakukan proses remote memiliki data sebagai berikut. PC-1 (IP : 192.168.2.1, user : taufik, password : test123). PC-2 (IP : 192.168.2.3, user : supriyanto, password : test567). Untuk melakukan proses remote, lakukan sejumlah langkah berikut. Login sebagai root, kemudian tambahkan nama user dan beri password di nxserver untuk user taufik.
ent, akan muncul halaman wizard yang akan menuntun Anda untuk melakukan sejumlah konfigurasi. Pada bagian Session, Isikanlah nama sesi, host, dan jenis koneksi. Khusus untuk host, isikan dengan alamat IP atau nama domain komputer yang
Tunggu beberapa saat. Setelah proses inisialisasi selesai, maka kita dapat segera bekerja secara remote. (Catatan: pastikan kalau user yang ingin Anda remote, sedang berada dalam modus X). Demikian tutorial singkat mengenai remote desktop dengan FreeNX. Akhir kata, selamat mencoba! Supriyanto [[email protected] ]
# nxserver --adduser taufik # nxserver --passwd taufik
Copykan file client.id_dsa.key ke user supriyanto di PC-2 dengan menggunakan scp. Biasanya file client.id_dsa. key berada pada direktori /etc/nxserver atau /var/lib/nxserver/home/. ssh/. Perintah berikut akan meng-copy file client.id_dsa.key ke home directori user supriyanto di PC-2. # scp client.id_dsa.key supriya [email protected]:~/
Selanjutnya kita akan beralih ke PC-2. Pertama, jalankan aplikasi NX Client. $ nxclient &
(Note: sesuaikan dengan letak binary nxclient di sistem Anda). Saat kali pertama menjalankan NXCli-
www.infolinux.web.id
INFOLINUX 11/2006
77