Sebagai contoh, untuk mengakses display 0 yang dibagi oleh server dengan alamat IP 192.168.0.71, Anda perlu memasukkan 192.168.0.71:0. Setelah itu, Anda akan diminta untuk memasukkan password dan setelah password yang benar dimasukkan, Anda pun siap untuk menikmati keindahan desktop rekan Anda tersebut. Tidak ingin menginstalasi client vnc? Gunakan web browser Anda. Asumsikan rekan Anda telah memiliki dukungan Java untuk VNC. Arahkan web browser Anda ke alamat server di port di mana vnc server berjalan. Umumnya port yang digunakan adalah 5800 ditambah nomor display. Sehingga apabila server 192.168.0.71 membagi display 0, maka alamat yang harus dimasukkan ke web browser adalah http:// 192.168.0.71:5800. Apabila display yang dibagi adalah display 1, maka port
VNC
Masukkan password Anda
yang harus dimasukkan adalah port 5800+1 = 5801. Pastikan web browser Anda mampu untuk menjalankan Java Applet. Apabila Server yang menyediakan VNC adalah server Windows, maka hal itu akan menjadi lebih menarik lagi karena segala hal yang Anda lakukan akan mempengaruhi tampilan di server. Bahkan ketika Anda menggerakkan mouse pun, mouse di server akan turut tergerak. Dengan demikian, Anda dapat melakukan remote administration dengan VNC. Contoh program yang memanfaatkan teknologi ini adalah PCAnywhere.
Hidupkan vncserver Anda! Tidak ada satu orang pun yang ingin berbagi desktop-nya dengan Anda? Semuanya berbasiskan Windows? Tunjukkan keindahan sistem Linux Anda ke rekan sekerja. Biarkan mereka tergiur dengan dekstop indah seperti GNOME 2 dan KDE 3 Anda! Dan agar rekan yang lain dapat mencoba tanpa menggunakan program tambahan, maka aktifkan juga Java untuk VNC di sistem Anda. Kita akan memulai dengan menginstalasi VNC server. Apabila Anda menggunakan Debian, maka berikan perintah berikut ini untuk menginstalasi vncserver: apt-get install vncserver Setelah terinstalasi, Anda bahkan langsung dapat menjalankan server-nya tanpa perlu mengubah setting apapun juga! Konfigurasi default vncserver yang
www.infolinux.web.id
terletak di /etc/vnc.conf bahkan tidak perlu disentuh sedikit pun. Untuk amannya, jalankah vncserver tersebut sebagai user biasa dengan memberikan perintah berikut ini: vncserver Setelah perintah tersebut dijalankan, Anda akan diminta untuk memasukkan password. Password tersebut diperlukan agar pihak yang tidak berkepentingan tidak dapat mengakses desktop yang Anda bagi tersebut. Setelah itu, informasi tentang nomor display yang dibagi akan ditampilkan untuk Anda. Anda pun dapat menjalankan vncserver tersebut berkali-kali sehingga terdapat beberapa desktop yang Anda bagi. Sekarang, dapatkah Anda bayangkan betapa mudahnya membagi desktop Anda? Untuk menghentikan pembagian display 1, berikan perintah berikut ini: vncserver -kill :1 Gantilah nilai 1 dengan nomor display yang ingin Anda hentikan pembagiannya. Semua pengaturan tersebut mengharuskan rekan Anda yang lain memiliki client VNC. Untuk yang menggunakan sistem operasi Linux, tentunya xvncviewer dapat digunakan. Bagi yang menggunakan sistem operasi Windows, Anda dapat menyarankan penggunaan TightVNC, yang dapat didownload di www.tightvnc.com. Seperti yang telah dibahas, kita dapat pula memanjakan rekan kerja Anda agar
INFOLINUX JULI 2003
57
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
VNC
dapat menikmati keindahan desktop Anda tanpa menginstalasi client VNC ataupun program lainnya. Apa yang dibutuhkan hanyalah web browser yang dapat menjalankan Java Applet. Untuk itu, Anda perlu menginstalasi paket tambahan, yakni vnc-java dengan memberikan perintah berikut ini: apt-get install vnc-java Setelah vnc-java diinstalasi, Anda dapat langsung menjalankan vncserver tanpa perlu mengubah konfigurasi apa pun juga. Luar biasa! Dan rekan kerja Anda pun dapat langsung mengakses desktop Anda via web browser.
Mengenal vnc lebih dalam Teknologi VNC sangatlah hebat. VNC memiliki berbagai keunggulan di antaranya kompresi data sehingga tidak akan terlalu memberatkan traffic jaringan. Selain itu, spesifikasi protokol RFB-nya pun terbuka. Bagaimanakah cara kerjanya? Pertama-tama, kita akan membahas protokol VNC. Protokol VNC adalah
58
INFOLINUX JULI 2003
protokol untuk mengakses interface grafis secara remote. Konsep dasarnya adalah Remote Frame Buffer. Protokol ini akan mengizinkan server untuk memperbarui framebuffer di mana server dijalankan. Dan karena bekerja pada level framebuffer, maka protokol ini hampir dapat diterapkan pada sistem operasi mana pun juga. Bahkan sebuah PDA pun dapat berfungsi sebagai vnc server. VNC mengandalkan protokol transport yang dapat diandalkan seperti halnya TCP/IP. VNC merupakan protokol thin client. Client hampir tidak memerlukan program tertentu untuk dapat menikmati desktop yang dibagi. Untuk operasi standar, client juga bahkan tidak memerlukan hardware khusus. Hal yang perlu dibahas juga adalah proses pembaruan bidang persegi. Server umumnya mengambil bidang persegi pada koordinat tertentu dan kemudian menampilkannya. Hal tersebut dalam beberapa kondisi sangatlah tidak efisien. Akan tetapi karena VNC dapat menggunakan encoding tertentu, maka hal tersebut dapat mengurangi banyak
www.infolinux.web.id
hal yang tidak efisien dan server pun dapat melayani lebih cepat. Sebuah desktop dapat mengandung sangat banyak warna dan berbagai komponen lainnya. Encoding yang tepat sangatlah penting. VNC umumnya akan menggunakan encoding JPEG untuk gambar diam dan MPEG untuk gambar bergerak. Penggunaan caching pun akan meningkatkan kecepatan dari server. Setelah itu, protokol untuk update pun harus diperhatikan agar proses perbaruan menjadi lebih efisien. Proses perbaruan mewakili perubahan dari framebuffer yang satu ke framebuffer lainnya. Dalam hal ini sangatlah mirip dengan penampilan gambar pada video. Protokol update-nya diminta oleh client. Dalam hal ini, client meminta perubahan kepada server. Apabila kita menjalankan program tertentu di client, di mana tampilan desktop akan berubah, maka permintaan akan dikirimkan ke server untuk memperbarui tampilan. Tidak lupa, protokol untuk input pun harus diperhatikan agar dapat bekerja dengan baik. Dalam kondisi umum, protokol untuk input akan menggunakan model workstation umum. Segala perubahan pada input akan memicu client untuk mengirimkan perubahan ke server. Server pun akan merespon dan mengirimkan kembali. Bagi Anda yang ingin menulis client untuk VNC, apa yang umumnya Anda butuhkan adalah pengertian akan TCP/IP dan cara untuk menggambar pixel. Akan lebih baik lagi apabila Anda dapat langsung menulis ke framebuffer. Sementara VNC server sendiri akan lebih susah untuk dibuat. Hal ini disebabkan karena VNC server harus membuat client semudah mungkin. Pengorbanan terbesar adalah di server. Anda mutlak harus mampu untuk memperbarui framebuffer dan pemrograman framebuffer secara umum. VNC telah membuat Linux semakin menarik untuk digunakan. Apa yang kita miliki, kita dapat bagikan untuk orang lain. Dan bukankah ini indah? Mari beramai-ramai ciptakan dunia yang lebih indah dengan Linux. Noprianto ([email protected])
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL Python
Python untuk Internet: Seberapa Pantas? Python sebagai bahasa pemrograman general purpose kian berkembang pesat. Lantas, apakah kita juga dapat mengandalkan Python untuk pemrograman Internet?
Website mod_python
dan seberapa banyak tool yang telah siap pakai untuk melakukan pemrograman Internet.
Seberapa cepat? Salah satu hal yang harus disadari adalah masih mahalnya bandwidth di negara kita. Ini adalah kondisi yang susah untuk dikompromikan dengan pemrograman, kecuali dengan mengirimkan data yang seringkas mungkin. Berbeda dengan para administrator jaringan, yang mungkin akan segera mencetuskan penggunaan mod_gzip pada Apache web server. Bagi sang programer, salah satu hal yang dapat dikerjakan untuk membantu adalah dengan membuat program yang dapat berjalan dengan cepat. Paling tidak, apabila bandwidth kecil, kita tidak menambah lagi penderitaan user dengan membuat program yang tidak efisien. Membuat program yang dapat berjalan cepat tentunya melibatkan berbagai faktor, di antaranya penerapan
A
da sebuah pendapat yang cukup radikal di Internet: Di tahun 2020, pemrograman akan dilakukan menggunakan Python dan C. Radikal bukan? Tentunya pendapat tersebut pun ditanggapi secara berbeda-beda oleh berbagai pihak. Terlepas dari opini tersebut, harus diakui, sebagai bahasa pemrograman yang relatif baru, perkembangan Python pantas diberikan acungan jempol. Perkembangan Python telah meluas ke berbagai sektor pemrograman. Sebut saja mulai dari pemrograman yang cukup mendasar dan berkutat dengan algoritma, pemrograman jaringan, pemrograman berbasiskan GUI, pemrograman berbasis web, dan berbagai sektor lainnya. Ini adalah fenomena yang sangat menarik. Tentu saja tidak semua sektor pemrograman tersebut dapat mengandalkan Python. Saat ini, kita akan membahas seberapa andal Python digunakan untuk pemrograman di jagad maya tersebut
algoritma yang benar dan penggunaan bahasa pemrograman yang dapat diandalkan. Kita tidak akan membahas tentang penerapan algoritma karena tentunya akan berkembang menjadi sangat luas. Apakah Python dapat diandalkan untuk membuat aplikasi yang dapat berjalan dengan cepat? Berikut ini kita akan melakukan pengujian sederhana untuk membandingkan seberapa cepat PHP dan Python (yang diwakili oleh Zope) mampu menghitung jumlah penambahan dari 0 sampai 1 juta - 1. Versi PHP yang digunakan adalah 4.1.2 sementara versi Zope yang digunakan adalah 2.6.1. Untuk web server, PHP menggunakan Apache 1.3.26, sementara Zope menggunakan web server internal. Teks yang dikeluarkan ke web browser adalah teks biasa (plain text) dan bukannya HTML. Tool pemercepat untuk Python seperti psyco tidak digunakan. Rasa-rasanya memang tidak adil untuk membandingkan PHP dan
Situs spyce
www.infolinux.web.id
INFOLINUX JULI 2003
59
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Python
Situs PSP
Python dalam kondisi Python diwakili oleh Zope. Di dunia pemrograman web, harus diakui terdapat sangat banyak tool pemrograman web yang berbasiskan pada Python, dan Zope adalah satu dari yang paling lambat kalau tidak mau dikatakan sebagai yang terlambat. Akan tetapi, Zope dipertimbangkan cukup lengkap, skalabel dan diperkirakan akan menjadi framework pemrograman web berbasiskan Python yang terbesar. Ketidakadilan lain adalah karena pengujian dilakukan pada perhitungan dimana Python terkenal sebagai jagonya. Akan tetapi, karena perhitungan tersebut adalah perhitungan dasar, maka diasumsikan PHP mampu melakukannya dengan baik. Penulis memohon maaf apabila tes yang dilakukan terkesan kurang mencerminkan keadilan. Pertama-tama, pengujian dilakukan terlebih dahulu pada PHP sebanyak lima kali percobaan. Setelah itu, barulah percobaan dilakukan pada Zope, juga sebanyak lima kali. Percobaan dilakukan dalam kondisi penggunaan CPU oleh sistem berada di bawah 1%. Berikut ini adalah hasil percobaan dalam satuan detik: PHP Zope 1
3.00
2.87
2 3 4
2.98 2.96 3.01
2.83 2.83 2.82
5
2.97
2.83
60
INFOLINUX JULI 2003
Situs Zope
Dari hasil percobaan, kita melihat bahwa Python cukup dapat untuk diandalkan. Akan tetapi, sekali lagi, ini adalah pengujian dalam melakukan perhitungan matematis. Hal-hal lain seperti kecepatan konektivitas database belum dibandingkan sama sekali. Source code PHP: function getmicrotime() { list($usec, $sec) = explode(“ “,microtime()); return ((float)$usec + (float)$sec); }
maka masalah penggunaan fungsi dianggap tidak signifikan. Source code Python Script di Zope: from DateTime import DateTime start = DateTime().timeTime() sum = 0l for i in range(1000000): sum += i finish = DateTime().timeTime() delta = finish - start print “sum: %li, start: %f, finish: %f, delta: %f” %(sum, start, finish, delta) return printed
Header(“content-type: text/plain”);
Seberapa skalabel? $start = getmicrotime(); $sum = 0; for ($i=0; $i<1000000;$i++) $sum += $i; $finish = getmicrotime(); $delta = $finish - $start; echo(“sum: $sum, start: $start, finish: $finish, delta: $delta”); ?> Catatan: Penggunaan fungsi dapat mengacaukan keabsahan pengujian. Akan tetapi karena siklus pada getmicrotime() sendiri cukup pendek dan hanya dipanggil sebanyak dua kali,
www.infolinux.web.id
Ketika kali pertama berkenalan dengan pemrograman, umumnya kita akan membuat program yang sangat sederhana. Begitupun pemrograman web. Mungkin beberapa di antara kita akan berkutat dengan HTML dan tampilan. Beberapa yang lain mungkin akan mendalami scripting. Beberapa di antaranya mungkin akan berurusan dengan database dan lain sebagainya. Yang pasti, umumnya apa yang dilakukan adalah pekerjaan yang tidak kompleks. Setelah konsisten berlatih, kita pun menjadi semakin maju. Apa yang kita kerjakan tidak lagi mengurus kode HTML dan koneksi database sederhana. Sekarang, kita mungkin harus peduli
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL
Situs Webware
dengan aplikasi kolaboratif yang berhubungan dengan banyak user dan banyak melibatkan workflow. Jumlah anggota tim yang semakin besar juga harus memaksa kita dapat bekerja lebih modular. Developer tidak lagi mengurus presentasi. Pembagian tugas pun menjadi lebih jelas. Dalam kondisi tersebut, sanggupkan bahasa pemrograman web yang kita gunakan mampu mendukung? Mampukah Python mendukung kita dalam situasi tersebut? Jawabannya akan sangat tergantung pada tool yang kita gunakan dalam pemrogramn web. Tool pengembangan web berbasiskan Python sangatlah banyak. Tidak semua tool dapat diandalkan. Beberapa bahkan sangat parah. Beberapa bahkan tidak dikembangkan lagi. Salah satu tool yang mampu untuk sangat skalabel adalah Zope. Dengan menggunakan Zope, Anda dapat melakukan pemrograman web mulai dari situs kecil dengan sedikit pengguna sampai situs raksasa dengan ribuan pengguna dan database ratusan giga atau lebih. Dan semua hal tersebut tidak memerlukan penanganan khusus. Terapkan saja pemrograman Zope yang baik dari awal, dan Anda pun siap untuk terbang ke sistem raksasa. Bagaimana dengan mod_python, poor man’s zope, spyce, atau tool sejenis lainnya? Berbeda dengan Zope yang merupakan framework super lengkap, mereka lebih berkutat dengan
Python
Situs PMZ
fungsi scripting. Oleh karena itu, skalabel atau tidak, sangat tergantung kepada programer-nya. Dengan demikian, berhubung tool berbasiskan Python sangatlah banyak, maka seberapa skalabel Python untuk pemrograman web sangatlah bergantung kepada tool tersebut. Python sendiri sangatlah skalabel mengingat dukungan modul dan pustakanya sangatlah banyak. Ketersediaan berbagai modul dan pustaka membuat kita fleksibel untuk mengembangkan aplikasi yang luar biasa. Dengan kreativitas, pemahaman Python yang baik dan pemahaman akan bahasa C/C++ misalnya, kita bahkan dapat menulis tool baru. Zope sendiri dibangun dengan Python, sementara urusan yang memerlukan kecepatan tinggi diserahkan kepada C.
Seberapa banyak pilihan? Berbeda dengan PHP yang mengkhususkan dirinya pada pemrograman web, Python adalah bahasa pemrograman serba bisa. Dengan demikian, apa yang bisa langsung dilakukan oleh Python untuk pemrograman web adalah penggunaan Python dalam menulis CGI. Dan hal tersebut adalah mimpi buruk. Kenapa? Pertama-tama, Python sendiri sangatlah lambat. Dengan menggunakan Python untuk menulis aplikasi CGI, kita hanya menggunakan modulmodul standar Python dan fasilitas
www.infolinux.web.id
standar. Kondisi demikian tidak memungkinkan aplikasi web yang efektif. Alasan kedua adalah relatif sulitnya pemrograman CGI. Python sendiri sangat mudah untuk digunakan. Akan tetapi, karena harus menuruti aturan pemrograman CGI biasa, walaupun telah dibantu oleh module standar cgi, pemrogramannya tetaplah relatif sulit. Akan jauh lebih mudah apabila langsung menggunakan PHP, ASP ataupun scripting lainnya yang memang telah banyak memudahkan pemrograman web. Dua alasan tersebut telah cukup membuat kita menolak pemrograman aplikasi CGI menggunakan Python. Walaupun mungkin lebih praktis karena kita akan mengetahui persis apa yang kita lakukan, pengorbanan yang harus kita berikan tidaklah sedikit. Di lain sisi, Zope sendiri sebagai suatu framework yang besar juga bukan selalu menjadi pilihan yang tepat. Boleh jadi, Zope datang dengan Zope Object Database yang luar biasa. Boleh jadi Zope datang dengan serangkaian produk luar biasa yang banyak mempermudah hidup kita. Boleh jadi Zope sangat skalabel dengan Zope Enterprise Object-nya. Akan tetapi, Zope sangatlah kompleks. Belum lagi ditambah sedikitnya perusahaan web hosting yang mendukung Zope, terutama di Indonesia. Dan selain itu, Zope relatif susah untuk dipelajari. Ada
INFOLINUX JULI 2003
61
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Python
banyolan yang mengatakan bahwa dengan zope, difficult thing easy, easy thing difficult, hal yang susah menjadi mudah dan terkadang hal yang mudah menjadi susah. Lantas, apa saja alternatif tool yang bisa kita gunakan apabila kita menghindari kedua hal tersebut? Berikut ini adalah beberapa tool alternatif, yang bahkan tidak kalah populer. Beberapa di antaranya telah digunakan secara meluas di www dan dapat disejajarkan dengan PHP ataupun scripting web lainnya.
mod_python adalah modul untuk web server Apache. Dengan menggunakan mod_python, aplikasi web yang Anda tulis dapat berjalan lebih cepat beberapa kali dibandingkan aplikasi CGI biasa (tradisional). Selain itu, konektivitas database pun bukan menjadi masalah yang merepotkan. Dan apabila Anda perlu mengakses internal Apache, tool yang satu ini sangat dapat diandalkan. Bicara kecepatan dalam merespon request, tool yang satu ini, seperti yang telah disebutkan, jauh melebihi aplikasi CGI. Berikut ini adalah perbandingan antara mod_python dan aplikasi CGI menurut dokumentasi resminya di www.mod_python.org: Standard CGI: 23 requests/s Mod_python cgihandler: 385 requests/s Mod_python publisher: 476 requests/s Mod_python handler: 1203 requests/s Pengujian dilakukan menggunakan program benchmarking ab.
2. Spyce Tool yang satu ini sangatlah pantas disandingkan dengan PHP, ASP, JSP dan lain sebagainya. Tujuan dari tool yang satu ini adalah server-side scripting berbasiskan Python yang mudah dan efisien. Sama seperti PHP, tool yang satu ini dapat diselipkan di dalam kode html. Semua program spyce berakhiran .spy. Bagaimana dengan kecepatannya? Berikut ini adalah data hasil pengujian
62
INFOLINUX JULI 2003
1. mod_python
Situs Skunkweb
yang dikutip dari dokumentasi resminya di spyce.sourceforge.net: Konfigurasi Hello world (per detik) Spyce-modpython Spyce-proxy Spyce-FCGI
250 180 100
Spyce-CGI JSP PHP
5 100 450
Python-FCGI C-CGI Python-CGI
140 180 25
Static HTML
1500
Konfigurasi dengan menggabungkan spyce dan mod_python dapat meningkatkan kecepatan sampai hampir 10 kali dibandingkan aplikasi CGI biasa. Pengguna spyce sendiri perlu untuk memahami tujuan dari desain spyce, karena beberapa diantaranya cukup mengejutkan. Salah satunya adalah spyce didesain untuk miskin fitur. Ya, dengan tidak memberikan berbagai fitur yang terkadang menjadikan suatu tool rakus sumber daya sistem, spyce diharapkan dapat membantu Anda dalam menulis aplikasi yang efisien. Berikut ini adalah contoh kode spyce: Hello [[print ‘world!’,]]
www.infolinux.web.id
[[ for i in range(10): { ]] [[=i]] [[ } ]]
3. PSP (Python Server Pages) dan Webware Dengan kemiripan namanya dengan beberapa server-side scripting populer, PSP datang dan menawarkan kemudahan dalam membuat aplikasi web. Beberapa sintaks dalam PSP pun sangat mirip dengan ASP. PSP sendiri adalah server-side scripting yang didesain untuk mirip dengan ASP dan JSP. Satu hal yang sangat mengejutkan adalah PSP dibangun dengan 100% Java! PSP sendiri menggunakan Jpython sebagai bahasa scripting-nya. Hal ini menjadikannya jauh lebih mudah dibandingkan JSP. Semua program PSP berakhiran .psp. Keuntungan yang ditawarkan oleh scripting yang satu ini adalah kemudahan dan dukungan berbagai modul yang kompatibel dengan Jpython. Dan karena Jpython sendiri ditulis menggunakan Java, maka dengan PSP, Anda dapat mengakses paket-paket Java! Luar biasa! PSP bisa di-download di http://www.ciobriefings. com/psp/.
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Python
prioritas. Aplikasi yang ditulis dengan PMZ adalah aplikasi yang siap untuk bekerja dengan XML. Semua program PMZ berakhiran .pmz. Berikut ini adalah contoh kodenya: Out environment
import os for k,v in os.environ.items(): print k,v
5. Skunkweb
Website CherryPy
Berikut ini adalah contoh kode PSP: <TITLE>Hello World Hello World
$[ Response.write( “Hello, %s, from Python Server Pages.” % (Request.server [“REMOTE_ADDR”]) ) ]$
Jika Anda menginginkan suatu suite untuk membangun aplikasi yang menggunakan PSP, maka Webware for Python adalah salah satu yang sangat terkenal. Webware sendiri adalah kumpulan komponen software untuk membangun aplikasi web yang berorientasi objek. Berikut ini adalah fitur dari webware: Server aplikasi yang cepat dan mudah digunakan. Servlets. Penggunaan Python Server Pages. Penjadualan tugas. User manager. Wrapper CGI.
Tujuan desain dari Webware di antaranya adalah aplikasi yang berorientasi Python (dan objek), lengkap dengan komponen-komponen yang dibutuhkan oleh para developer web dan dokumentasi yang lengkap. Webware bisa di-download di http:// webware.sourceforge.net/.
4. Poor Man’s Zope Zope termasuk salah satu server aplikasi yang hangat dibicarakan di Internet. Salah satu keengganan untuk menggnakan Zope adalah borosnya penggunaan sumber daya sistem. Hal tersebut sebenarnya cukup wajar apabila dibandingkan dengan fitur yang datang bersamanya. Bagaimana dengan server yang memiliki resource terbatas? Bagaimana dengan para programer web yang tidak memerlukan kesuruhan fitur dari Zope? Poor Man’s Zope adalah jawabannya. Fungsi PMZ dapat disejajarkan dengan PHP ataupun bahasa scripting lainnya. Walau, untuk saat ini, sangat susah untuk menggunakan PMZ di lingkungan kerja produktif. Fitur yang ditawarkan masih sangat sedikit. PMZ dapat didownload di http://pmz.sourceforge.net/. Terlepas dari mininya PMZ untuk saat ini, dukungan XML tetap menjadi
www.infolinux.web.id
Aplikasi yang satu ini juga merupakan server aplikasi, seperti halnya Zope. Tujuan dari Skunkweb sendiri adalah untuk menyediakan lingkungan pemrograman yang mudah dan cepat untuk membangun aplikasi web. Dalam perbandingan sederhana, Skunkweb dapat disejajarkan dengan berbagai scripting lainnya. Dalam beberapa hal, tujuan dari Skunkweb sangatlah mirip dengan Webware dan Zope. Berbeda dengan Webware dan Zope, Skunkweb mengklaim dirinya lebih skalabel dengan mampu menggunakan keseluruhan sumber daya sistem lebih baik. Skunkweb menggunakan model forking, dan berbeda halnya dengan Zope dan Webware yang menggunakan threading. Fitur utama yang datang bersama Skunkweb adalah penggunaan Python. Dapat dikembangkan, menggunakan sistem komponen, Message catalog, kecepatan, dan dokumentasi. Tool yang satu ini banyak mengklaim dirinya lebih baik dari tool lain, mulai yang besar seperti Webware dan Zope, sampai yang berdiri sendiri seperti PHP. Penasaran mencoba? Kunjungi situsnya di skunkweb. sourceforge.net.
6. CherryPy Tool yang satu ini termasuk tool baru (kali pertama diluncurkan pada musim panas 2002). CherryPy sendiri pada dasarnya adalah pre processor Python yang mengizinkan pemakainya untuk
INFOLINUX JULI 2003
63
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Python
menggabungkan kode Python dan HTML. Walau termasuk baru, tool yang satu ini juga datang bersama dengan templating language sendiri: Cherry HTML Template Language (CHTL) dan Cherry Generic Template Language (CGTL). Kedua templating language ini dapat digabungkan bersama dengan HTML ataupun XML. CherryPy dapat di-download di http://www.cherrypy. org/. Selain CherryPy, yang datang dengan templating language adalah Zope (Zope Page Template). CherryPy sendiri berada di antara server aplikasi dan kompiler. Pengguna Cherry menulis source program, kemudian dikompilasi dengan CherryPy dan sebuah program yang siap jalan pun dihasilkan. Berikut ini adalah contoh kode CHTL: Hello Example User Di luar semua yang telah dibahas, terdapat masih sangat banyak tool
64
INFOLINUX JULI 2003
pengembangan web berbasiskan Python. Masing-masing berlombalomba untuk menawarkan kemudahan dan fitur-fitur lainnya. Bagi kita sebagai pemakai akhir, tentunya ada beberapa hal yang harus diperhatikan. Fleksibilitas umumnya adalah hal yang perlu sekali untuk mendapat perhatian. Python sendiri cukup fleksibel, namun hal tersebut bukan sebuah jaminan untuk tool pengembangan web berbasiskan bahasa tersebut. Umumnya, yang pasti, tool-tool tersebut menawarkan penggunaan sintaks Python yang bersih dan jelas. Terlepas dari kemudahan yang didapat dari kesan pertama, perlu juga diperhatikan seberapa fleksibel tool tersebut. Selain fleksibilitas, kecepatan adalah hal yang rasa-rasanya didambakan oleh setiap pihak. Akan tetapi, cepat tanpa fitur pun bukanlah hal yang terbaik. Umumnya, kecepatan harus dikorbankan dengan kurangnya fitur atau susahnya pemrograman. Datang bersama banyak fitur dan mudah dipakaipun bukanlah nilai mati.
www.infolinux.web.id
Kita juga tetap perlu untuk memperhatikan seberapa matang tool tersebut. Persoalan di sini bukanlah hanya sekedar memiliki banyak bug atau tidak, akan tetapi lebih kepada desain tool. Desain yang jelek dapat membuat sebuah tool berubah di kemudian hari. Hal yang satu ini jelas menjengkelkan karena sebagai pengguna, kita harus mengubah lagi program yang telah dibuat sekian lama. Memilih tidak mengubah? Umumnya Anda tidak akan mendapatkan fitur terbaru. Adapula faktor lain yang cukup penting. Beberapa tahun lalu, penulis memutuskan untuk menggunakan mod_snake daripada mod_python. Hasilnya? Beberapa saat yang lalu, proyek mod_snake telah ditutup oleh pembuatnya. Film selesai, tidak ada cerita lagi. Untungnya, penulis telah beralih ke PHP dan Zope sebelum kecewa terlalu dalam. Bagaimana masa depan tool tersebut rasa-rasanya sangat perlu diperhatikan. Memang pada dasarnya, sebuah proyek dapat bertahan cukup lama, terutama apabila developer-nya terdiri dari berbagai kalangan, dan alangkah bagusnya apabila ada dukungan dari perusahaan lain. Dan terlepas dari semua pertimbangan tersebut, manakah yang paling sesuai dengan kebutuhan Anda? Membuat sebuah aplikasi sederhana mengunakan Zope bukanlah pilihan yang bijak. Zope terlalu berat dan rumit. Membuat aplikasi yang berat dengan mod_python pun rasanya terlalu naif. Dan yang cukup penting, apakah Anda menyukai tool yang Anda gunakan? Dengan semakin menyukai, tentunya semangat dapat bertambah. Masih banyak lagi hal yang perlu dibahas untuk menguji seberapa pantas python digunakan untuk pemrograman Internet. Dunia open source semakin bertambah luas. Anda pun bahkan bisa memperluas dunia tersebut. Tulisan ini tidak dimaksudkan untuk mengagungkan suatu bahasa tertentu dan mendiskreditkan bahasa lainnya. Happy hacking! Noprianto ([email protected])
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL Debian
Membangun Repository Debian Dengan membangun satu repository Debian di jaringan lokal, Anda dan rekan-rekan dapat melakukan instalasi paket Debian dari satu lokasi, dengan cepat dan mudah.
S
alah satu daya tarik distro Linux adalah manajemen paket yang baik. Dengan kata lain, Anda tidak perlu lagi bermain-main dengan proses kompilasi yang terkadang cukup makan hati. Sistem GNU/Linux yang terbuka menyebabkan para developer cenderung bergantung pada suatu pustaka yang telah matang daripada membuat pustaka baru dengan fungsi serupa. Ketergantungan ini tentunya berujung juga pada saling ketergantungan antara paket-paket distro. Andaikata program A membutuhkan pustaka B, maka pustaka B sendiri harus telah terinstalasi di sistem agar program A dapat diinstalasi dan bekerja dengan baik. Dalam praktiknya, terkadang suatu program tidak hanya membutuhkan satu atau dua pustaka lain. Bisa saja, katakanlah, program A tergantung pada program C, sekaligus tergantung pada pustaka B dan 10 pustaka lainnya. Sementara program C sendiri bergantung pada beberapa pustaka yang lain. Apabila urutan instalasi harus diperhatikan, maka tentunya Anda harus menginstalasi semua pustaka yang dibutuhkan oleh C, kemudian program C, kemudian semua pustaka yang dibutuhkan oleh A dan barulah A sendiri dapat diinstalasi. Itu pun kalau tidak ada konflik antarpaket. Bayangkan betapa rumitnya hidup Anda. Debian sendiri, sama seperti distro lain, memiliki manajemen paket sendiri. Paket Debian adalah file dengan ekstensi .deb. Sama seperti distro lain, sebuah paket dapat bergantung pada sekian banyak paket lainnya. Artinya, akan tetap susah bagi Anda untuk menginstalasi suatu program yang cukup memiliki banyak ketergantungan. Hal ini pun
dialami oleh distro lain seperti Red Hat, yang terkenal dengan RPM-nya. Kemudian hadirlah APT untuk mempermudah manajemen paket di Debian. Dengan APT, yang merupakan singkatan dari Advanced Package Tool, Anda tinggal menyebutkan nama paket yang ingin diinstalasi, dan secara otomatis, APT akan mencari tahu apa yang dibutuhkan oleh paket tersebut, kemudian menginstalasi semuanya untuk Anda. Dalam satu baris perintah! Keunggulan lain dari APT adalah perintah dapat diberikan di lokasi mana saja di file sistem. Hal ini disebabkan karena APT tidak berorientasi pada file paket program itu sendiri (file dengan ekstensi .deb), melainkan pada nama paket. APT akan mencari sumber paket di database sources.list (yang umumnya terletak di /etc/apt/sources.list). Dengan demikian, instalasi program dapat menjadi sangat mudah di Debian. APT memiliki sangat banyak koleksi tool di antaranya apt-get, apt-cache, dan lain sebagainya. Database sources.list adalah kuncinya. Apabila isi dari database ini tidak valid, maka jangan harap APT dapat bekerja. Berikut ini adalah contoh dari sources.list penulis: deb cdrom:[Debian GNU/Linux 3.0 r0 _Woody_ - Official i386 Binary-7 (20020718)]/ unstable contrib main non-US/ contrib non-US/main deb cdrom:[Debian GNU/Linux 3.0 r0 _Woody_ - Official i386 Binary-6 (20020718)]/ unstable contrib main non-US/ contrib non-US/main deb cdrom:[Debian GNU/Linux 3.0 r0 _Woody_ - Official i386 Binary-5
www.infolinux.web.id
(20020718)]/ unstable contrib main non-US/ contrib non-US/main deb cdrom:[Debian GNU/Linux 3.0 r0 _Woody_ - Official i386 Binary-4 (20020718)]/ unstable contrib main non-US/ contrib non-US/main deb cdrom:[Debian GNU/Linux 3.0 r0 _Woody_ - Official i386 Binary-3 (20020718)]/ unstable contrib main non-US/ contrib non-US/main deb cdrom:[Debian GNU/Linux 3.0 r0 _Woody_ - Official i386 Binary-2 (20020718)]/ unstable contrib main non-US/ contrib non-US/main deb cdrom:[Debian GNU/Linux 3.0 r0 _Woody_ - Official i386 Binary-1 (20020718)]/ unstable contrib main non-US/ contrib non-US/main deb http://nop/debian/ stable main deb http://marillat.free.fr stable main deb http://debian.relativ.org ./ deb http://ftp.dzug.org/Zope/woody/ mschopen/ zope/ deb http://security.debian.org/ stable/updates main Untuk setiap barisnya, APT akan mengambil file Package dan mendaftarkan isinya ke database paket. Database paket tersebut harus di-update setiap kali kita mengubah sources.list. Apa yang kita butuhkan untuk membuat suatu repository adalah menyiapkan paket debian itu sendiri dan file package.gz yang mendaftar paket apa saja yang kita miliki. Setelah itu, kita bisa mempublikasikannya di www. Untuk membuat repository, berikut ini langkah-langkahnya: 1 . Menyiapkan struktur direktori. Sebenarnya, struktur direktori bukanlah hal yang terpenting. Kita bebas untuk menyiapkan struktur direktori sesuka hati. Contoh dari repository di atas yang tidak menuruti struktur direktori standar adalah
INFOLINUX JULI 2003
65
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Debian
deb http://debian.relativ.org ./. Sementara deb http://nop/debian/ stable main dan deb http://marillat.free.fr stable main adalah contoh repository yang menuruti struktur direktori standar. Siapkanlah direktori-direktori dengan struktur berikut ini: dist / stable / main / binary-i386 pool / stable Dengan struktur direktori tersebut, kita hanya akan menyusun repository untuk paket stable. Untuk paket unstable, gantilah nama direktori stable dengan unstable. Apa yang tersimpan di direktori dist hanyalah file package.gz. Sementara paket sesungguhnya disimpan di dalam direktori pool. 2 . Membuat file package.gz Pertama-tama buatlah sebuah direktori dengan nama xxx di dist/stable/main/ binary-i386. Copy-kan paket xxx ke dalam direktori tersebut. Sementara berada di direktori dist/stable/main/binaryi386, berikanlah perintah berikut ini: dpkg-scanpackages xxx /dev/null pool/
stable/ > packages gzip -v9 packages Dengan demikian, Anda telah memiliki sebuah file package.gz dan direktori xxx. Untuk penambahan packages.gz, jangan lupa untuk mengganti tanda > menjadi >>, yang berguna untuk menambahkan isi file. Gantilah xxx dengan paket favorit Anda. Sebagai tip, Anda dapat mempermudah kerja dengan membuat symlink dari direktori pool. 3 . Mengisi direktori pool Pindahkan direktori xxx yang terdapat di dist/stable/main/binary-i386 ke direktori pool/stable. 4 . Menambahkan alias di web server Asumsikan Anda menggunakan Apache, tambahkan alias berikut ini di seksi alias pada httpd.conf: Alias /debian/ /home/debian/ Options Indexes MultiViews
FollowSymLinks AllowOverride None Order allow,deny Allow from all Contoh tersebut mengasumsikan semua paket Debian diletakkan di dalam / home/debian. Restart-lah web server Anda setelah melakukan perubahan. Kini semua repository Anda dapat diakses melalui URL http://<SERVER>/debian/. 5 . Menambahkan entri di sources.list Kini Anda dapat menambahkan entri baru di sources.list. Berikanlah baris berikut ini: deb http://<SERVER>/debian/ stable main Kata kunci deb harus ditambahkan di sini. Sementara <SERVER> dapat digantikan dengan nama host Anda. Karena di contoh artikel ini kita membangun repository untuk paket stable, yang ditandai dengan peletakan package.gz di dist/stable/main/binary-i386, maka kata kunci stable perlu ditambahkan. Terakhir, karena kita membangun repository untuk seksi main, yang ditandai dengan direktori main/binary-i386, maka kata kunci main perlu ditambahkan. 6 . Mencoba repository lokal yang baru Kini Anda telah memiliki repository lokal yang baru. Berikut ini perintah untuk memperbarui database paket di sistem: apt-get update Anda dapat pula melakukan instalasi xxx dengan memberikan perintah: apt-get install xxx Debian adalah distro yang sangat kompleks. Salah satu penyebabnya adalah penerapan Debian Free Software Guidelines. Kemudian struktur dari file control paket debian sendiri juga cukup rumit. Semua itu ditambah lagi dengan stable, testing dan unstable. Akan tetapi, bagi Anda yang telah terbiasa menggunakan Debian, semua kerumitan tersebut sepertinya terbayar dengan berbagai keasyikannya. Penggunaan APT adalah salah satu contoh. Selamat berbagi! Noprianto ([email protected])
66
INFOLINUX JULI 2003
www.infolinux.web.id
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
OpenMOSIX
Clustering di Linux dengan OpenMOSIX Bagian 3 dari 3 Artikel
Ini terutama Anda butuhkan jika operasi yang Anda jalankan di cluster mengarah ke filesystem (baca dan tulis), terutama operasi tulis. Bisa dibayangkan, satu proses di node A mau menulis kata “abc”, node B mau menulis “DEF”. Gara-gara cache yang amburadul (mungkin karena latensi network), bisa tertulis “aDbEcF”. Memang ini ilustrasi sederhana, dan mestinya dalam aplikasi nyata kecil sekali kemungkinan terjadi, tapi tidak ada salahnya kita antisipasi. DFSA bekerja pada layer di atas MFS. Jadi, sebenarnya DFSA menggunakan fungsi-fungsi pada MFS untuk melaksanakan tugasnya. Dengan demikian otomatis DFSA ini opsional, tidak harus diinstalasi bersama dengan MFS. Bagaimana ilustrasi kegunaan DFSA? Perhatikan Gambar 1. Di sini terlihat bahwa kernel “menyamarkan” akses ke filesystem, walaupunn akses sesungguhnya tetap dilakukan di node asalnya. Daftar lengkap akses I/O yang kompatibel dengan MFS/DFSA bisa dilihat di http://howto.ipng.be/ openMosixWiki/index.php/FAQ.
Walaupun ini opsional, kita coba setup MFS dan DFSA. Pertama, pastikan opsi CONFIG_MOSIX_FS di kernel di-enable. Kompilasi ulang kernel dibutuhkan. Juga, pastikan UID dan GUID di node-node yang tergabung dalam cluster sama. Penulis terus terang belum mencoba langsung kevalidan syarat yang terakhir. Kalau dibutuhkan, Anda bisa memakai NIS/NIS+ untuk mengatasinya. Opsi CONFIG_MOSIX_DFSA di kernel bisa diaktifkan jika Anda membutuhkannya. Untuk mounting MFS, diperlukan tambahan entry di /etc/fstab sebagai berikut:
D
ari instalasi di bagian kedua, kita sudah mendapatkan cluster yang kita inginkan. Berapa yang Anda setup? Dua, tiga, empat, atau lebih? Tidak masalah. Kalau satu, nah itu baru masalah. Anda barangkali akan bertanya, “Wah, belajar cluster mahal juga ya?” Jawabnya, bisa ya, bisa tidak. Anda dapat menggunakan PC bekas, misalnya dua PC kelas Pentium 100, untuk bisa memulai eksperimen. Penulis pernah menggunakan kombinasi heterogen, yaitu Duron 700MHz dan Pentium 166. Hasilnya? Clustering tetap berjalan normal, walaupun banyak job yang akhirnya dimigrasi ke Duron. Satu hal yang tertinggal dari artikel kedua, sebenarnya apa itu MFS dan DFSA? Secara singkat, MFS (MOSIX filesystem) adalah fitur OpenMOSIX yang membuat kita bisa mengakses file di node remote seakan-akan mereka dimount secara lokal. Jadi, misal ada file di node 3 pada direktori /usr/users/anton, setelah Anda mount sistem MFS di /mfs, maka direktori ini bisa diakses dari node manapun dengan mengakses ke direktori /mfs/3/usr/users/anton. DFSA (Direct filesystem Access) adalah mekanisme yang membuat proses yang bermigrasi bisa mengeksekusi beberapa system call di remote node secara lokal tanpa perlu migrasi balik ke node asal (home node). Kedengarannya mirip NFS? Benar, tapi MFS menawarkan kelebihankelebihan berikut: Konsistensi cache. Konsistensi timestamp. Konsistensi link.
Pada dua artikel sebelumnya, kita membahas dasar-dasar clustering dan mencoba menginstalasi OpenMosix. Di bagian ini, kita akan “meng-oprek” OpenMOSIX, dengan acuan gabungan dari pengalaman penulis dan rujukan dari Internet.
3Delight homepage
www.infolinux.web.id
(untuk DFSA yang enabled) mfs_mnt /mnt mfs dfsa=1
0
0
(untuk DFSA yang disabled) mfs_mnt /mnt mfs dfsa=0
0
0
Syntax secara umumnya adalah: [device name] [mount_point] mfs defaults 0 0 Dengan memperhatikan format di atas, kita bisa melihat bahwa patch
aqsis
homepage
INFOLINUX JULI 2003
67
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
OpenMOSIX
Di node ke-3: ln -s /mfs/1/work /work Di node ke-4: ln -s /mfs/1/work /work Dan seterusnya. Berikut ini beberapa contoh program yang dapat digunakan untuk mencoba OpenMOSIX: Matlab 5. Program kalkulasi matematika ini (tentu saja yang versi Linux) bisa memanfaatkan migrasi dan load balancing OpenMOSIX. Agar optimal, Anda yang biasa scripting di Matlab bisa mencoba membuat program “paralel” sehingga OpenMOSIX bisa bekerja lebihh optimal. Penulis pernah mencoba Scilab dengan extension library PVM untuk menjalankan beberapa test script, dan OpenMOSIX berjalan baik. MJPEG Tools. Anda yang bergelut di dunia digital video processing mungkin pernah dengar tool ini. Ini tool untuk encoding dan decoding video, dan jelas sangat memeras fungsi I/O dan CPU suatu komputer. Yang perlu dicatat, proses encoding dan decoding terikat di node tempat program pertama kali dieksekusi. Tapi, filter bisa dimigrasi sehingga perfoma untuk encoding file semakin bagus. Bladeenc. Ini adalah tools untuk konversi WAV ke MP3. Anda bisa
68
INFOLINUX JULI 2003
menggunakannya untuk (secara paralel) mengonversi kumpulan file WAV menjadi MP3, misal dengan script berikut. cdparanoia -B for n in ‘ls *.wav‘; do bladeenc -quit -quiet $n -256 -copy -crc & done; Sebagai tambahan, operasi semacam ini cukup intens dalam I/O, terutama mekanisme baca tulis ke file. Untuk itu, akan lebih baik jika menggunakan POVRay. POVRay. Ini adalah program untuk melakukan rendering gambar. Ini salah satu freeware yang cukup terkenal di dunia grafis (www.povray.org). Agar optimal di cluster, Anda bisa menggunakan shell script atau menggunakan versi patch PVM untuk POVRay, sehingga pekerjaan rendering tiap frame bisa dibagi-bagi ke anggota cluster. MPI (Message Passing Library) Sebenarnya menurut pengalaman penulis dalam komparasi PVM dan MPI, didapat beberapa kasus di mana PVM bisa bermigrasi lebih baik dalam cluster MOSIX dibanding MPI. Versi MOSIX yang penulis pakai untuk komparasi adalah untuk kernel vanilla 2.2.16. Secara umum, PVM menurut penulis lebih cocok karena bisa menggunakan UNIX domain socket, yang membuatnya bisa dimigrasi. Sedangkan MPI(CH) tidak memiliki versi device untuk UNIX domain socket. Namun demikian, hasil akhir terkini bisa saja berubah, mengingat MPI sendiri terus berkembang. Catatan lainnya, jangan menggunakan pilihan device ch_shmem, karena penggunaan shared memory tidak cocok untuk cluster OpenMOSIX. John The Ripper. Ini aplikasi untuk cracking password di UNIX/Linux. FLAC, yaitu lossless audio encoder (http://flac.sourceforge.net). Dnetc, salah satu program distributed computing yang bisa dapatkan di distributed.net. Untuk ini, Anda membutuhkan x86/ELF/pthreads client
www.infolinux.web.id
OpenMOSIX menambahkan satu model filesystem, sehingga untuk mounting kita menyebutkan secara eksplisit model MFS. MFS ini sendiri tidak menggantikan layer filesystem terbawah seperti ext2/3, reiserfs, dan sebagainya. Tapi lebih tepat bisa disebut perantara. Setelah mounting ini, tiap isi file di tiap node bisa diakses dengan syntax / mfs/[OpenMOSIX_ID]/. Untuk lebih mudahnya, Anda bisa membuat symbolic link, misalnya untuk akses direktori/program di node 1: Di node ke-2: ln -s /mfs/1/work /work
Gambar 1. Struktur MFS OpenMOSIX
(gunakan pthreads untuk sistem tanpa shared memory, misalnya MOSIX). Patch bisa Anda dapatkan di http:// http.distributed.net/pub/dcti/currentclient/dnetc-linux-x86-elf-pthreads.tar.gz. R, program perhitungan matematika dan statistika sejenis Scilab dan MatLab. Untuk bisa berjalan baik di OpenMOSIX, lakukan perubahan berikut di source code R. Edit SETJMP macro dalam file src/ include/Defn.h dari define SETJMP(x) sigsetjmp(x,1) menjadi define SETJMP(x) sigsetjmp(x,0). Make, bisa memanfaatkan OpenMOSIX, terutama fungsi migrasi dan load balancing. Gunakan para-meter –j # (jumlah child process), dan migrasi akan terjadi. Perlu diingat sekali lagi, jika proses kompilasi berlangsung sangat singkat (misalnya di bawah 30 detik), biasanya proses akan diam di home node. Gunakan untuk kompilasi source code yang besar, misal kernel Linux. Intel Fortran Compiler. untuk versi lebih baru dari 7.0.7.9. NAGWare Fortran 95 compiler Release 4.2(464) dan NAG fortran 77 libraries (Mark 20), menghasilkan program yang bermigrasi secara sempurna ([email protected]). LAME, Lame Ain’t MP3 Encoder, suatu encoder MP3 open source. Anda pasti pernah mendengar mengenai tools ini (http://lame.sourceforge.net). Mirip seperti Bladeenc, Anda bisa men-spawn beberapa proses LAME sehingga OpenMOSIX me-load balance ke node
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL
POVRay
homepage
OpenMOSIX
lainnya. (Catatan: LAME dan aplikasi sering di-compile secara spesifik di platform tertentu, misal dengan parameter gcc march=pentium4 karena awalnya didesain untuk berjalan di satu node. Jika kemudian ada node baru bergabung, misal menggunakan Pentium3, hal ini bisa menyebabkan crash. Tapi, ini tidak berkaitan dengan OpenMOSIX. Grip, yaitu program CD Player dan CD Ripper berbasis Gtk. Anda bisa melakukan ripping di satu node dengan cdparanoia dan meng-encode pada node sisanya dengan oggenc (http:// www.vorbis.com) untuk mengubah file audio CD menjadi MP3.
Daftar lengkap terkini mengenai program yang bisa berjalan efektif di OpenMOSIX bisa Anda lihat di http:// howto.ipng.be/openMosixWiki/ index.php/work%20smoothly. Daftar ini bisa bertambah sewaktu-waktu, jadi Anda tidak perlu putus asa jika program yang ingin Anda jalankan masih “untested”. Secara umum, aplikasi akan bisa efektif di OpenMOSIX jika: 1 . Tidak menggunakan mekanisme shared memory. 2 . Tidak menggunakan mekanisme thread (Java green thread JVM masih bisa ditoleransi OpenMOSIX). Aplikasi apa yang sejauh ini tidak efektif jalan di OpenMOSIX? Berikut ini sebagian daftarnya. Program Java yang menggunakan native thread. Program seperti ini tidak bisa bermigrasi karena menggunakan shared memory. Tapi seperti dijelaskan di atas, green threads JVM (Java
YafRay homepage
Virtual Machine) bisa ditoleransi untuk dimigrasi karena tiap thread Java adalah proses terpisah. Secara umum, menurut pengalaman penulis, programprogram Java memang tidak optimal di OpenMOSIX, karena memang menggunakan Virtual Machine. Dengan demikian jika terjadi migrasi, bisa dipastikan ada komunikasi antarremote node dengan home node untuk calling fungsi-fungsi VM. Dalam hal ini, algoritma OpenMOSIX kemungkinan besar me-reject migrasi. Aplikasi yang menggunakan pthreads. Ada berapa macam model threading di GNU/Linux? Terus terang, penulis agak kesulitan menjawabnya, walaupun ada jenis-jenis yang umum diketahui, misal native Linux Thread, pthreads, dan sebagainya. Pembaca yang lebih mendalami masalah pemrograman konkuren bisa menyampaikan koreksi. Sebenarnya masalah utama threading adalah, tiap subproses menempati area memori yang sama untuk data. Dengan kata lain, merupakan penerapan shared memory. Sampai dengan OpenMOSIX dapat mengimplementasi DSM (Distributed Shared Memory), maka aplikasi berbasis threading tidak akan efektif berjalan. Sebagai catatan, sekarang sedang berjalan implementasi beta untuk DSM yang disebut project MAASK (http:// mcaserta.com/maask/). MySQL, karena menggunakan shared memory. Apache, karena menggunakan shared memory. Oracle, karena menggunakan shared memory.
www.infolinux.web.id
SAP, karena menggunakan shared memory. VMWare. Catatan dari situs OpenMOSIX, percobaan memigrasi VMWare yang sedang menjalankan Windows 98, kadang VMWare crash, kadang OS yang diemulasi crash. Dengan demikian, VMWare dan OpenMOSIX masih belum kompak. Program yang di-compile dengan Intel Fortran Compiler (versi 7.0.064). Namun versi terakhir (7.0.079) bisa berjalan. Masalahnya terletak pada fakta semua program yang di-compile dengan 7.0.064 melakukan memorymap /dev/zero saat inisialisasi. Dan karena OpenMOSIX tidak bisa memigrasi proses dengan device yang di memory map, maka migrasi gagal. Daftar terkini dari program yang tidak efisien berjalan di MOSIX bisa dilihat di http://howto.ipng.be/openMosixWiki/ index.php/don’t. Sebenarnya tidak efisien itu bagaimana? Jawabannya, kalau tidak bisa dimigrasi. Penulis mengatakan demikian karena fungsi utama clustering SSI di OpenMOSIX adalah sebagai load balancer di dalam node cluster, sehingga jelas kalau terjadi kegagalan saat migrasi, maka tidak efisien. Tidak efisien di sini tidak berarti tidak bisa berjalan sama sekali atau crash, tapi lebih sekadar menunjukkan bahwa program ini tidak bisa mengambil benefit yang optimal dari fitur OpenMOSIX. Khusus untuk Java, pembaca yang berminat bisa sedikit membaca ulasan di http://howto.ipng.be/openMosixWiki/ index.php/Java%20and%20Mosix. Penulis melihat ulasan di URL ini bisa menjadi pointer buat developer yang ingin men-develop program yang optimal berjalan di OpenMOSIX. OK, sepertinya penulis sudah cukup banyak mengulas OpenMOSIX sebagai permulaan. Diharapkan, para pembaca dapat mencoba dan menarik manfaat dari potensi clustering. Selamat mencoba! Penulis mengundang Anda bergabung dengan mailing list clustering-id@ yahoogroups.com untuk bersama-sama berdiskusi soal clustering. Mulyadi Santosa ([email protected])
INFOLINUX JULI 2003
69
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Keamanan Sistem
Menjaga Keamanan Sistem Bagian 2 dari 3 Artikel Untuk menjaga sistem Linux Anda aman, perhatikan pemakaian user root, akses terhadap file, pengaturan login, password, dan enkripsinya.
B
eberapa poin ini merupakan lanjutan petunjuk pengamanan root yang telah disinggung di bagian pertama. Batasi penggunaan konsol untuk login sebagai root hanya pada konsol 1 dan 2 dengan cara menghapus tty3 dan tty4. Untuk membatasinya, Anda bisa melakukan editing pada /etc/securetty, seperti tampak pada gambar berikut: # # This file contains the device names of tty lines (one per line, # without leading /dev/) on which root is allowed to login. # tty1 tty2 # for devfs: vc/1 vc/2
Batasi waktu penggunaan account root, ini berguna jika pada suatu saat Anda lupa melakukan logout dari account root. Anda perlu membatasi waktu time out pada saat account root nonaktif. Cara membatasinya waktunya sebagai berikut: Edit file /root/.bashrc Tambahkan variabel di bawah ini: HISTFILESIZE=100 HISTSIZE=30 TMOUT=900 Variabel TMOUT berfungsi untuk menghitung waktu pada saat user root sedang tidak aktif. Lamanya dihitung berdasarkan detik (second). Jadi jika Anda menginginkan account root untuk otomatis logout dari shell selma 15 menit tidak ada aktivitas, Anda bisa melakukan setting 60 detik x 15 menit = 900. HISTSIZE
70
INFOLINUX JULI 2003
berguna untuk membatasi history pengetikan yang dilakukan oleh root sampai dengan 30 baris. Sedangkan HISTFILESIZE berfungsi untuk membatasi ukuran file .bash_history sampai dengan 100 byte saja selanjutnya akan dihapus. Dengan demikian, akan mengecoh orang lain yang ingin melakukan pengintipan di .bash_history. Anda juga bisa memasangnya di /etc/profile, untuk menerapkannya terhadap seluruh user. Untuk melihat efeknya, Anda harus logout terlebih dahulu. Kemudian login kembali sebagai user root. Untuk lebih mengamankan account root, edit file /root/.bashrc, dan isikan variabel berikut: cat /dev/null > /root/.bash_history Variabel di atas akan mengakibatkan sistem secara otomatis akan mengosongkan .bash_history pada saat user root melakukan login. Variabel ini bisa juga Anda masukkan di file .bashrc pada masing-masing home user untuk keamanan mereka sendiri. Anda juga bisa memasukkan perintah pengosongan history melalui crontab, seperti berikut ini: [root@localhost: ~] # crontab -e [Insert] 59 * * * * cat /dev/null > /root/ .bash_history [Esc] :wq [Enter] Perintah di atas akan mengakibatkan sistem mengosongkan file .bash_history pada direktori /root setiap satu jam sekali.
www.infolinux.web.id
Pengamanan file dan sistem File Mengamankan file dan sistem file sangat penting, karena akan sangat berarti bagi penyusup untuk menggunakan file yang ada demi kepentingan penyusup. Misalnya, penggunaan gcc untuk kompilasi program, akan sangat berbahaya jika dilakukan oleh user yang tidak bisa dipercaya. Beberapa menit persiapan dan perencanaan sebelum menaruh sistem Anda online dapat membantu melindungi sistem Anda, dan data yang disimpan. Berikut ini beberapa tips untuk mengamankan file dan sistem file Anda. Tidak ada alasan untuk menjalankan program SUID/SGID dari home user. Gunakan opsi “nosuid” dalam /etc/ fstab untuk partisi yang dapat ditulis oleh orang selain root. Anda bisa juga menambahkan “nodev” dan “noexec” di partisi $HOME/user, juga di /var, yang melarang eksekusi program, dan penciptaan device karakter atau blok, yang sebenarnya tidak perlu. Misalnya untuk mengamankan direktori /tmp dan direktori /home, contohnya sebagai berikut: /dev/hda7 /tmp ext2 nosuid,defaults 1 1 /dev/hdc2 /home ext2 nodev.noexec,defaults 1 2 Konfigurasi umask penciptaan file user sistem Anda perlu dijaga seketat mungkin. Setting yang biasa digunakan adalah 022, 033, dan yang paling ketat adalah 077, dan ditambahkan ke /etc/profile. Set limit sistem file. Anda dapat mengendalikan limit tiap pemakai menggunakan module PAM dan /etc/ security/limits.conf. Sebagai contoh,
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL Keamanan Sistem
limit untuk kelompok “users” mungkin tampak sebagai berikut: @users hard core 0 @users hard nproc 50 @users hard rss 5000 Perintah ini berarti melarang penciptaan file core, membatasi jumlah proses hingga 50, dan membatasi penggunaan memory tiap user hingga 5M. File /var/log/wtmp dan /var/run/utmp berisi catatan login seluruh pemakai sistem Anda. Integritasnya harus dipelihara karena dapat digunakan untuk menentukan kapan dan dari mana seorang pemakai (atau penyusup potensial) memasuki sistem Anda. File-file ini harus memiliki permisi 644, tanpa mempengaruhi operasi sistem normal. Jika Anda mengekspor sistem file menggunakan NFS, pastikan mengonfigurasi /etc/exports dengan akses yang seketat mungkin. Artinya tidak menggunakan wildcard, tidak membolehkan root akses menulis, dan melakukan mount read-only jika mungkin. Bit immutable dapat digunakan untuk mencegah penghapusan atau penimpahan sebuah file yang harus dilindungi tanpa sengaja. Juga dapat mencegah seseorang menciptakan link simbolik ke file ini, yang telah merupakan sumber penyerangan melibatkan penghapusan /etc/passwd atau /etc/shadow. Misalkan melindungi kedua dile tersebut di atas, caranya adalah sebagai berikut: masaji:/etc # chattr +ua shadow masaji:/etc # chattr +ua passwd Perintah di atas akan mengakibatkan file shadow dan passwd tidak akan bisa dihapus dan hanya bisa ditambahi saja (append). File-file SUID dan SGID pada sistem Anda adalah risiko keamanan potensial, dan harus diawasi dengan baik. Oleh karena program-program ini memberi izin khusus bagi pemakai yang mengeksekusinya, maka perlu dipastikan bahwa program yang tidak aman tidak diinstalasi. Trik favorit
cracker adalah mengeksploitasi program SUID “root”, lalu meninggalkan program SUID sebagai backdoor untuk masuk di saat lain, meski lubang yang asli telah ditutup. Carilah seluruh program SUID/SGID di sistem Anda, dan catatlah, sehingga Anda mengerti setiap perubahan yang dapat mengindikasikan penyusup potensial. Gunakan perintah berikut untuk mencari seluruh program SUID/ SGID di sistem Anda. Perketat sekuriti Anda dengan menyunting file /etc/login.defs, dengan melakukan editing pada bagian ini: # Password aging controls: # # PASS_MAX_DAYS Maximum number of days a password may be used. # PASS_MIN_DAYS Minimum number of days allowed between password changes. # PASS_MIN_LEN Minimum acceptable password length. # PASS_WARN_AGE Number of days warning given before a password expires. # PASS_MAX_DAYS 30 PASS_MIN_DAYS 0 PASS_MIN_LEN 8 PASS_WARN_AGE 28 Berikan akses seminim mungkin bagi daemon atau program yang berjalan dan bila mungkin masukkan program tersebut ke dalam chrooted-jail, tentunya akses yang Anda berikan jangan sampai “menjerat” program/ daemon tersebut hingga mati. Monitor selalu proses (‘ps ax’), log (‘/ var/log/’), dan file file yang terbuka (‘lsof’). Perhatikan pula socket yang terbuka, dan socket connections, dengan netstat, contoh: [root@hartx /root]# netstat -atn Berikan perhatian ekstra jika Anda menjalankan layanan ftp publik (anonymous ftp) terutama sekali jika Anda menggunakan Wu-ftpd, juga pada DNS Server Anda jika Anda menggunakan BIND, karena kedua service ini paling rentan terhadap
www.infolinux.web.id
masalah keamanan (terbukti sering terjadi “tambal sulam” pada dua program ini). Akhirnya, sebelum mengubah perizinan di sembarang sistem file, pastikan Anda paham apa yang Anda lakukan. Jangan pernah mengubah permisi suatu file hanya karena ini tampaknya merupakan cara termudah menyelesaikan sesuatu. Selalu tentukan mengapa file memiliki permisi tersebut sebelum mengubahnya.
Pemeliharaan System Account Data Sangat penting bahwa informasi yang berasal dari syslog belum diganggu. Membuat file dalam /var/log dapat dibaca dan ditulis oleh sejumlah pemakai terbatas adalah awal yang baik. Yakinkan untuk memperhatikan apa yang ditulis di sana, khususnya dalam fasilitas ‘auth’. Banyaknya kegagalan login, sebagai contoh, dapat mengindikasikan usaha break-in. Ke mana untuk melihat file log Anda tergantung pada distribusi Anda. Dalam sistem Linux yang sesuai dengan “Linux Filesystem Standard”, seperti Red Hat, Anda ingin melihat ke /var/log dan memeriksa pesan-pesan, mail.log dan lainnya. Anda dapat menemukan di mana distribusi Anda mencatat dengan melihat pada file /etc/syslog.conf. Ini file yang memberitahu syslogd (the system logging daemon) di mana mencatat berbagai pesan. Anda mungkin ingin mengkonfigurasi script log-rotating Anda atau daemon untuk menjaga log lebih panjang sehingga Anda memiliki waktu untuk memeriksanya. Lihat paket ‘logrotate’ dalam sistem Linux versi terbaru. Jika file log Anda telah diganggu, lihat bila Anda dapat menentukan kapan terjadinya, dan hal-hal apa yang diganggu. Apakah ada periode waktu yang tidak dapat dihitung? Periksa tape back-up (jika Anda punya) untuk file log yang tidak terganggu adalah ide yang baik. File log umumnya dimodifikasi oleh penyusup dalam rangka menutup
INFOLINUX JULI 2003
71
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Keamanan Sistem
jejaknya, tetapi mereka harus juga memeriksa kejadian-kejadian aneh. Anda mungkin memperhatikan penyusup berusaha memperoleh jalan masuk, atau mengeksploitasi program dalam rangka memperoleh rekening root. Anda mungkin melihat masukan log sebelum penyusup memiliki waktu memodifikasi mereka. Anda harus juga yakin untuk memisahkan fasilitas ‘auth’ dari data log lain, termasuk usaha untuk mengganti pemakai menggunakan ‘su’, usaha login, dan informasi akuntansi pemakai lainnya. Jika mungkin, konfigurasi syslog untuk mengirim salinan data yang paling penting ke sistem yang aman. Hal ini akan mencegah penyusup menutupi jejaknya dengan menghapus usaha login /su/ftp/etc. Lihat syslog.conf man page, dan acu pilihan ‘@’. Akhirnya, file log kurang berguna ketika tak seorang pun membacanya. Lihatlah log file Anda sewaktu-waktu, dan kenali tampaknya untuk hari normal. Dengan mengetahui hal ini dapat membantu mengenali hal-hal yang tidak biasa.
Perizinan file Seorang sistem administrator perlu memastikan bahwa file-file pada sistem tidak terbuka untuk pengeditan oleh pemakai dan grup yang tidak seharusnya melakukan pemeliharaan sistem semacam itu. UNIX membedakan kendali akses pada file dan direktori berdasarkan tiga karakteristik: pemilik (owner), grup, dan yang lain (other). Selalu terdapat satu pemilik, sejumlah anggota grup, dan setiap orang lain. Penjelasannya demikian: Read (Baca): Mampu melihat isi file. Mampu membaca direktori. Write (Menulis): Mampu menambah atau mengubah file. Mampu menghapus atau memindah file dalam sebuah direktori.
72
INFOLINUX JULI 2003
Execute (Eksekusi): Mampu menjalankan program biner atau script shell. Mampu mencari dalam sebuah direktori, dikombinasikan dengan permisi read. Menyimpan atribut teks: (untuk direktori) Bit sticky juga memiliki arti lain ketika diaplikasikan pada direktori. Jika bit sticky diset pada direktori, maka seorang pemakai hanya boleh menghapus file yang dimiliki atau diberi ijin menulis secara eksplisit, walaupun ia memiliki akses ke direktori. Hal ini dirancang untuk direktori seperti /tmp, yang bersifat world-writable, tetapi tidak diinginkan setiap pemakai dapat menghapus file sesukanya. Bit sticky dilihat sebagai sebuah ‘t’ dalam daftar direktori. Atribut SUID: (untuk file) Atribut ini menggambarkan permisi set ID pemakai atas file. Ketika mode akses permisi set ID diset dalam permisi pemilik, dan file adalah eksekutabel, proses yang menjalankannya diberi izin akses kepada sumber daya sistem berdasarkan pemakai yang membuat proses. Inilah penyebab eksploitasi ‘buffer overflow’. Atribut SGID: (untuk file) Jika diset dalam permisi grup, bit ini mengendalikan status “set group id” file. Ia berlaku serupa dengan SUID, kecuali grup terpengaruh. File harus eksekutabel agar dapat berlaku. Atribut SGID: (untuk direktori) Jika Anda menset bit SGID pada direktori (dengan “chmod g+s direktori”), file yang tercipta di direktori akan memiliki grup yang sama dengan grup direktori.
Pengamanan password dan enkripsi Salah satu fitur keamanan yang penting yang digunakan saat ini adalah password. Penting bagi Anda dan seluruh pemakai server Anda untuk memiliki password yang aman dan tidak dapat diterka. Kebanyakan distribusi Linux terbaru menyertakan program ‘passwd’ yang tidak membolehkan Anda menset password yang mudah diterka. Pastikan
www.infolinux.web.id
program passwd Anda terbaru dan memiliki fitur ini. Kebanyakan unicies (dan Linux bukanlah perkecualian) utamanya menggunakan algoritma enkripsi satu arah (one-way), disebut DES (Data Encryption Standard) untuk mengenkripsi password Anda. Password terenkripsi ini kemudian disimpan di /etc/ passwd atau di /etc/shadow. Ketika Anda berusaha login, apapun yang Anda ketikkan dienkripsi dibandingkan dengan masukkan dalam file yang menyimpan password Anda. Jika cocok, pastilah password-nya sama, dan Anda dibolehkan mengakses. Meskipun DES merupakan algoritma enkripsi dua arah (Anda dapat meng-code dan mendecode pesan, dengan memberi kunci yang tepat), varian yang digunakan kebanyakan unicies adalah satu arah. Artinya tidak mungkin membalik enkripsi untuk memperoleh password dari isi /etc/ passwd (atau /etc/shadow). Serangan brute force, seperti “Crack” atau “John the Ripper” sering dapat digunakan untuk menerka password meski password Anda cukup acak. Modul PAM memungkinkan Anda menggunakan rutin enkripsi yang berbeda dengan password Anda (MD5 atau sejenisnya).
Shadow passwords Shadow password adalah suatu cara menjaga password terenkripsi Anda dari pemakai normal. Normalnya, password terenkripsi ini disimpan di file /etc/ passwd dapat dibaca semua pemakai. Mereka lalu dapat menjalankan program penerka password dan berusaha menentukan password-nya. Shadow password menyimpan informasi ini ke file /etc/shadow yang hanya dapat dibaca oleh pemakai yang berhak. Dalam rangka menjalankan shadow password Anda perlu memastikan bahwa seluruh utilitas Anda yang perlu mengakses informasi password dikompilasi ulang untuk mendukungnya. PAM juga membolehkan Anda untuk hanya memasukkan modul shadow dan tidak perlu mengkompilasi ulang eksekutabel. Anda dapat mengacu pada Shadow-
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL Keamanan Sistem
Password HOWTO untuk informasi lebih lanjut jika perlu. Contohnya sebagai berikut: tamu:x:502:100:Hanya Tamu:/home/tamu:/ bin/bash hartx:x:503:100:Agus Hartanto:/home/ hartx:/bin/bash Pada contoh di atas, password dari user hartx dan tamu hanya disimboliskan sebagai x, karena yang sesungguhnya ada dan tersimpan di file /etc/shadow. Mari kita lihat isi password yang sebenarnya: tamu:AdtjiuUotiABk:11625:0:99999:7:0:: hartx:SbTexoIdqe4IQ:11631:0:99999:7:0:: Terlihat bahwa dengan penggunaan shadow, password dari user yang bersangkutan sudah dienkripsi sedemikian rupa, sehingga hanya dengan super komputer saja password tersebut dapat diuraikan. Dan kalau ingin lebih cepat, tentu saja melalui metode pendekatan personal).
SSH (Secure Shell), stelnet SSH dan stelnet adalah program yang memungkinkan Anda untuk login ke sistem remote dan memiliki koneksi yang terenkripsi. SSH adalah paket program yang digunakan sebagai pengganti yang aman untuk rlogin, rsh dan rcp. Ia menggunakan public-key cryptography untuk mengenkripsi komunikasi antara dua host, demikian pula untuk autentikasi pemakai. Ia dapat digunakan untuk login secara aman ke remote host atau menyalin data antar-host, sementara mencegah man-in-the-middle attacks (pembajakan sesi) dan DNS spoofing. Ia akan melakukan kompresi data pada koneksi Anda, dan komunikasi X11 yang aman antar-host. SSH homepage dapat dijumpai di http://www.cs.hut.fi/ssh. Anda dapat pula menggunakan SSH dari stasiun kerja Windows Anda ke server SSH Linux. Terdapat beberapa implementasi client Windows yang tersedia gratis, termasuk satu di http:// guardian.htu.tuwien.ac.at/therapy/ssh/
dan juga implementasi komersial dari DataFellows, di http:// www.datafellows.com. SSLeay adalah implementasi bebas protokol Secure Sockets Layer Netscape, termasuk beberapa aplikasi, seperti Secure telnet, modul untuk Apache, beberapa database, dan juga beberapa algoritma termasuk DES, IDEA dan Blowfish. Dengan menggunakan pustaka ini, pengganti secure telnet telah diciptakan yang melakukan enkripsi pada koneksi telnet. Tidak seperti SSH, stelnet menggunakan SSL, protokol Secure Sockets Layer yang dikembangkan Netscape. Anda dapat menjumpai Secure telnet dan Secure FTP dengan melihat dulu SSLeay FAQ, tersedia di http:// www.psy.uq.oz.au. Edisi mendatang mengulas PAM (Pluggable Authentication Modules), PGP (Pretty Good Privacy) dan Public Key Cryptography, SSL (Secure Sockets Layer), Tripwire, dan Trojan Horse. R. Kresno Aji ([email protected])
IKLAN
www.infolinux.web.id
INFOLINUX JULI 2003
73
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Dial-In Server
Membangun Linux Dial-In Server Linux dapat diakses dari jauh secara langsung lewat modem. Jika akses Internet di salah satu kantor sangat cepat, Linux dapat membagi akses Internet untuk kantor yang lain atau untuk Anda dari rumah. Ini mirip dengan ISP (Internet Service Provider) sederhana.
B
arangkali di antara kita pernah terpikir bagaimana cara membuat suatu server seperti Telkomnet Instan. Kita hanya cukup men-dial suatu nomor telepon, dan kita pun dapat langsung terhubung ke Internet. Tanpa ada biaya pendaftaran atau registrasi lainnya. Server seperti ini sering disebut dengan Dial-In Server. Pada Microsoft Windows NT 4.0, istilah seperti ini disebut Remote Access Server (RAS). Dial-In Server adalah suatu host (mesin) yang dilengkapi dengan modem dan saluran telepon, yang mengizinkan host (mesin) lain yang memiliki modem dan saluran telpon untuk menghubunginya (Introduction — http://www.swcp.com/~jgentry/ pers.html). Dari sisi user atau mesin yang menghubungi server, disebut dengan dial-out. Umumnya, dalam melakukan dial-out, user menggunakan PPP (Point to Point Protocol) agar bisa terhubung ke Internet atau pun ke suatu jaringan lokal perusahaan. Hubungan antara user dan jaringan komputer yang akan diakses dapat dilihat pada Gambar 1. Salah satu tanggung jawab network administrator adalah menyediakan fasilitas agar user dapat dengan mudah melakukan dial-out. Untuk lebih jelasnya, mari kita langsung menuju instalasi dan konfigurasi Dial-In Server.
Fasilitas yang dibutuhkan Umumnya, saat ini Internet menggunakan TCP/IP sebagai ‘bahasa’ untuk saling berkomunikasi. Untuk itu,
74
INFOLINUX JULI 2003
hal-hal yang perlu disiapkan oleh network administrator adalah: Nomor telepon yang dapat diakses. Username dan Password. Prosedur otentifikasi. IP Address dari DNS Server, diperlukan bagi user untuk menerjemahkan nama host (hostname) menjadi IP Address dan sebaliknya. Pada saat artikel ini ditulis, software yang digunakan penulis adalah: Sistem Operasi GNU/Linux Red Hat 8.0, kernel 2.4.18. mgetty+sendfax-1.0.0. pppd-2.4.1.
Instalasi dan konfigurasi Modem
Dalam dunia Linux, dikenal istilah WinModem. Modem jenis ini, umumnya berbentuk modem internal dan dibuat untuk sistem operasi Microsoft Windows. Modem jenis ini, kadangkadang tidak memerlukan driver karena sebagian driver-nya sudah terdapat pada sistem opreasi Microsoft Windows. Di Linux, beberapa jenis modem internal dapat digunakan, tapi sebagian yang lain tidak. Penulis menggunakan modem US Robotics 56K eksternal pada saat membangun server ini. Alasanya adalah modem ekternal lebih mudah dikenali oleh Linux, meskipun ada beberapa modem internal yang juga cukup mudah. Pada distribusi Red Hat, terdapat fasilitas kudzu untuk mendeteksi hardware baru, atau fasilitas harddrake pada distribusi Mandrake.
www.infolinux.web.id
Jika ternyata Anda menggunakan modem internal, Anda dapat merujuk pada alamat http://www.linmodems.org untuk mendapatkan utiliti scanmodem yang dapat membantu untuk mengetahui jenis modem yang digunakan. Alamat lain yang dapat menjadi referensi adalah http://www.linuxdoc.org/HOWTO/SerialHOWTO.html dan http:// www.linuxdoc.org/HOWTO/ModemHOWTO.html (Baca juga artikel tentang modem internal di InfoLINUX edisi ini atau edisi-edisi sebelumnya—Red).
mgetty+sendfax-1.0.0.tar.gz Software ini dibutuhkan untuk menangani komunikasi dengan modem. Saat dijalankan, umumnya melalui /etc/ inittab, getty akan berjalan di belakang (sebagai background process). Modem Anda akan idle selama itu, sampai modem tersebut menerima panggilan. Lalu getty akan menentukan jenis panggilan tersebut dan memulai proses komunikasi modem-to-modem. Ada beberapa jenis getty yang dapat digunakan untuk ini. Penulis menggunakan software mgetty+sendfax yang dapat diambil pada alamat http:// www.leo.org/~doering/mgetty/. Setelah mendapatkan file mgetty+sendfax-1.0.0.tar gz, maka langkah-langkah instalasinya adalah sebagai berikut: 1 . Salin file tersebut ke dalam direktori / usr/local/src. 2 . Ekstrak file tersebut dengan perintah: # tar zxfv mgetty+sendfax-1.0.0.tar.gz 3 . Masuk dalam direktori mgetty+sendfax-1.0.0 4 . Salin file policy.h-dist menjadi policy.h. Anda dapat mengubah halhal yang menurut Anda perlu di sini. Tetapi, konfigurasi default ini, berjalan baik pada komputer penulis. 5 . Kemudian edit file Makefile untuk menentukan lokasi instalasi, system defines dan libraries. Konfigurasi default ini juga berjalan baik pada komputer penulis. 6 . Kemudian jalankan perintah make diikuti dengan make install untuk melakukan instalasi.
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Dial-In Server
Untuk menjalankan mgetty, edit file / etc/inittab. Pada komputer penulis, modem disambungkan di /dev/ttyS0 (COM1), sehingga pada file /etc/inittab, penulis menambahkan baris ini: S0:2345:respawn:/sbin/mgetty ttyS0 -D / dev/ttyS0
alamat ftp://cs.anu.edu.au/pub/software/ ppp/ppp-2.4.1.tar.gz
Option -D memberitahukan mgetty agar hanya menerima data, bukan fax. Setelah menambahkan baris tadi, jalankan perintah init -q untuk memaksa initd membaca file /etc/inittab. Hal ini akan membuat mgetty dijalankan. Kemudian perintah berikut akan membuat semua user dapat menjalankan pppd: # chmod u+s /usr/sbin/pppd
Jika sudah terinstalasi, perintah di atas akan menunjukkan lokasi software pppd (umumnya /usr/sbin/pppd) dan Anda dapat melewati langkah berikut ini untuk langsung menuju pada konfigurasi pppd. Jika belum, maka instalasi dapat dilakukan melalui CD Linux yang Anda memiliki. Jika Anda menggunakan distribusi Red Hat, maka untuk melakukan instalasinya adalah sebagai berikut: # mount /dev/cdrom /mnt/cdrom # rpm -ivh /mnt/cdrom/RedHat/RPMS/pppd2.4.1
Agar pengguna Windows tidak mendapatkan layar login setelah koneksi dengan ppp berhasil, maka kita dapat menggunakan fasilitas AutoPPP agar mgetty dapat menjalankan ppp pada saat memulai koneksi. Untuk itu, sebelum mengompilasi mgetty, pada file Makefile, pada baris 110 tambahkan kode berikut: CFLAGS=-02 -Wall -pipe -DAUTO_PPP Kemudian simpan perubahan itu, dan kompilasilah dengan menggunakan perintah make dan make install. Sebagai catatan, pada Red Hat 8.0 penulis, pada saat mengompilasi mgetty, secara otomatis dukungan AutoPPP telah diikutsertakan. Setelah itu, pada file /etc/ mgetty+sendfax/login.config, tambahkan baris berikut: /AutoPPP/ - - /usr/sbin/pppd file /etc/ppp/ options Jika sudah ada, maka aktifkan fungsi tersebut dengan menghapus tanda pagar (#) pada awal baris tersebut. Sekarang kita dapat melanjutkan pada bagian konfigurasi pppd.
Untuk versi source, maka langkahlangkahnya adalah sebagai berikut: 1 . Salin file pppd-2.4.1.tar.gz ke dalam direktori /usr/local/src 2 . Ekstrak file tersebut: # tar zxfv pppd-2.4.1.tar.gz 3 . Masuklah dalam direktori pppd-2.4.1 # cd pppd-2.4.1 4 . Memulai proses instalasi (ada baiknya untuk membaca file README terlebih dahulu yang berada dalam direktori tersebut). # configure —prefix=/usr/local/ppp # make # make install Selain itu, kernel Linux Anda juga harus mendukung PPP. Umumnya, pada saat instalasi Linux, dukungan terhadap PPP sudah disertakan. Jika ternyata kernel yang digunakan belum mendukung PPP, maka Anda perlu
Untuk melihat apakah pada Linux Anda sudah terinstalasi pppd, gunakan perintah berikut: # whereis pppd
Gambar 1. Dial-out PPP
mengompilasi ulang kernel tersebut. Untuk langkah-langkah mengompilasi kernel, silahkan merujuk pada alamat http://www.linuxdoc.org/HOWTO/ Kernel-HOWTO.html.
Konfigurasi pppd membutuhkan informasi mengenai antarmuka serial-nya, antara lain PPP Link Control Protocol (LCP), IP Control Protocol (IPCP), dan otentifikasi. Umumnya modem menggunakan interface serial RS-232 (DOS atau MS Windows mengenali serial port ini sebagai COM). Linux mengenali device interface serial RS-232 ini seperti pada Tabel 1. File-file konfigurasi PPP terletak pada direktori /etc/ppp. Tadi kita telah mengonfigurasikan agar mgetty membaca file /etc/ppp/options. Isi file tersebut pada komputer penulis pertamatama hanyalah berisi baris: lock Kemudian penulis menambahkan baris lain sehingga menjadi seperti berikut: -detach debug asyncmap 0 modem crtscts lock require-pap refuse-chap login
Tabel 1. Device Interface Serial Linux pada PC
Pppd pppd umumnya secara otomatis sudah ikut terinstalasi pada saat menginstalasi Linux atau minimal tersedia pada distribusi Linux yang Anda gunakan. Untuk versi terbaru dapat diambil pada
Linux Device File
DOS Equivalent
IRQ
I/O Address Base
/dev/ttyS0 /dev/ttyS1 /dev/ttyS2
COM1 COM2 COM3
4 3 4
0x3f8 0x2f8 0x3e8
/dev/ttyS3
COM4
3
0x2e8
www.infolinux.web.id
INFOLINUX JULI 2003
75
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Dial-In Server
proxyarp netmask 255.0.0.0 ms-dns 10.1.1.5 Keterangan dari masing-masing opsi di atas adalah sebagai berikut: -detach berfungsi agar pppd tidak membuat background process baru debug berfungsi agar mencatat transaksi pada file /var/log/messages asyncmap 0 mengizinkan agar pppd dapat bekerja melalui koneksi telnet/rlogin modem memberitahu pppd untuk menggunakan modem control lines crtscts memberitahu pppd untuk menggunakan hardware flow control untuk mengendalikan aliran data ke serial port lock berfungsi agar tidak ada proses lain selain pppd yang dapat menggunakan device ini require-paprefuse-chap gunakan mode otentifikasi PAP (Password Authentification Protocol) dan menolak mode otentifikasi CHAP (Challenge Handshake Authentification Protocol ) login gunakan /etc/passwd sehingga tidak perlu menggunakan file /etc/ ppp/pap-secrets proxyarp tambahkan pada tabel ARP (Address Resolution Protocol) IP Address dari client dan Ethernet Address netmask memberikan nilai netmask pada NIC ms-dns lokasi dari DNS Server
terbentuk pada saat instalasi Red Hat 8.0 antara lain adalah root, bin, daemon, adm, lp, dan sync. Untuk melarang mereka agar tidak dapat melakukan dialin, maka pada file /etc/ppp/pap-secrets cukup ditambahkan baris: #user
server
★
★
root bin daemon
★
adm lp sync
★
★ ★
★ ★
secrets ““
address
-
★
-
★
★
★ ★
★
-
Setelah itu, agar PPP dapat bekerja, tentunya komputer client harus memiliki IP Address. Umumnya client tidak memiliki IP Address sendiri, sehingga PPP harus memberikan IP Address bagi client. Untuk melakukan hal itu, buatlah sebuah file baru lagi dengan nama /etc/ ppp/options.ttyS0 (jika pada server, modem disambungkan pada /dev/ttyS0 ). Berikut adalah contoh file /etc/ppp/ options.ttyS0 milik penulis: # Format : # w.x.y.z : a.b.c.d # # Dengan # w.x.y.z = IP Address dari Server Dial-In (RAS) ini. # a.b.c.d = IP Address yang akan diberikan kepada client, # jika dia berhasil login # 10.1.1.5:10.1.1.50
Jika opsi login digunakan, maka file / etc/ppp/pap-secrets tidak lagi dibutuhkan. Anda dapat menghapus file tersebut atau mengisinya dengan baris: ★ ★ “” ★
Sampai di sini, Anda sudah selesai membuat sebuah Linux Dial-In Server. Selanjutnya mari kita lakukan pengujian untuk melihat apakah server yang kita bangun dapat bekerja dengan baik.
Akan tetapi jika kita menggunakan opsi login, berarti semua user yang terdaftar pada /etc/passwd akan dapat melakukan akses untuk men-dial, kecuali jika Anda melarangnya pada file /etc/ppp/ pap-secrets. Kadang-kadang, untuk alasan keamanan, kita perlu untuk membatasi siapa saja yang memiliki akses dan yang tidak. Pada sistem penulis secara default account yang
Pengujian
76
INFOLINUX JULI 2003
Kita dapat melakukan pengujian dengan cara menjalankan pppd: $ /usr/sbin/pppd jika berhasil, saat Anda menjalankan: $ /sbin/ifconfig -a akan muncul tampilan sebagai berikut: ppp0 Link encap:Point-to-Point Protocol
www.infolinux.web.id
POINTOPOINT NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) kemudian pada file /var/log/messages akan terdapat log seperti ini: Mar 25 16:48:15 intranet pppd[4929]: pppd 2.4.1 started by LOGIN, uid 0 Mar 25 16:48:15 intranet pppd[4929]: Using interface ppp0 Mar 25 16:48:15 intranet pppd[4929]: Connect: ppp0 <—> /dev/ttyS0 Mar 25 16:48:15 intranet /etc/hotplug/ net.agent: assuming ppp0 is already up Mar 25 16:48:19 intranet ppp(pam_unix)[4929]: session opened for user pungki by LOGIN(uid=0) Mar 25 16:48:19 intranet pppd[4929]: user pungki logged in Mar 25 16:48:23 intranet pppd[4929]: found interface eth0 for proxy arp Mar 25 16:48:23 intranet pppd[4929]: local IP address 10.1.1.5 Mar 25 16:48:23 intranet pppd[4929]: remote IP address 10.1.1.50 Setelah pppd melaporkan IP Address Local dan Remote, hal ini menunjukkan bahwa koneksi PPP telah siap digunakan. Perlu dipastikan bahwa IP client (remote) harus satu subnet dengan IP Server (local). Salah satu alasan dari pembangunan Dial-In Server antara lain adalah untuk memanfaatkan resource yang tersedia. Jika pembangunan Dial-In Server ini diterapkan pada perkantoran, maka karyawan kantor tersebut dapat terhubung dengan jaringan kantor tersebut dengan cara melakukan dial-up ke kantor itu. Seandainya jaringan kantor tersebut terhubung dengan Internet, maka karyawan kantor tersebut dapat ikut menikmati layanan Internet yang tersedia di kantor. Dengan cara ini pula, System Administrator dapat melakukan administrasi sistem, secara remote. Pungki ([email protected])
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL
IKLAN
www.infolinux.web.id
INFOLINUX JULI 2003
77
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Winmodem di Linux
Menginstalasi Winmodem di Linux Ternyata, banyak modem internal yang awalnya hanya untuk Windows sudah bisa digunakan untuk Linux. Tidak seperti modem eksternal, perlu sedikit usaha untuk mengaktifkan modem internal.
W
inmodem adalah perangkat modem yang menyerahkan sebagian besar fungsi modemnya, seperti pengolahan sinyal, kontrol jalur, dan lainnya, kepada sistem operasi. Sehingga implementasi hardware-nya lebih sederhana dibanding modem biasa. Disebut Winmodem, karena modem tersebut dibuat khusus untuk sistem operasi Windows. Tentunya Anda ingin bertanya atau mungkin sudah mengetahui jawabannya, bila khusus untuk digunakan di sistem operasi Windows, bagaimana bila kita ingin menggunakan winmodem tersebut di sistem GNU/Linux? Dulu memang dukungan untuk winmodem ini sangatlah susah dicari. Bila seseorang membeli laptop yang hanya ada winmodem di dalamnya,
78
Homepage
biasanya hanya ada dua pilihan baginya, membeli modem eksternal, atau “mengoprek” sendiri driver untuk modem-nya. Namun sekarang sudah tidak lagi. Sudah banyak dukungan driver di Linux untuk winmodem ini, sehingga sudah cukup pantas bila sekarang ini winmodem juga kita sebut Linmodem!
Identifikasi modem Linmodem biasanya adalah modem internal yang terinstalasi pada sebuah komputer atau laptop, bisa juga berbentuk kartu PCMCIA. Untuk yakinnya, ada beberapa cara untuk bisa mengenali Linmodem yang anda miliki. Cara pertama, jika sistem operasi Windows masih terinstalasi pada komputer Anda, Anda bisa melihat properti modem Anda, dan melihat jenis
Linmodems
INFOLINUX JULI 2003
www.infolinux.web.id
dan merk modem Anda. Misalnya bila Anda temukan bahwa modem Anda adalah modem Intel AMR dengan codec AC’97, maka hampir bisa dipastikan bahwa itu adalah winmodem. Cara kedua adalah menggunakan utiliti lspci, isapnp, pnpdump, atau menggunakan script scanModem yang akan dijelaskan di bawah ini. Adapun daftar Linmodem yang sudah dapat bekerja dengan baik dalam sistem operasi Linux di antaranya adalah: IBM Mwave. Diketahui terdapat pada Laptop Thinkpad 600E keluaran IBM. Driver untuk linmodem ini adalah satu-satunya driver yang sudah bersifat open source dibuat langsung oleh IBM sebagai dukungannya terhadap Linux. Bila anda melakukan kompilasi kernel versi terbaru (2.4.20, misalnya), Anda akan bisa menemukan opsi modem ini. Lucent DSP Modem. Terdapat pada beragam jenis komputer. Driver yang tersedia bersifat setengah open-source dan setengah tertutup. Kode program untuk manajemen modem dan interaksi dengan kernel bersifat terbuka, namun kode program untuk DSP (Digital Signal Processor) masih bersifat tertutup dan hanya dilepas dalam bentuk objek binari. Motorola SM56 Modem. Driver untuk modem ini telah disediakan oleh Motorola, walaupun untuk saat ini hanya dukungan untuk kernel versi 2.4 yang tersedia. Telah dicoba pada Mandrake, Red Hat, dan ASPLinux dengan sukses. Smartlink AMR Modem. Adalah modem keluaran smartlink (www.smartlink.com) yang juga telah
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
TUTORIAL Winmodem di Linux
disediakan driver-nya oleh mereka untuk kernel versi 2.4. Penulis kebetulan memiliki modem Lucent AMR yang konon sampai saat ini belum ada driver Linux yang dibuat untuknya, namun dapat dibuat bekerja dengan driver untuk Smartlink AMR modem ini. Intel HaM/536ep. Telah tersedia driver dari Intel untuk kernel versi 2.2, terdapat juga driver untuk kernel versi 2.4. Conexant /Rockwell Modem. ESS Modem. PCTel Modem. Khusus ketiga jenis terakhir di atas, banyak driver yang telah dibuat untuk kernel versi 2.2 dan kernel versi 2.4. Juga telah dilaporkan dapat digunakan dengan baik di berbagai distro. 3Com Modem. Sebetulnya yang ini tidaklah sepenuhnya merupakan winmodem. Dia adalah jenis modem internal yang berbasiskan PCI dan sepenuhnya mempunyai fungsi modem. Linux rupanya juga tidak ketinggalan, sebuah driver yang telah dipaketkan dalam format paket rpm telah tersedia untuk di-download.
Semua driver untuk modem-modem tersebut bisa didapatkan di situs resmi proyek Linmodem, yaitu http:// www.linmodems.org ataupun di http:// linmodems.technion.ac.il/.
PCI, Anda bisa menggunakan utiliti lspci ataupun script scanModem yang dapat di-download dari situs linmodems.org. Script scanModem ini pada dasarnya hanyalah simplifikasi dari penggunaan utiliti lspci. Pada kesempatan kali ini, penulis akan mencoba menggambarkan cara menganalisis modem menggunakan bantuan utiliti scanModem yang notabene menggunakan utilit lspci pada sebagian besar operasinya.
Cara menganalisis Linmodem Langkah pertama, pastikan bahwa utiliti lspci sudah terinstalasi pada komputer Anda. Coba login sebagai root dan ketikkan perintah berikut ini: > lspci <enter> Bila tidak timbul pesan kesalahan yang menyatakan bahwasanya tidak ada perintah seperti itu, dan bila kemudian perintah tersebut menghasilkan tampilah kurang lebih seperti di bawah ini, berarti utiliti lspci sudah terpasang dengan baik. 00:00.0 Host bridge: Intel Corp. 82845 845 (Brookdale) Chipset Host Bridge 00:01.0 PCI bridge: Intel Corp. 82845 845 (Brookdale) Chipset AGP Bridge 00:1d.0 USB Controller: Intel Corp.
82801CA/CAM USB (Hub #1) (rev 02) 00:1d.1 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #2) (rev 02) 00:1d.2 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #3) (rev 02) — cut — Langkah berikutnya, download script scanModem dari situs linmodems.org. Perhatikan bahwa meskipun ekstensinya adalah .gz, file scanModem ini ternyata adalah file teks shell script biasa. Untuk memastikannya, silakan ketik perintah berikut: > cat scanModem.gz <enter> Kalau dia menghasilkan karakterkarakter yang terbaca, berarti dia adalah file teks biasa. Tapi bila menghasilkan karakter-karakter aneh, mungkin itu berarti dia memang file gunzip. Terakhir penulis cek, dia adalah file teks biasa. Silakan diperiksa kembali. Bila sudah mendapatkan file scriptnya, baik itu langsung, ataupun melalui gunzip terlebih dahulu, silakan dilakukan perubahan mode file access, dengan cara: > chmod 755 scanModem <enter> Kemudian jalankan file scanModem ini. Walaupun script ini bisa dijalankan
Bagaimana bila Anda sudah terlanjur menggunakan semua partisi yang ada untuk menginstalasi sistem GNU/Linux, dan telah menghapus semua sistem operasi lainnya yang mungkin pernah ada di komputer Anda tersebut? Jangan khawatir, GNU/Linux dilengkapi dengan utiliti-utiliti yang lengkap dan sangat berguna untuk mendeteksi perangkat apa saja yang terdapat di komputer Anda. Untuk Linmodem yang menggunakan bus ISA, Anda bisa memanfaatkan isapnptools yang menyediakan beragam utiliti seperti pnpdump atau isapnp untuk melihat konfigurasi hardware ISA Anda. Sedangkan untuk modem berbasis
Cara mendeteksi Linmodem di Linux
Mendeteksi WinModem dengan KPPP
www.infolinux.web.id
INFOLINUX JULI 2003
79
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Mendeteksi Winmodem dengan Wvdialconf
sebagai user biasa, ada baiknya bila sebelumnya Anda login dulu sebagai root. Namun bila Anda login sebagai root, harap berhati-hati atas apa yang anda kerjakan. > ./scanModem <enter> Script tersebut akan menghasilkan direktori /tmp/modem. Dalam direktori tersebut seharusnya sekarang sudah ada beberapa buah file: ModemData.txt, ModemData.txt.2, tmpfile, tmpfile.1, dan tmpfile.3. Dua file pertama, ModemData.txt tersebut pada intinya mengandung informasi teknis dari PCI device yang diduga scanModem sebagai Linmodem yang kita miliki. Sedangkan tmpfile adalah file-file yang digunakan oleh scanModem sebagai tempat penyimpanan sementara dari data yang dihasilkan untuk analisis lebih lanjut. Mari kita coba pelajari bersama cara kerja scanModem berdasarkan hasil yang terdapat pada file-file tersebut. Pertama, file ModemData.txt: Kali pertama dilakukan pemeriksaan PCI dengan menggunakan utiliti lspci. Kemudian dilakukan analisis, apakah terdapat Modem di antara PCI device yang terdata. contoh data: 00:1f.5 Multimedia audio controller: Intel Corp. 82801CA/CAM AC’97 Audio (rev 02) 00:1f.6 Modem: Intel Corp. 82801CA/ CAM AC’97 Modem (rev 02)
80
INFOLINUX JULI 2003
Winmodem di Linux
Sebagian daftar Winmodem
Bila terdapat Modem PCI, maka perintah lspci dijalankan kembali dengan lebih fokus kepada alamat dari device Modem tersebut. Pada laptop penulis (IBM T30), alamat tersebut adalah: 00:1f.6. Contoh data: 00:1f.6 Class 0703: 8086:2486 (rev 02) Subsystem 1014:0223 00:1f.6 Modem: Intel Corp. 82801CA/ CAM AC’97 Modem (rev 02) (prog-if 00 [Generic]) Subsystem: IBM ThinkPad A/T/X Series Flags: bus master, medium devsel, latency 0, IRQ 11 I/O ports at 2400 [size=256] I/O ports at 2000 [size=128] Kemudian subsystem ID dan atau Vendor ID dari Modem tersebut dicocokkan dengan database PCI yang dipunyai oleh scanModem. Pada laptop penulis Vendor ID yang ditemukan adalah: 8086:2486 dan subsystem vendor ID adalah: 1014:0223. Vendor ID tersebut dikenali sebagai Intel AMR (Audio Modem Riser) dengan kemungkinan variasi Modem Intel HaM (Host assisted Modem). Sedangkan subsystem Vendor ID dikenali sebagai IBM AMR Modem yang dimanufaktur oleh Agere, Inc. Dikenali juga sebagai Lucent SoftModem. Selanjutnya scanModem memberikan informasi detail mengenai kemungkinan-kemungkinan di mana saja dapat menemukan driver dari modem-modem
www.infolinux.web.id
tersebut. Dan selanjutnya data konfigurasi modul modem tersebut. Selanjutnya kita menganalisis file ModemData.txt.2 lebih mendalam dengan memeriksa apa jenis codec (coder-decoder audio) yang digunakan oleh modem tersebut. Misalnya ditemukan bahwa modem tersebut menggunakan ac97_codec. Namun, ternyata pasangan Vendor ID 2486 dengan Subsystem ID 1014 belum terdapat pada daftar driver Modem yang dimiliki oleh scanModem. Sedangkan driver Lucent Modem yang sudah ada tidak dapat digunakan untuk modem tersebut karena menggunakan algoritma DSP (Digital Signal Processing) untuk proses pembangkitan audionya. Walaupun sedikit kecewa karena mengetahui bahwa driver untuk modem ini belum ada. Penulis tidak langsung putus asa, penulis bergabung di mailing list [email protected] dan bertanya di sana. Kemudian penulis mendapat jawaban agar mencoba driver Modem AMR dari SmartLink. Setelah men-download driver tersebut, lalu melakukan kompilasi dan menginstalasinya, ternyata driver modem tersebut dapat bekerja dengan baik. Penulis sudah mencoba melakukan koneksi ke telkomnet menggunakan pppd script dengan hasil memuaskan. Ada juga seorang teman yang menyatakan bisa melakukan koneksi dengan mudahnya menggunakan kppp.
TUTORIAL
Ulasan CD | Klinik | Ulasan | Linux Ready | Utama | Bisnis | Feature | Tutorial
Winmodem di Linux
Namun sebelum terlalu senang, ada sedikit catatan yang perlu diperhatikan. Ketika melakukan kompilasi driver tersebut, terdapat informasi tainted kernel. Ini dikarenakan driver Modem tersebut menggunakan kode yang tidak bersifat open source dan atau free software. Jadi bagi para open source maniak harap hati-hati bila menggunakan driver ini. Memang sampai saat ini penggunaanya dibebaskan, namun yang disediakan hanya binarinya saja. Ketika dilakukan modprobe/insmod terdapat informasi bahwa driver ini tidak menemukan modem yang cocok. Namun pesan ini dapat kita abaikan, karena ternyata driver dari SmartLink ini bekerja dengan cukup baik untuk koneksi dial-out dan ppp biasa. Driver ini mengenali modem di device /dev/ttySL0 bukan di /dev/ttyS0 atau semacamnya. Walaupun bekerja dengan baik untuk koneksi dial-out dan ppp biasa,
sampai saat ini penulis belum mampu membuatnya bekerja dengan baik untuk koneksi callback. Semua HOWTO dan petunjuk yang penulis dapatkan mengenai callback telah dicoba dan belum berhasil. Jika di antara pembaca ada yang menemukan caranya, penulis akan sangat berterimakasih bila dapat mendiskusikannya bersama. Silakan cek ke situs http:// www.linmodems.org ataupun http:// linmodems.technion.ac.il untuk keterangan lebih lanjut. Silakan download script scanModem yang ada, kemudian coba dijalankan. Mudahmudahan anda dapat menemukan jenis Linmodem yang Anda miliki. Yang perlu Anda lakukan berikutnya hanyalah men-download driver-nya, melakukan kompilasi sesuai dengan kernel yang Anda miliki (ingat untuk itu, Anda perlu mempunyai kode sumber dari versi kernel Linux Anda saat ini).
Bila Anda tidak punya koneksi Internet yang baik ataupun Anda menemui masalah, silakan hubungi penulis di alamat e-mail: arief_mulya@ yahoo.com. Penulis akan dengan senang hati membantu mendiskusikan segala masalah yang ditemui ataupun mengirimkan data dan driver yang dibutuhkan. Akhir kata penulis hanya ingin menyampaikan, bahwa selalu ada jawaban untuk segala masalah yang kita miliki. Di dunia Linux, hal ini juga berlaku, asalkan kita mau terus belajar dan mencari. Jangan malu untuk bertanya, sekalipun mungkin pertanyaan kita terdengar seperti sebuah pertanyaan bodoh. Percaya deh, kita dapat belajar banyak hal darinya. Dan untuk dunia open source, kalaupun kita tidak bisa menemukan jawaban yang cocok, selalu ada pilihan untuk membuat sendiri kodenya. Jangan pernah menyerah, itu saja. Arief Mulya Utama ([email protected])
Lembaga Pendidikan Komputer Nurul Fikri www.nurulfikri.com
[email protected]
Program Profesi 200 Jam Linux Server Development (LSD) Materi: Linux Fundamental (Linux Basic, X Window, Linux SysAdmin, Networking) Internet Shell Programming Advanced System Administration Security Advanced Networking HTML, CSS & Javascript PHP & MySQL (Linux Complete, Security, Web & Database)
Angkatan ke-V: 28/29 Juni 2003
Sabtu atau Minggu: 08.00 s.d. 17.30 WIB
Angkatan ke-VI: 7 Juli 2003
Senin s.d. Kamis: 08.00 s.d. 12.00 WIB
Layanan Migrasi ke Linux Regular & In House Training Server (PDC, Database, File, Mail, Proxy, Web) Security & Networking Toko-toko komputer untuk Instalasi Linux Hubungi: Jl. Margonda Raya No. 522 - UI Depok, Telp. (021) 7874223/4 Fax. 7874224 Jl. Mampang Prapatan X/4 Jakarta Selatan,INFO Telp. (021) 7975235, LINUX JULI 2003 7947115 www.infolinux.web.id 81 Jl. Beringin Raya 14a, Perumnas I Tangerang, Telp. (021) 5589884