Friday, December 30, 2005

Kerugian = Investasi Kebablasan

Tujuan akhir adalah titik yang harus selalu kita perhatikan. Kadangkala untuk mencapai tujuan akhir kita memang harus berkorban. Tetapi apakah pengorbanan yang kita keluarkan, cukup dapat dipertanggung-jawabkan dengan keberhasilan yang kita harapkan. Seringkali saya pergi ke mall hanya untuk beli odol, tetapi pulang bawa odol, kertas, pulpen, buku, susu, buah. Seringkali saya pergi ke toko buku hanya untuk beli satu buku saku, tetapi pulang dengan membawa pula, buku setebal 300 halaman.

Terakhir saya coba untuk mendapatkan sebuah software super canggih dalam project management, yaitu Microsoft Project. Saya berharap semua project yang kami jalankan akan lebih efektif, efisien dan tepat waktu. Begitu banyak fitur yang perlu saya pelajari. Ditambah lagi, saya bukan orang dari background management, yang sama sekali buta dengan istilah-istilah management yang banyak muncul di Ms Project. Akhirnya waktu saya habis untuk belajar Ms Project, dan juga mencoba merencanakan skedul dengan Ms Project. Padahal saya hanya perlu waktu yang jauh lebih sedikit dengan tool yang senantiasan menemani saya, Excel. Saya hanya perlu tetapkan tugas, jumlah waktu yang tersedia, jumlah waktu yang telah dipakai, dan batas waktu. Akhirnya sekali lagi saya kembali kepada Excel.

Kesalahan saya adalah, saya kurang begitu memperhatikan tujuan akhir. Tujuan akhirnya adalah agar saya dapat membuat skedul yang efisien, bukan bagaimana memakai Ms Project. Oh iya satu hal juga, bahwa saya pingin juga agar skedul itu tampil cantik. Tapi siapa peduli? toh yang melihat juga saya-saya juga, paling-paling boss dan rekan-rekan lingkup kecil. Toh dengan tampilan seadanya pun, esensi tidak akan hilang. Apalagi pekerjaan di bidang IT sangat amat fleksibel, terutama proses implementasi (coding). Tidak memerlukan dependency yang begitu ketat.

Open Source 2005

Bussiness Week Online, melaporkan progress report Open Source di tahun 2005, dalam artikel A Waterhed for Open Source
Mereka menulis, "In 2005, the software movement finally gained traction in Corporate America and saw a new influx of VC cash. How will 2006 shape up?"

Perdebatan panjang mengenai artikel ini dapat dilihat di Slashdot.

Bagaimana dengan Indonesia? Meskipun berkali-kali Ristek mempromosikan "Indonesia, Go Open Source!", tetapi tidak terlihat gebrakan-gebrakan nyata di bawah. Perhatian terhadap developer-developer open-source belum memadai, dibandingkan dengan perhatian terhadap developer software komersil. Apalagi mengharapkan bantuan dana terhadap pengembangan open-source, masih jauh panggang daripada api.

Memang antara kebutuhan, keinginan dan realitas saling bertabrakan. Kebutuhan untuk menggunakan software murah, keinginan untuk mengembangkan sendiri software dalam negeri, dengan semangat cinta produksi dalam negeri, bertabrakan dengan realitas, bahwa semua orang sudah kadung jatuh cinta dengan software komersil, meski itu cuman bajakan.
Saya kira ini memang strategi microsoft dan pemerintah untuk membiarkan rakyat membajak, agar nanti ada rasa cinta dan butuh kepada software tsb. Setelah semua cinta dan butuh, maka mulailah digalakkan perang terhadap para pembajak, dan pemakai bajakan. Karena sudah kadung cinta, maka mau gak mau kita harus pakai dan bayar. Susah untuk keluar dari jerat cinta ini.

Monday, December 26, 2005

Sniffing vs Spoofing

Ada 2 istilah dalam sekuriti internet yang sering membingungkan orang. Sniffing, Spoofing.

Sniffing adalah adalah kegiatan menyadap dan/atau menginspeksi paket data menggunakan sniffer software atau hardware di internet. Kegiatan ini sering disebut sebagai serangan sekuriti pasif dengan cara membaca data yang berkeliaran di internet, dan memfilter khusus untuk host tujuan tertentu. Jadi kegiatan ini tidak melakukan apa-apa terhadap data, tidak merubah dan tidak memanipulasi. Cukup menyadap. Ia digunakan untuk mendapatkan informasi seperti password, data-data rahasia dan lainnya. Sering digunakan para analyst networking, baik dari kalangan developer maupun network administrator, untuk melakukan troubleshooting.

Spoofing adalah aksi pemalsuan identitas. IP Spoofing merupakan tehnik yang digunakan bagi penyelundup untuk mengakses sebuah network dengan mengirimkan paket/pesan dari sebuah komputer yang mengindikasikan bahwa paket/pesan tersebut berasal dari host yang terpercaya. Untuk melakukan aksi ini para penyelundup menggunakan tehnik yang bermacam-macam, dan spoofing sendiri merupakan salah satu bagian dari proses penyerangan.

