Membangun Driver Linux Jakarta, 30 Oktober 2008 Andika Triwidada < andika @ gmail.com > To insert this slide into your presentation Save this template as a presentation (.ppt file) on your computer. Open the presentation that will contain the image slide. On the Slides tab, place your insertion point after the slide that will precede the image slide. (Make sure you don't select a slide. Your insertion point should be between the slides.) On the Insert menu, click Slides from Files. In the Slide Finder dialog box, click the Find Presentation tab. Click Browse, locate and select the presentation that contains the image slide, and then click Open. In the Slides from Files dialog box, select the image slide. Select the Keep source formatting check box. If you do not select this check box, the copied slide will inherit the design of the slide that precedes it in the presentation. Click Insert. Click Close.
Mengapa Linux? OSS paling populer Distribusi dalam bentuk distro Semua distro memiliki kesamaan paling tinggi pada tingkat kernel Banyak distro yang memelihara kernel masing- masing (kernel vanilla + patch spesifik distro)
Mengapa Driver Linux? Fun Profit Scratch an itch Karena saya bisa! :D
Apakah Harus di Kernel? NDISwrapper untuk berbagai driver jaringan Userspace driver FUSE (Filesystem in USErspace) NTFS, ZFS User Mode SCSI, User Mode USB, User Mode I2C
Apakah Harus Menulis Driver? First line support: basis data driver vs hardware vs distro Second line: “porting” driver ke kernel spesifik distro Third line: membangun driver baru
1 - Basis Data Driver Distro apa yang akan didukung? Ada distro yang berorientasi ke server, ke desktop, ke laptop, dan ke appliance Hardware apa yang akan didukung? Apakah setiap hardware yang didukung akan didukung juga pada setiap distro? ... search
2 - Porting antar Distro Sisi kernel Versi kernel, konfigurasi kernel, patch Sisi userspace Packaging
3 – Buat Driver Baru SDM? Mari kita siapkan bersama! Prerequisite: C programming Bahasa Inggris tulis Perorangan vs tim?
Strategi Pengembangan Mulai dari hardware-less, misal ROT-13 driver atau Caesar cipher driver Pilih satu hardware, pilih versi kernel, pilih distro Implementasi paralel & independen (?) oleh beberapa grup Mentoring
Checklist Identifikasi fungsionalitas perangkat dan tekonologi interface Cari data sheet, pahami model pemrograman registernya Cari driver serupa di kernel Bila ditemukan yang serupa, cari perbedaan tepatnya Bila mulai dari scratch, luangkan cukup waktu untuk merancang driver dan struktur datanya Pakai tool software dan hardware yang memadai
C#1 Hampir semua driver memiliki layer inti yang menyediakan layanan dan layer abstraksi yang membungkus perbedaan detil hardware Driver perlu berinteraksi dengan komponen kernel lain Modem: UART, tty, line discipline Mouse: input event ...
C#3 sound/drivers/dummy.c drivers/usb/usb-skeleton.c drivers/net/pci-skeleton.c drivers/video/skeletonfb.c
Masalah Lain API kernel “selalu” berubah Dokumentasi dari vendor hardware tidak selalu tersedia Volume mail LKML luar biasa Bahasa di LKML sangat “lugas”
Lingkungan Pengembangan Virtualisasi bila mungkin, tapi tanpa akses ke hardware Virtualbox UML (User-mode Linux) Cross reference tool
Masalah Firmware Beberapa hardware tidak bisa berjalan hanya dengan 'sekedar' driver Firmware mungkin juga memiliki bug
Masalah Modem Winmodem tidak memiliki DSP fungsi DSP digantikan oleh software, agar harga hardware bisa dipangkas fungsi interfacing/konversi A/D dan D/A digabung dengan hardware sound driver perlu dijalankan pada prioritas tinggi, real-time apakah ada implementasi software open-source DSP untuk 28k, 56, V.90?
Masalah Dokumentasi Ketersediaan NDA khusus
Reverse Engineering Mengamati perilaku device driver yang telah ada pada OS lain Case study: USB device usbsnoop CIFS
French Cafe http://samba.org/ftp/tridge/misc/french_cafe.txt Dokumentasi publik French Cafe Imagine you wanted to learn French, and there were no books, courses etc available to teach you. You might decide to learn by flying to France and sitting in a French Cafe and just listening to the conversations around you. You take copious notes on what the customers say to the waiter and what food arrives. That way you eventually learn the words for "bread", "coffee" etc. Protocol Scanner Differential
Acuan Kernelnewbies http://kernelnewbies.org/, Kernel Janitor http://janitor.kernelnewbies.org/ /usr/src/linux-x.y.z LKML http://www.tux.org/lkml/
Buku Essential Linux Device Drivers, Sreekrishnan, 2008 Understanding the Linux Kernel, 3rd ed., Bovet dan Cesati, 2005 Linux Kernel Development, 2nd ed., Robert Love, 2005