Kerneld mini-HOWTO <author> <url url="mailto:storner@osiris.ping.dk" name="Henrik Storner (storner@osiris.ping.dk)"> Diterjemahkan oleh: <url url="mailto:jimmy@padang.wasantara.net.id" name="Jimmy Yusandra"> </author> <date>Version 1.7, last updated: July 19, 1997 (Terj. 16 Desember 1998) <toc> <sect>Abstrak <P>Dokumen ini menjelaskan bagaimana cara untuk menggunakan fungsi kerneld di kernel Linux. Ini menerangkan : <itemize> <item>Apa itu kerneld <item>Mengapa penulis ingin menggunakannya <item>Dimana mendapatkan bagian-bagian yang dibutuhkan <item>Bagaimana men-setup-nya <item>Bagaimana memberitahu kerneld tentang <em/modules/ yang tidak dikenalnya <item>Bagaimana mengintip kerneld ( bermanfaat dalam melakukan setup). <item>Penggunaan khusus kerneld <item>Masalah umum dan kejanggalan </itemize> <P>Rilis terbaru dari dokumen ini dapat diperoleh di <url name="kerneld-mini-HOWTO.html" url="http://eolicom.olicom.dk/~storner/kerneld-mini-HOWTO.html">. Diantara rilis dari mini-HOWTO ini dapat diperoleh updates di daftar perubahan yang belum terstruktur di <url name="kern.html" url="http://eolicom.olicom.dk/~storner/kern.html"> <P>Versi yang telah ditranslate dari dokumen ini dapat diperoleh di <url name="ID-Kerneld-Mini-HOWTO" url="http://ldp.linux.or.id/HOWTO/mini/other-formats/html/ID-Kerneld-Mini-HOWTO.html">. <sect>Kredit <P>Jika Anda menemukan hal-hal yang salah didalam dokumen ini, silahkan kirimkan catatan tentang hal itu. Orang-orang berikut ini telah memberikan kontribusi atas mini-HOWTO ini dalam beberapa hal: <itemize> <item>Bjorn Ekwall <bj0rn@blox.se> <item>Ben Galliart <bgallia@luc.edu> <item>Cedric Tefft <cedric@earthling.net> <item>Brian Miller <bmiller@netspace.net.au> <item>James C. Tsiao <jtsiao@madoka.jpl.nasa.gov> </itemize> <P>Penghargaan yang sebesarnya atas perhatian dan anjuran yang telah dikirimkan oleh pembaca mini-HOWTO ini. <sect><label id="Pendahuluan">Apakah Kerneld itu? <P>kerneld adalah kelebihan yang diperkenalkan selama pengembangan kernel 1.3 oleh <url url="mailto:bj0rn@blox.se" name="Bjorn Ekwall">. Kerneld dimasukan ke dalam seluruh kernel 2.0 dan 2. Ini membuat <em/"modules"/ - contohnya <em/device drivers, network drivers, filesystems/ - untuk dapat di<em/ load/ / secara otomatis ketika dibutuhkan, daripada melakukannya secara manual dengan <tt/modprobe/ atau <tt/insmod/. <P>Untuk aspek yang lebih mengagumkan, meskipun (belum ?) terintegrasi dengan kernel standar: <itemize> <item>Dapat di<em/setup/ untuk menjalankan program pemakai daripada <em/screen blanker default/, sehingga memudahkan Anda menggunakan program apapun sebagai <em/screen-saver/. <item>Seperti juga dukungan <em/screen-blanker/, Anda juga dapat mengubah <em/"beep"/ konsol standar dengan sesuatu yang benar-benar berbeda . . </itemize> <P>Kerneld terdiri dari dua bagian yang terpisah: <itemize> <item>dukungan dalam kernel linux untuk pengiriman permintaan kepada <em/daemon/ yang dibutuhkan oleh <em/module/ untuk tugas tertentu. <item><em/User-level/ daemon yang dapat menentukan <em/modules/ apa yang harus di<em/ load/ / untuk memenuhi permintaan dari kernel. </itemize> <P>kedua bagian harus jalan agar kerneld dapat berfungsi - tidak cukup hanya satu atau yang lainnya yang di setup. <sect><label id="Mengapa">Untuk apa menggunakan kerneld? <P>Ada beberapa alasan yang bagus untuk menggunakan kerneld. Berikut ini yang akan penulis sebutkan adalah alasan penulis sendiri - yang lain mungkin ingin menggunakan alasan lainnya. <itemize> <item>Jika Anda harus membuat kernel untuk berbagai sistem yang hanya sedikit berbeda - jenis <em/network card/ yang berbeda, sebagai contohnya - kemudian Anda bisa membangun kernel tunggal dan beberapa <em/modules/, daripada harus membangun satu kernel untuk setiap sistem. <item><em/modules/ lebih mudah untuk di test oleh <em/developer/ - tidak perlu <em/reboot/ sistem untuk <em/ load/ / dan <em/un<em/load/ driver/. (Ini berlaku untuk seluruh <em/modules/, tidak hanya untuk yang di<em/ load/ / kerneld. <item><em/Modules/ mengurangi penggunaan memori oleh kernel, artinya Anda punya lebih banyak memori yang tersedia untuk aplikasi. Penggunaan memori oleh kernel *TIDAK PERNAH* di<em/swap/, sehingga jika digunakan memori 100Kb dari driver-driver yang tidak digunakan yang di<em/compile/ kedalam kernel, ini merupakan pemborosan RAM. <item>Beberapa peralatan yang penulis gunakan -- misalnya <em/ftape floppy-tape driver/, atau iBCS -- hanya tersedia sebagai <em/modules/, tapi penulis tidak ingin berurusan dengan proses <em/ load/ / dan <em/un<em/load/ / ketika tidak membutuhkannya. <item>Orang-orang membuat distribusi linux tidak perlu membangun 284 boot image yang berbeda - setiap pemakai me<em/ load/ / driver yang ia butuhkan hanya untuk hardwarenya. Ini digunakan, contohnya oleh <em/RedHat 4.0/ didalam installasinya. </itemize> <P>Tentu saja, juga ada alasan mengapa tidak ingin untuk menggunakannya - Anda mungkin lebih suka untuk hanya memiliki satu file <em/image/ kernel dengan seluruh <em/driver/ di dalamnya. Dalam kasus ini, Anda membaca dokumen yang salah. <sect><label id="Dimana">Bagaimana cara memperoleh kerneld ? <P>Dukungan dalam linux kernel telah diperkenalkan dengan linux 1.3.57. Jika Anda memiliki kernel yang lebih lama, silahkan untuk meng<em/upgrade/nya jika ingin memperoleh dukungan atas kerneld. Seluruh ftp site linux utama memiliki <em/kernel sources/ - penulis merekomendasikan agar meng<em/upgrade/ ke rilis kernel yang stabil terbaru, 2.0 , sekarang berada pada patch level 29: <itemize> <item><url url="ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0" name="ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0"> <item><url url="ftp://tsx-11.mit.edu/pub/linux/sources/system/v2.0" name="ftp://tsx-11.mit.edu/pub/linux/sources/system/v2.0"> <item><url url="ftp://ftp.funet.fi/pub/OS/Linux/PEOPLE/Linus/v2.0" name="ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/v2.0"> </itemize> <P><em/User-level daemon/ dimasukkan dalam paket modules-1.2.8 dan dengan paket modules-2.0 yang lebih baru. Ini normalnya tersedia dari tempat yang sama dengan <em/kernel sources/, tapi lokasi resminya: <itemize> <item><url url="ftp://sunsite.unc.edu/pub/Linux/kernel/modules-2.0.0.tar.gz" name="ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0/modules-2.0.0.tar.gz"> <item><url url="ftp://tsx-11.mit.edu/pub/linux/sources/sbin/" name="ftp://tsx-11.mit.edu/pub/linux/sources/sbin/modules-2.0.0.tar.gz"> <item><url url="ftp://ftp.funet.fi/pub/OS/Linux/tools/" name="ftp://ftp.funet.fi/pub/Linux/tools/modules-2.0.0.tar.gz"> </itemize> <P>CATATAN: Jika ingin untuk mencoba memuat <em/module/ dengan kernel <bf>development</bf> 2.1 Anda seharusnya menggunakan paket modutils- (BUKAN modules-) terbaru. Tapi <ref id="2-1-problems" name="lihat berikut ini"> tentang masalah dengan <em/modules/ dan kernel 2.1. <sect><label id="Setup">Bagaimana melakukan setup ? <P>Pertama sekali ambil bagian yang dibutuhkan : Kernel yang cocok dan <em/modules-utilities/ terbaru. Kemudian install <em/modules-utilities/. Cukup sederhana - <em/unpack sources/ dan jalankan <tt>make install</tt>. Ini meng-compile dan menginstall program berikut di <tt>/sbin</>: <tt/genksysm/, <tt/insmod/, <tt/lsmod/, <tt/modprobe/, <tt/depmod/, <tt/kerneld/. Penulis merekomendasikan untuk menambahkan beberapa baris ke <em/start-up scripts/ untuk melakukan beberapa setup penting ketika mem<em/boot/ linux. Tambahkan baris berikut ke file <tt>/etc/rc.d/rc.S</> (jika memakai slackware), atau ke <tt>/etc/rc.d/rc.sysinit</> ( Kalau menjalankan SysVinit, misal: Debian, RedHat, Caldera) : <verb> # Start kerneld - Seharusnya ini terjadi di bagian paling awal # dari proses boot, tentu saja SEBELUM Anda menjalankan fsck di filesystems # yang mungkin perlu untuk me-<em/load/ disk drivers secara otomatis if [ -x /sbin/kerneld ] then /sbin/kerneld fi # perintah fsck standar ada disini # Jalankan perintah mount untuk me-mount root fs read-write # Update kernel-module dependencies file # root-fs HARUS di mount read write mulai dari sekarang if [ -x /sbin/depmod ] then /sbin/depmod -a fi </verb> <P>bagian pertama menjalankan kerneld itu sendiri. <P>Bagian kedua memanggil 'depmod -a' saat startup. Program depmod membuat daftar dari seluruh <em/modules/ yang tersedia dan menganalisa <em/inter-dependencies/nya, sehingga tahu jika suatu <em/modules/ memerlukan <em/module/ lain untuk di<em/ load/ / sebelum ia kemudian me<em/ load/ / dirinya sendiri. <P><bf>NOTE</bf>: Versi kerneld yang sekarang memiliki pilihan links dengan GNU dbm library, <tt/libgdbm/. Jika Anda mengaktifkannya ketika membangun <em/module-utilities/, <em>Kerneld tidak akan dimulai jika <tt/libgdbm/ tidak tersedia</em> yang akan menjadi masalah jika Anda memiliki <tt>/usr</> di partisi yang terpisah dan memulai kerneld sebelum <tt>/usr</> di<em/mount/. Pemecahan yang dianjurkan adalah memindahkan <tt/libgdbm/ dari <tt>/usr/lib</> ke <tt>/lib</>, atau link kerneld secara <em/static/. <P>Selanjutnya, <em/unpack kernel source/, konfigurasikan dan <em/build/ kernel ke tempat yang diinginkan. Jika Anda tidak pernah melakukan hal ini sebelumnya, Anda seharusnya membaca README file di top level dari Linux <em/sources/. Ketika menjalankan <bf>make config</bf> untuk megkonfigurasi kernel, perhatikan beberapa pertanyaan yang muncul: <verb> Enable loadable module support (CONFIG_MODULES) [Y/n/?] Y </verb> <P>Pilih <em/ load/ able <em/module/ support/, atau tak akan ada <em/modules/ yang akan di<em/load/ oleh kerneld! Jawab saja <em/Yes/. <verb> Kernel daemon support (CONFIG_KERNELD) [Y/n/?] Y </verb> <P>Yang ini, tentu saja, juga penting. Selanjutnya, banyak hal di kernel dan dapat dijadikan sebagai <em/modules/ - Anda akan melihat pertanyaan seperti <verb> Normal floppy disk support (CONFIG_BLK_DEV_FD) [M/n/y/?] </verb> <P>Anda bisa menjawab dengan 'M' untuk 'Module'. Umumnya, hanya driver driver yang penting untuk <em/boot-up/ sistem - seperti : driver hardisk, driver untuk root filsystem - yang seharus di masukkan kedalam kernel; sisanya dapat dijadikan sebagai modules. <P>Kemudian lakukan '<tt/make config/', jalankan '<tt/make dep/', '<tt/make clean/', '<tt/make zImage/' or '<tt/make zlilo/', '<tt/make modules/' and '<tt/make modules_install/'. <P>Wuih.. <P>Perintah '<tt/make zImage/' meletakkan kernel image yang baru di file <tt>arch/i386/boot/zImage</>. Anda perlu meng<em/copy/nya ke lokasi <em/boot-image/, atau install di LILO. <P>Untuk informasi tentang mengkonfigurasi, membangun dan menginstall kernel, check <url url="http://sunsite.unc.edu/LDP/HOWTO/Kernel-HOWTO.html" name="Kernel-HOWTO"> di kirim secara berkala ke <tt/comp.os.linux.answers/, dan tersedia dari <tt/sunsite.unc.edu/ di direktori <tt>/pub/Linux/docs/HOWTO</>. <sect><label id="Testing">Test kerneld <P>Sekarang <em/reboot/ dengan kernel yang baru. Setelah sistem hidup, jalankan '<tt/ps -ax/', dan Anda seharusnya melihat sebuah baris untuk kerneld: <verb> PID TTY STAT TIME COMMAND 59 ? S 0:01 /sbin/kerneld </verb> <P>Salah satu hal yang menyenangkan dengan kerneld adalah sekali Anda memiliki kernel dengan <em/daemon/ ter<em/install/, sedikit setup yang dibutuhkan. sebagai awalnya, coba gunakan salah satu driver yang Anda bangun sebagai modul - sepertinya lebih dari sekedar tidak bahwa ia bekerja tanpa dikonfigurasi lebih lanjut. penulis membuat driver floppy disk sebagai <em/module/, sehingga dapat meletakkan floppy DOS di drive dan : <verb> osiris:~ $ mdir a: Volume in drive A has no label Volume Serial Number is 2E2B-1102 Directory for A:/ binuti~1 gz 1942 02-14-1996 11:35a binutils-2.6.0.6-2.6.0.7.diff.gz libc-5~1 gz 24747 02-14-1996 11:35a libc-5.3.4-5.3.5.diff.gz 2 file(s) 26689 bytes </verb> <P>driver floppy disk bekerja - ia di <em/load/ secara otomatis oleh kerneld ketika penulis mencoba menggunakannya. <P>Untuk melihat apakah <em/module/ floppy benar-benar di <em/load/ , Anda jalankan /sbin/lsmod yang memperlihatkan seluruh <em/modules/ yang baru saja di <em/load/ : <verb> osiris:~ $ /sbin/lsmod Module: #pages: Used by: floppy 11 0 (autoclean) </verb> <P>Tulisan <em/"(autoclean)"/ maksudnya adalah <em/module/ akan secara otomatis dihapus oleh kerneld ketika tidak lagi digunakan setelah lebih dari satu menit. Sehingga 11 halaman memori (= 44 Kb, satu halaman adalah 4 Kb) hanya akan digunakan ketika ketika penulis mengakses floppy drive- jika penulis tidak menggunakannya setelah lebih dari satu menit, maka ia kan dihapus. Cukup bagus, jika Anda punya sedikit memori untuk aplikasi! <sect><label id="Konfigurasi">Bagaimana kerneld tahu <em/modules/ apa yang akan di<em/load/ ? <P>Meskipun kerneld memiliki kepandaian dalam hal mengetahui tipe- tipe yang paling umum <em/modules/, ada situasi dimana kerneld tidak akan tahu bagaimana menangani permintaan dari kernel. Kasus ini seperti pada driver Network atau CD-ROM, dimana ada lebih dari satu <em/module/ yang mungkin untuk di<em/ load/ /. <P>Permintaan yang diterima oleh kerneld daemon dari kernel adalah untuk satu dari hal-hal berikut <itemize> <item>driver block-device <item>driver character-device <item>format binary <item>tty line discipline <item>filesystem <item>network device <item>network service (contoh: rarp) <item>network protocol (contoh: IPX) </itemize> <P>Kerneld menentukan <em/module/ yang harus di<em/ load/ / dengan melakukan <em/scan/ atas file konfigurasi <tt>/etc/conf.modules</>. Ada dua jenis entri dalam file ini: Paths (di mana <em/module-files/ terletak), dan aliases (<em/modules/ apa yang seharusnya di<em/ load/ /). Jika file ini belum ada, Anda bisa membuatnya dengan menjalankan <verb> /sbin/modprobe -c | grep -v '^path' >/etc/conf.modules </verb> <P>Jika ingin menambahkan "path" directive lainnya ke default paths, Anda juga <em>harus mengikutsertakan seluruh "default" paths</>, karena path directive di /etc/conf.modules akan <em>mengganti </em>seluruh yang dikenal modprobe secara default! <P>Normalnya, Anda tidak ingin untuk menambahkan sendiri paths, karena <em/setting built-in/ seharusnya melakukan semua setup "normal" (dan kemudian beberapa...), penulis janji! <P>Di sisi lain, jika hanya ingin untuk menambahkan alias atau sebuah option directive, entry baru di <tt>/etc/conf.modules</> akan <em/ditambahkan/ ke yang telah dikenal oleh modprobe. Jika harus <em/mendefenisikan ulang/ sebuah alias atau <em/option/, entri baru di <tt>/etc/conf.modules</> akan menggantikan yang <em/built-in/. <sect1><label id="blockdev">Block devices <P>Jika '<tt>/sbin/modprobe -c</>' dijalankan, maka akan diperoleh daftar <em/modules/ yang dikenal oleh kerneld, dan untuk permintaan apa mereka dihubungkan. Sebagai contoh, permintaan yang berakhir dengan me<em/load/ floppy driver adalah untuk <em/block-device/ yang punya nomor mayor 2: <verb> osiris:~ $ /sbin/modprobe -c | grep floppy alias block-major-2 floppy </verb> <P>Mengapa <em/block-major-2/ ? Karena floppy devices <tt>/dev/fd*</> menggunakan <em/major device/ 2 dan merupakan <em/block devices/: <verb> osiris:~ $ ls -l /dev/fd0 /dev/fd1 brw-rw-rw- 1 root root 2, 0 Mar 3 1995 /dev/fd0 brw-r--r-- 1 root root 2, 1 Mar 3 1995 /dev/fd1 </verb> <sect1><label id="chardev">Character devices <P><em/Character devices/ dihubungkan dengan cara yang sama. Misal: driver ftape floppy tape yang berada di <em/major-device/ 27: <verb> osiris:~ $ ls -lL /dev/ftape crw-rw---- 1 root disk 27, 0 Jul 18 1994 /dev/ftape </verb> <P>walau bagaimanapun, kerneld tidak secara default mengenal driver ftape - ia tidak terdaftar di keluaran dari '<tt>/sbin/modprobe -c</>'. <P>Sehingga melakukan setup kerneld untuk me<em/ load/ / driver ftape, harus menambahkan satu baris ke fie konfigurasi kerneld <tt>/etc/conf.modules</>: <verb> alias char-major-27 ftape </verb> <sect1><label id="eth0">Network devices <P>Anda juga dapat menggunakan nama <em/device/ di samping 'char-major-xxx' atau 'block-major-yyy'. Ini khususnya akan bermanfaat pada driver-driver network. contohnya: driver untuk <em/card/ <tt>ne2000</> yang berfungsi sebagai eth0 akan di<em/ load/ / dengan : <verb> alias eth0 ne </verb> <P>Jika Anda perlu untuk melewatkan beberapa <em/options/ ke driver - contohnya: untuk memberitahukan <em/module/ IRQ yang digunakan oleh <em/netcard/, tambahkan baris 'options': <verb> options ne irq=5 </verb> <P>Ini akan mengakibatkan kerneld me<em/load/ driver NE2000 dengan perintah <verb> /sbin/modprobe ne irq=5 </verb> <P>Tentu saja, options sesunggunya yang tersedia sesuai dengan module yang di<em/load/. <sect1><label id="binfmt">Format Biner <P>Format Biner ditangani dengan cara yang serupa. Ketika mencoba untuk menjalankan sebuah program yang kerneld tidak tahu cara me<em/load/nya, kerneld menerima permintaan untuk <tt/"binfmt-xxx"/, dimana xxx adalah nomor yang ditentukan dari beberapa byte awal dari <em/executable/. Sehingga, konfigurasi kerneld untuk mendukung proses <em/load/ module/ <tt/binfmt_aout/ untuk ZMAGIC (a.out) <em/executable/ adalah <verb> alias binfmt-267 binfmt_aout </verb> <P>Karena <em/magic number/ (lihat <tt>/etc/magic</>) untuk files ZMAGIC adalah 267. ( Jika Anda check <tt>/etc/magic</>, Anda akan melihat nomor 0413, tapi <tt>/etc/magic </> menggunakan nomor dalam oktal sedangkan kerneld menggunakan desimal, dan octal 413 = desimal 267). Sebenarnya ada tiga perbedaan kecil antara varian-varian dari a.out <em/executables/ (NMAGIC, QMAGIC and ZMAGIC), sehingga untuk dukungan penuh atas <em/module/ <tt/binfmt_aout/ diperlukan <verb> alias binfmt-264 binfmt_aout # pure executable (NMAGIC) alias binfmt-267 binfmt_aout # demand-paged executable (ZMAGIC) alias binfmt-204 binfmt_aout # demand-paged executable (QMAGIC) </verb> <P>Format-format biner a.out, Java and iBCS diketahui secara otomatis oleh kerneld, tanpa konfigurasi apapun. <sect1><label id="ldisc">Line disciplines (slip, cslip dan ppp) <P><em/Line disciplines/ diminta dengan <tt/"tty-ldisc-x"/, dimana 'x' biasanya 1 (for SLIP) atau 3 (for PPP). Kedua hal ini dikenal oleh kerneld secara otomatis. <P>Bicara tentang ppp, Jika ingin kerneld untuk me<em/load module/ kompresi data <tt/bsd_comp/ untuk ppp, maka harus ditambahkan dua baris berikut ke <tt>/etc/conf.modules</>: <verb> alias tty-ldisc-3 bsd_comp alias ppp0 bsd_comp </verb> <sect1><label id="net-pf">Keluarga Network protocol (IPX, AppleTalk, AX.25) <P>Beberapa network protokol dapat di<em/load/ juga sebagai modules. Kernel menanyakan kerneld untuk keluarga protokol(contoh: IPX) dengan permintaan untuk "net-pf-X" dimana X adalah sebuah nomor yang menyatakan keluarga mana yang diinginkan. Misal net-pf-3 adalah AX.25, net-pf-4 adalah IPX dan net-pf-5 adalah AppleTalk. (Nomor-nomor ini ditentukan oleh AF_AX25, AF_IPX etc. Defenisi lihat di source file include/linux/socket.h linux). Sehingga untuk me<em/load/ secara otomatis <em/module/ IPX, akan membutuhkan entry seperti berikut di /etc/conf.modules: <verb> alias net-pf-4 ipx </verb> <P>Lihat juga bagian berikut di <ref id="CommonProblems" name="masalah-masalah umum"> untuk informasi tentang bagaimana menghindari pesan-pesan yang mengganggu waktu boot karena keluarga protokol yang tidak terdefinisikan. <sect1><label id="fs">File systems <P>Permintaan kerneld atas filesystems dilakukan dengan menggunakan nama dari tipe filesystem. Penggunaan umum dari hal ini adalah me<em/load/ <em/module/ isofs untuk filesystems CD-ROM, misal: tipe filesystem "iso9660": <verb> alias iso9660 isofs </verb> <P> <sect><label id="special-devs">Device yang membutuhkan konfigurasi khusus <P>Beberapa devices perlu sedikit di konfigurasi diluar peng-aliasan normal device terhadap sebuah module. <itemize> <item>Character devices dengan major number 10: Devices lainnya <item>SCSI devices <item>Devices yang membutuhkan inisialisasi khusus </itemize> <sect1><label id="miscdevs">char-major-10 : Mouse, watchdogs dan randomness <P>Hardware devices biasanya di identifikasi melalui nomor-nmomor mayor device, misal : ftape adalah char-major-27. Namun, Jika Anda melihat entry-entry di /dev untuk char major 10, Anda akan melihat bahwa ini adalah kumpulan dari devices yang sangat berbeda, termasuk <itemize> <item>Mouse untuk berbagai jenis (mouse bus, mouse PS/2) <item>Watchdog devices <item>kernel 'random' device <item>antarmuka APM (Advanced Power Management) </itemize> <P>Jelaslah, devices tersebut di kontrol oleh beberapa <em/modules/ yang berbeda, bukan yang tunggal. Sehingga, konfigurasi kerneld untuk <bf>misc.devices</bf> ini menggunakan major number <bf>dan</bf> minor number: <verb> alias char-major-10-1 psaux # For PS/2 mouse alias char-major-10-130 wdt # For WDT watchdog </verb> <P>Perlu kernel versi 1.3.82 atau lebih baru untuk menggunakannya; versi yang lebih lama tidak melewatkan nomor minor ke kerneld, menyebabkan mustahil bagi kerneld untuk mengetahui misc.devices mana yang akan di <em/load/ . <sect1><label id="scsidevs">Me<em/load/ driver SCSI : entry scsi_hostadapter <P>Drivers untuk SCSI devices terdiri dari sebuah driver untuk SCSI host adapter (contohnya: Adaptec 1542), dan driver untuk tipe SCSI device yang digunakan,contohnya: hard disk, CD-ROM atau a tape-drive. seluruhnya dapat di<em/load/ sebagai modules. Namun, Ketika Anda ingin mengakses contohnya: CD-ROM drive yang terhubung ke card Adaptec, kernel dan kerneld hanya tahu bahwa perlu me<em/load/ <em/module/ sr_mod untuk mendukung SCSI CD_ROM - tapi tidak tahu di SCSI controller mana CD-ROM terhubung, dan juga tidak tahu <em/module/ yang di<em/load/ untuk SCSI controller. <P>Untuk menanggulangi ini, bisa ditambahkan sebuah entry untuk <em/module/ SCSI driver di <tt>/etc/conf.modules</> yang memberitahu kerneld <em/module/ mana yang harus di<em/load/ dari sekian banyak <em/modules/ SCSI controller: <verb> alias scd0 sr_mod # sr_mod for SCSI CD-ROM's ... alias scsi_hostadapter aha1542 # ... need the Adaptec driver </verb> <P>Hanya bekerja dengan kernel versi 1.3.82 atau lebih baru. <P>Bekerja jika hanya ada satu SCSI controller. Jika Anda punya lebih dari satu, maka akan menjadi sedikit lebih sulit. <P>Secara umum, Anda tidak dapat membuat kerneld untuk me<em/load/ driver untuk SCSI host adapter, jika driver untuk host adapter lainnya telah di install - Anda harus membuat kedua driver tersebut kedalam kernel (bukan sebagai <em/modules/ ), atau <em/load/ <em/modules/ secara manual. <P>Ini<em> adalah</em> cara yang dapat digunakan untuk membuat kerneld bisa me<em/load/ multiple SCSI drivers. James Tsiao datang dengan ide ini : <p> Anda bisa dengan mudah membuat kerneld me <em/load/ driver SCSI kedua dengan melakukan setup sendiri pada dependency di dalam modules.dep. Hanya diperlukan entry sebagai berikut: /lib/modules/2.0.30/scsi/st.o: /lib/modules/2.0.30/scsi/aha1542.o untuk membuat kerneld me<em/load/ aha1542.o sebelum me<em/load/ st.o. Mesin penulis dirumah di setup hampir sama persis dengan yang diatas, dan bekerja dengan baik untuk semua devices scsi secondary, termasuk tape,cd-rom, dan generic scsi devices. Kerugiannya adalah 'depmod -a' tidak dapat memdeteksi secara otomatis dependencies ini, sehingga user perlu untuk menambahkannya sendiri, dan tidak menjalankan 'depmod -a' saat boot up. Tapi sekali disetup, kerneld akan me<em/load/ secara otomatis aha1542.o. <p>Perhatikan, bahwa teknik ini hanya bekerja jika Anda punya devices scsi yang berbeda di kedua kontroler - misal: harddisks di satu kontroler, dan drive CD-ROM, tape atau devices generic scsi di yang lainnya. <sect1><label id="pre_post">Ketika Me<em/load/ <em/modules/ tidak mencukupi: entry post install <P>Kadang-kadang, dengan hanya me<em/load/ <em/module/ tidak cukup untuk membuat sesuatu bekerja. Sebagai contoh, jika Anda punya soundcard yang di-compile sebagai module, maka sering lebih baik dengan mengaturnya di level volume tertentu. Hanya masalahnya adalah, setting hilang ketika <em/modules/ di<em/load/ untuk selanjutnya. Ini adalah trik yang indah dari Ben Galliart (bgallia@luc.edu): <verb> Solusi terakhir membutuhkan paket setmix-0.1 ( ftp://sunsite.unc.edu/pub/Linux/apps/sound/mixers/setmix-0.1.tar.gz ) Dan kemudian tambahkan baris berikut kedalam /etc/conf.modules : post-install sound /usr/local/bin/setmix -f /etc/volume.conf </verb> <P>Yang dilakukan oleh hal ini adalah setelah <em/module/ sound di <em/load/ , kerneld menjalankan perintah yang diberitahukan oleh entry 'post-install sound'. Sehingga <em/module/ sound terkonfigurasi dengan perintah : '/usr/local/bin/setmix -f /etc/volume.conf'. <P>Mungkin ini bermanfaat juga untuk <em/modules/ lainnya, misal: <em/module/ lp dapat di konfigurasi memakai program <tt/tunelp/ dengan menambahkan <verb> post-install lp tunelp <options> </verb> <P>Agar kernel mengetahui pilihan-pilihan ini, dibutuhkan kerneld versi 1.3.69f atau yang lebih baru. <P><bf>CATATAN</bf>: Versi awal dari mini howto ini mengingatkan option "pre-remove", mungkin ini bisa digunakan untuk menjalankan perintah sebelum kerneld menghapus module. Namun, hal ini tidak pernah bekerja dan penggunaannya kurang bermanfaat - sepertinya option ini akan menghilang di rilis kerneld yang akan datang. Isu keseluruhan dari <em/module/ "settings" saat itu adalah sedang dalam perbaikan dan mungkin terlihat berbeda di dalam system Anda pada saat membaca ini. <P> <sect><label id="Spying">Mengintip kerneld <P>Jika Anda telah mencoba segalanya, dan masih belum bisa memahami apa yang diperintahkan oleh kernel untuk dikerjakan oleh kerneld, ada cara untuk melihat permintaan yang diterima oleh kerneld, dan untuk mengetahui apa yang seharusnya pergi ke /etc/conf.modules : kdstat utility. <P>Program kecil ini ada didalam modules-package, tapi tidak di-compile secara default. Untuk membuatnya: <verb> cd /usr/src/modules-2.0.0/kerneld make kdstat </verb> <P>Kemudian, untuk membuat kerneld memperlihatkan informasi tentang apa yang sedang terjadi, jalankan <verb> kdstat debug </verb> <P>dan kerneld akan memulai menampilkan pesan-pesan di console tentang apa yang sedang dilakukan. Jika Anda kemudian mencoba dan menjalankan perintah yang Anda ingin gunakan, maka akan terlihat permintaan-permintaan keneld; ini bisa di letakkan kedalam /etc/conf.modules dan dialiaskan ke module yang dibutuhkan untuk membuatnya bekerja. <P>Untuk mematikan debugging, jalankan '/sbin/kdstat nodebug' . <P> <sect><label id="Goodies">Penggunaan khusus kerneld <P>penulis telah tahu bahwa Anda akan menanyakan tentang bagaimana mensetup module screensaver ... <P>Direktori 'kerneld/GOODIES' di modules-package memiliki beberapa kernel patches untuk screensaver - dan consolebeep-support di kerneld; ini belum menjadi bagian resmi dari kernel. Sehingga perlu untuk menginstall kernel-patches dan membangun kernel. <P>Untuk memasang patch, gunakan perintah "patch" : <verb> cd /usr/src/linux patch -s -p1 </usr/src/modules-2.0.0/kerneld/GOODIES/blanker_patch </verb> <P>Kemudian rebuild dan install kernel baru <P> Ketika screensaver terpicu, kerneld akan menjalankan perintah " /sbin/screenblanker" - mungkin ini sebuah shellscript yang menjalankan screensaver favoritmu. <P>Ketika kernel ingin untuk melakukan unblank layar, ia mengirim sinyal SIGQUIT untuk memproses /sbin/screenblanker yag sedang jalan. Shell script atau scrensaver harus bisa menjebak hal ini, dan berhenti. Jangan lupa untuk mengembalikan layar ke modus text sebelumnya! <P> <sect><label id="CommonProblems">Masalah umum dan hal-hal yang membuat Anda ingin tahu <sect1>Mengapa aku mendapatkan pesan "Cannot locate <em/module/ for net-pf-X" ketika menjalankan ifconfig <P>Kira-kira pada versi kenel 1.3.80, kode networking telah diubah untuk untuk mengizinkan <em/load/ keluarga protokol ) misal : IPX, AX.25 and AppleTalk) sebagai modules. Ini menyebabkan penambahan permintaan kerneld yang baru: net-pf-X, dimana X adalah sebuah angka yang mengidentifikasikan protokol (lihat /usr/src/linux/include/linux/socket.h untuk maksud dari angka tersebut. Malangnya, ifconfig secara tidak sengaja memicu pesan ini, sehingga banyak orang memperoleh pesan di log saat boot dan menjalankan ifconfig untuk melakukan setup loopback. Pesan ini tidak berbahaya, dan dapat dihilangkan dengan menambahkan baris <verb> alias net-pf-3 off # Forget AX.25 alias net-pf-4 off # Forget IPX alias net-pf-5 off # Forget AppleTalk </verb> <P>ke /etc/conf.modules. Tentu saja, Jika Anda menggunakan IPX sebagai module, Anda tidak perlu melumpuhkan IPX. <sect1>Setelah memulai kerneld, system saya menjadi makin lambat ketika mengaktifkan ppp-connection <P>Ada beberapa laporan tentang ini. Ini sepertinya interaksi yang kurang menguntungkan antara kerneld dan <bf>tkPPP script</bf> yang digunakan dalam beberapa system untuk men-setup dan memonitor hubungan ppp - script melakukan loop ketika menjalankan ifconfig. Ini memicu kerneld, untuk mencari module net-pf-X (lihat diatas) , menyebabkan system <em/load/ tinggi dan mungkin memunculkan banyak pesan "Cannot locate <em/module/ for net-pf-X" ke dalam log system. Tidak ada pemecahan yang diketahui, selain dengan tidak menggunakan tkPPP, atau mengubahnya untuk melakukan cara lain dalam memonitor hubungan. <sect1>kerneld tidak me<em/load/ driver SCSI-ku! <P>Tambahkan entry untuk SCSI hostadapter ke /etc/conf.modules. Lihat keterangan di entry <ref id="scsidevs" name="scsi_hostadapter"> diatas. <sect1>modprobe mengeluh 'gcc2_compiled' being undefined <P>Ini adalah bug di module-utilities, yang terlihat hanya dengan 2.6.0.9 dan terbaru, ini juga telah di dokumentasikan di releasenote untuk binutils. Bacalah. atau upgrade ke module-utilities yang mengatasi ini, contohnya: modules-2.0.0. <sect1>Driver sound terus melupakan setting untuk volume dll <P>Setting untuk <em/module/ di simpan didalam <em/module/ itu sendiri ketika di<em/load/ . Sehingga ketika kerneld melakukan auto-un<em/load/ sebuah module, semua setting yang ada dihapus, dan selanjutnya <em/module/ me<em/load/ kembali dengan setting default. <P>Anda bisa memberitahukan kerneld untuk mengkonfigurasikan <em/module/ dengan menjalankann program stelah <em/module/ di <em/autoload/ . Lihat <ref id="pre_post" name="bagian di atas"> dalam entry 'post-install'. <sect1>DOSEMU butuh beberapa <em/modules/ - bagaimana aku bisa membuat kerneld me<em/load/ nya? <P>Tidak bisa. Tidak satupun versi DOSEMU -official atau development - mendukung proses <em/load/ <em/modules/ DOSEMU lewat kerneld. Namun, jika Anda menjalankan kernel 2.0.26 atau terbaru, Anda tidak butuh <em/modules/ DOSEMU khusus lagi - upgrade saja DOSEMU ke 0.66.1. <sect1>Mengapa aku mendapat pesan "Ouch, kerneld timed out, message failed"? <P>Ketika kernel mengirim permintaan ke kerneld, ia berharap untuk menerima pemberitahuan kembali dalam waktu satu detik. Jika kerneld tidak mengirim pemberitahuan ini pesan tidak di log. Permintaan di transmisikan kembali, dan harus dilakukan berulang kali. <P>Ini biasanya terjadi pada system dengan <em/load/ sangat tinggi - karena kerneld adalah proses yang berada di user-mode, ia dijadwal seperti juga proses lainnya didalam system. Pada saat <em/load/ tinggi, ia mungkin tidak dapat bekerja pada saat itu untuk mengirim pemberitahuan sebelum kernel time out. <P>Jika ini masih terjadi meskipun ketika <em/load/ rendah, coba restart kerneld. ( Kill kerneld proses dan restart dengan perintah <tt>/usr/sbin/kerneld</>. Jika masalahnya sama, kirim mail bug report ke <url url="mailto:linux-kernel@vger.rutgers.edu" name="linux-kernel@vger.rutgers.edu" >, tapi <bf>tolong</bf> yakinkan versi kernel dan kerneld up-to-date sebelum mengirimkannya. <sect1>mount tidak menunggu kerneld untuk me<em/load/ <em/module/ filesystem <P>Ada beberapa laporan bahwa perintah mount(8) tidak menunggu kerneld untuk me<em/load/ <em/module/ filesystem. lsmod tidak memperlihatkan bahwa kerneld me<em/load/ module tersebut. Ini adalah sebuah bug di module-utilities versi 1.3.69f yang mempengaruhi beberapa pemakai Debian - bisa di perbaiki dengan memperoleh versi terbaru dari module-utilities. <sect1>kerneld gagal me-<em/load/ <em/module/ ncpfs <P>Anda perlu untuk meng-compile ncpfs utilities -DHAVE_KERNELD. Lihat ncpfs Makefile. <sect1>kerneld gagal me<em/load/ <em/module/ smbfs <P>Anda menggunakan versi lama dari smbmount utilities. Dapatkan yang terbaru (0.10 atau terbaru) dari <url url="ftp://tsx-11.mit.edu/pub/linux/filesystems/smbfs/" name="ftp://tsx-11.mit.edu/pub/linux/filesystems/smbfs/"> <sect1>Saya telah membangun semuanya sebagai modules, dan sekarang system saya tidak dapat boot <sect1>kerneld gagal me<em/load/ <em/module/ root filesystem <P>Anda tidak dapat menjadikan <bf>semuanya</bf> modules: Kernel harus punya cukup driver didalamnya untuk bisa me mount root filesystem, dan menjalankan program penting untuk memulai kerneld. sehingga Anda tidak dapat menjadikannya modules <itemize> <item>driver untuk hard disk dimana root filesystem berada <item>driver root filesystem itu sendiri <item>binary format <em/loader/ untuk <tt/init/, kerneld dan program lainnya </itemize> <P>[Sesungguhnya, ini tidak benar. kernel 1.3.x dan semua 2.0.x mendukung penggunaan ramdisk yang di <em/load/ oleh LILO ata LOADLIN, dan memungkinkan untuk me<em/load/ <em/modules/ dari "disk" ini di bagian paling awal dari proses boot. Cara melakukannya di jelaskan di file Documentation/initrd.txt yang ada di kernel source-files.] <sect1>kerneld tidak akan <em/load/ saat boot time - mengeluhkan libgdbm <P>Versi yang lebih baru dari kerneld butuh GNU dbm library, libgdbm.so, untuk bekerja. sebagian besar instalasi memiliki file ini di /usr/lib, tapi Anda mungkin memulai kerneld sebelum /usr filsystem di mount. Salah satu gejala dari ini adalah kerneld tidak akan dimulai selama boot-up ( dari rc-scripts), tapi jalan dengan baik jika menjalankan dengan mengetikkannya setelah system boot-up. Pemecahannya adalah pindahkan startup kerneld sesudah /usr di mount, atau pindahkan gdbm library ke root filesystem, misal ke /lib. <sect1>Saya memperoleh pesan "Cannot <em/load/ <em/module/ xxx" tapi baru saja mengkonfigurasi ulang kernel tanpa xxx support! <P>Instalasi Slackware (mungkin juga lainnya) membuat default /etc/rc.d/rc.modules yang melakukan modprobe khusus atas beberapa modules. Tepatnya <em/module/ mana yang di modprob tergantung pada konfigurasi asli kernel. Anda mungkin mengkonfigurasi ulang kernel dengan tidak memasukan satu atau lebih madules yang di modprobe di rc.modules, sehingga, muncul pesan kesalahan. Update rc.modules dengan meng-comment semua <em/modules/ yang tidak lagi digunakan, atau hapus rc.modules semuanya dan biarkan kerneld me<em/load/ <em/modules/ ketika dibutuhkan. <sect1>Aku membangun ulang kernel dan modules, dan mendapat pesan tentang unresolved symbols ketika booting <P>Mungkin perlu mengkonfigurasi dan membangun ulang kernel dengan tidak memasukan beberapa modules. Beberapa <em/modules/ lama yang tidak lagi digunakan bisa diperoleh dengan bergantung pada direktori /lib/modules. Pemecahan termudah adalah menghapus /lib/modules/x.y.z dan melakukan 'make modules_install' dari direktori kernel source. Catat bahwa hal ini hanya bisa dilakukan ketika mengkonfigurasi ulang kernel pada versi yang sama. Jika Anda melihat kesalahan ini ketika pindah ke kernal yang versi lebih baru, itu adalah kasus yang berbeda. <sect1><label id="2-1-problems">Saya telah menginstall Linux 2.1 dan sekarang tidak bisa me<em/load/ <em/module/ apapun <P>Linux 2.1 adalah kernel development terbaru. sehingga, bisa diharapkan hal ini dipecahkan dari waktu kewaktu. Satu dari hal yang telah diubah secara nyata adalah cara <em/module/ ditangani, dan di mana kernel dan <em/modules/ di <em/load/ ke memori. Richard Henderson sekarang sedang berusaha dalam pengembangan <em/module/ kernel. <P>Sebagai permulaan, jika ingin menggunakan <em/modules/ denngan kernel 2.1, maka Anda harus <itemize> <item>membaca file Documentation/Changes dan melihat paket apa yang perlu diupgrade <item>Gunakan paket modutils terbaru, tersedia di <url url="ftp://ftp.redhat.com/pub/alphabits/" name="ftp://ftp.redhat.com/pub/alphabits/"> atau mirror site di <url url="ftp://tsx-11.mit.edu/pub/linux/packages/alphabits/" name="ftp://tsx-11.mit.edu/pub/linux/packages/alphabits/"> </itemize> <P>penulis akan merekomendasikan penggunaan kernel terbaru 2.1.29, jika Anda ingin menggunakan <em/modules/ dengan kernel 2.1 <sect1>Bagaimana dengan <em/dial-on-demand networking/? <P>kerneld pada dasarnya mempunyai dukungan untuk mengadakan hubungan jaringan dial-up sesuai dengan permintaan; mencoba mengirim paket ke jaringan tanpa terhubung akan menyebabkan kerneld untuk menjalankan script <tt>/sbin/request_route</> untuk men<em/setup/ PPP atau SLIP connection. <P>Ini akan menjadi ide yang buruk. Alan Cox, ahli linux networking menulis di linux-kernel mailing list, bahwa <verb> The request-route stuff is obsolete, broken and not required [...] Its also removed from 2.1.x trees. </verb> Daripada menggunakan script request-route dan kerneld, penulis dengan sepenuh hati menganjurkan untuk menginstall paket <htmlurl url="http://www.dna.lth.se/~erics/diald.html" name="diald"> Eric Schenk, tersedia dari http://www.dna.lth.se/~erics/diald.html <P> <sect><label id="A9">Pesan Hak Cipta <P>Hak cipta dokumen ini pada (c) Henrik Storner, 1996, 1997. <P>Kecuali jika dinyatakan, Hak cipta dokumen Linux HOWTO ada pada penulisnya Linux HOWTO boleh direproduksi dan didistribusikan secara keseluruhan atau terpisah, dalam media fisik atau elektronik, selama peringatan hak cipta ini ada didalam semua copy. Pendistribusian komersial diizinkan dan dihargai; namun, penulis ingin untuk diberitahukan atas pendistribusian seperti itu. <P>Semua translasi, derivative works, atau aggregate works yang berhubungan dengan dokumen HOWTO Linux apapun dilindungi dengan pesan hak cipta ini. Sehingga, Anda tidak boleh membuat derivative work dari sebuah HOWTO atau menciptakan batasan tambahan atas pendistribusiannya. Pelanggaran atas aturan ini boleh dilakukan atas beberapa kondisi; hubungi koordinator Linux HOWTO di alamat yang diberikan berikut. <P>Pendeknya, kami berharap untuk mempromosikan informasi ini melalui sebanyak mungkin jalur. Namun, kami ingin memperoleh hak cipta atas dokumen HOWTO, dan ingin untuk diberitahu setiap rencana pendistribusian HOWTO. <P>Jika Anda punya pertanyaan, Silahkan hubungi Tim Bynum, koordinator Linux HOWTO di linux-howto@sunsite.unc.edu via email. </article>