Wednesday, December 14, 2005

Networking Segar

Ciri khas orang Jepang. Begitulah yang saya tangkap dari situs segar tentang networking ini. Materi-materi networking dibawakan dalam format percakapan antara seorang dosen fakultas Ilmu Komputer dan satu-satunya mahasiswa kelas seminarnya. Lucu, kocak dan segar. Sayang berbahasa Jepang.

3 Minutes Networking
http://www5e.biglobe.ne.jp/~aji/3min/index.html

30 Minutes Networking
http://www5e.biglobe.ne.jp/~aji/30min/index.html

Bedah Kernel Linux: Booting

Bagaimana sebuah sistem operasi mulai berjalan? Telah menjadi pertanyaan banyak pemula komputer. Bagaimana sebuah software dapat mengoperasikan seluruh perangkat keras, kemudian menjalankan software-software lain di atasnya. Program pengolah kata, web browser, atau sekedar kalkulator, tidak akan dapat berjalan tanpa sebuah sistem operasi. Sistem operasi merupakan sebuah penghubung antara perangkat keras dan perangkat lunak aplikasi. Pada saat pengguna menekan tombol Control dan S atau dengan menggunakan menu memilih File | Save maka dokumen yang sedang kita edit akan disimpan ke hardisk, tetapi bagaimana sistem operasi menggerakan jarum pembaca hardisk agar melakukan pekerjaan perekaman ke hardisk, ini merupakan suatu misteri besar bagi sebagian besar pengguna komputer. Proses dari pengguna mengetikkan command sampai jarum pembaca hardisk menggoreskan magnet ke atas piringan hardisk, merupakan proses berantai yang panjang.

Artikel ini tidak akan membahas secara panjang lebar seluruh proses dan mekanisme sebuah sistem operasi, sebab pembahasan seperti ini akan menghabiskan ratusan halaman, atau lebih dari 2 semester di ruangan kelas  Tetapi saya cukup akan membahas tahapan paling awal bagaimana sistem operasi mulai bekerja. Tentu saja setelah komputer melakukan POST.

Saya memilih Linux sebagai pilihan karena sangat open terbuka, tersedia seluruh source-code di belantara internet. Buku-buku berkaitan dengan bagaimana secara internal Linux bekerja juga telah banyak beredar. Sehingga Anda yang ingin lebih dalam mempelajarinya dapat dengan mudah tanya mbah guugel mendapatkan informasi. Namun, saya akui bahwa informasi yang cukup mendalam tentang masalah ini masih sangat sedikit, apalagi yang berbahasa Indonesia. Inilah yang memotivasi saya untuk menulis artikel ini.

Boot-up dengan LILO

Dokumen-dokumen yang menjelaskan bagaimana proses sejak tombol ON atau RESET komputer ditekan, sampai Linux mulai berjalan, telah banyak kita jumpai seperti yang tersebut di referensi. Tetapi penjelasan secara detail isi dari source-code sangat amat jarang dijumpai.

Sebagai bahan pembahasan kita, saya memakai LILO yang telah terkenal dipakai oleh banyak distro.

Bagian source-code proses bootup sangat tergantung kepada jenis hardware, ukurannya juga sangat terbatas, dan ditulis dengan bahasa assembly. Artikel ini mengambil contoh source-code untuk PC compatible (intel 386), karena processsor ini memiliki arsitektur yang relatif lebih sederhana di antara sekian banyak prosesor intel. Juga memiliki kompatibilitas dengan prosesor-prosesor terbaru. Sehingga memudahkan kita belajar.

Pada komputer PC kompatibel, setelah RESET, BIOS dijalankan dan LILO menggunakan BIOS tersebut untuk bekerja.

Bab berikut ini membahas bagian proses bootup LILO pada source-code “first.S” dan ”second.S”

Boot Sector

Boot Sector pada suatu disk adalah selalu sektor pertama pada track pertama dari head pertama suatu disk. Ketika komputer dinyalakan (tombol ON) atau direset, BIOS akan mulai berjalan dan melakukan POST (Power On Self Test, test yang dilakukan komputer kepada dirinya sendiri sesaat setelah listrik masuk). BIOS kemudian menginisialisasi data-datanya, kemudian mencari boot sector yang valid. Pertama ia akan mencari di drive A:, kemudian di C:. Jika tidak diketemukannya maka interrupt 18H akan terpanggil, dimana pada komputer PC IBM orisinal, akan menjalankan ROM BASIC. Sebuah boot sector yang valid adalah boot sector yang memiliki nilai “0AA55h” pada offset 510

Ketika BIOS menemukan boot sector yang valid, ia akan membaca sektor tersebut (sebesar 512 Byte) dari disk dan kemudian menuliskannya di memory pada alamat ”0x7C00” kemudian ia akan jump ke alamat ”0x7C00” tersebut dan kode boot sector ini akan menjalankan kontrol komputer selanjutnya.

Mekanisme Pemuatan Kernel oleh LILO

Setiap program yang akan dijalankan oleh komputer harus terlebih dahulu diload atau dipanggil serta dimuat dimemory oleh processor. Linux, sebagaimana sebagian besar sistem operasi, memiliki kernel, yaitu bagian inti dari sistem operasi. Kernel mengatur semua proses penting di dalam sistem operasi. Tanggung-jawab pertama LILO agar Linux dapat berjalan diatas komputer, tentu saja memerintahkan processor untuk memuat kernel Linux ke memori utama.

LILO merupakan singkatan dari Linux Loader, yaitu sebuah program yang pekerjaannya hanya memuat/me-load Linux. Untuk memudahkan kita membaca source-code-nya, kita perlu memahami urutan pekerjaan yang dilakukannya. Di bawah ini adalah urutan pekerjaan secara global yang dilakukan oleh LILO.

1. Bila PC direset, BIOS firmware(software yang diembedkan ke dalam hardware) akan tereksekusi.
2. BIOS melakukan setting awal (inisialisasi)
3. BIOS membaca primary-boot-loader dari sektor pertama di hardisk, kemudian meletakannya (menuliskannya) di memory dengan alamat ”0x7C00”. Namun Multi Boot Loader seperti System Commander, membaca primary-boot-loader di sektor pertama dari partisi Linux.
4. Boot Loader tersebut adalah merupakan salah satu bagian dari LILO, berukuran 512 Byte, yang langsung di-copy ke memory “0x9A000”. Kemudian program akan menjalankan kode di memory “0x9A000” tersebut, dan menset ujung kepala stack menjadi “0x9B000”.
5. Menampilkan “L”
6. Kemudian Secondary Loader sebesar 8 sektor di tulis ke “0x9B000”
7. Bilamana terjadi kegagalan pembacaan maka menampilkan 2 digit kode error dan mencoba kembali proses pembacaan tersebut.
8. Jika berhasil, menampilkan “I”
9. Jump ke Secondary Boot Loader di “0x9B000”.
10. Jika parameter booting diberikan oleh pengguna, maka dilakukan setting port serial dan menuliskan “LI” di port serial tersebut.
11. Secondary Boot Loader memeriksa ujung kepala data, dan bila diketemukan error menampilkan secara terus menerus “?”.
12. Menampilkan “L”
13. Membaca descriptor-table dengan ukuran 2 sektor dari file /boot/map, dan menuliskannya di “0x9D200”. Berikutnya adalah menghitung checksum, dan jika error menampilkan “-” dan berhenti.
14. Membaca tabel konversi keyboard sebesar 1 sektor, dan menuliskannya di “0x9D800”
15. Membaca perintah-perintah command-line default sebesar 1 sektor, dan menuliskannya di “0x9D600”
16. Bila default command-line dalam keadaan enable, maka magic-number dari blok ini yang berukuran 2 Byte, diubah menjadi Membaca tabel konversi keyboard sebesar 1 sektor, dan menuliskannya di “0x6B6D”, dan meng-overwrite sektor asalnya.
17. Menampilkan “0”
18. Jika prompt diset maka akan masuk ke dalam mode interaktif.
19. Ganti baris, dan menampilkan “boot:”
20. Menunggu keyboard ditekan. Bila tidak ada input, tunggu timeout.
21. Boot image untuk startup dipilih. Secara default yang akan dipilih adalah image pertama di dalam lilo.conf.
22. “Loading ” ditampilkan.
23. Bila ukuran file dari RAM disk telah ditentukan maka tabel MAP untuk file ini akan dibaca.
24. Sesuai dengan tabel MAP yang terpilih di atas, maka dibacalah file RAM disk (initrd) dan ditulis pada extended memory (alamat setelah ”0x100000”)
25. Selanjutnya, tabel MAP dari kernel dibaca
26. Sesuai dengan tabel MAP dari kernel tersebut, maka pertama-tama boot sector dari kernel yang asli dan ditulis di alamat ”0x90000”
27. Selanjutnya program setup dari kernel ditulis di alamat “0x90200”
28. Kemudian badan kernel (vmlinuz) ditulis di alamat “0x10000”. Namun dengan catatan bahwa bila kernel dikompilasi supaya ditulis di alamat upper maka badan kernel tersebut akan ditulis pada alamat setelah “0x100000”
29. Akhirnya dengan jump ke alamat “0x90200” maka kontrol berpindah kepada program setup.

Demikianlah gambaran global dari proses booting. Kita akan membahas lebih detail proses-proses tersebut dengan cara membahas satu persatu baris yang ada di 2 file awal dari proses booting yaitu file “first.S” dan ”second.S”

Referensi

[1] Linux Kernel 2.4 Internals, http://www.faqs.org/docs/kernel_2_4/lki.html#toc1
[2] LILO generic boot loader for Linux, Ver.20: User’s Guide, Wener Almesberger
[3] LILO generic boot loader for Linux, Ver.20: Technical overview, Wener Almesberger