<!doctype linuxdoc system>

<article>

<title>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 &lt;bj0rn@blox.se&gt;
<item>Ben Galliart &lt;bgallia@luc.edu&gt;
<item>Cedric Tefft &lt;cedric@earthling.net&gt;
<item>Brian Miller &lt;bmiller@netspace.net.au&gt;
<item>James C. Tsiao &lt;jtsiao@madoka.jpl.nasa.gov&gt;
</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/&quot;modules&quot;/ - 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/&quot;beep&quot;/ 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/&quot;(autoclean)&quot;/ 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' &gt;/etc/conf.modules
</verb>

<P>Jika ingin menambahkan &quot;path&quot; directive lainnya ke default
paths, Anda juga <em>harus mengikutsertakan seluruh &quot;default&quot; 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 &quot;normal&quot; (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/&quot;binfmt-xxx&quot;/, 
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/&quot;tty-ldisc-x&quot;/, 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 &quot;net-pf-X&quot; 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 &quot;iso9660&quot;: 

<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 &lt;options&gt;
</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
&quot;pre-remove&quot;, 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/ 
&quot;settings&quot;  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 &quot;patch&quot; : 

<verb>  cd /usr/src/linux
  patch -s -p1 &lt;/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 &quot;
/sbin/screenblanker&quot; - 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 &quot;Cannot locate <em/module/ for net-pf-X&quot; 
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 &quot;Cannot locate <em/module/ for net-pf-X&quot; 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 &quot;Ouch, kerneld timed out, message 
failed&quot;?

<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 &quot;disk&quot; 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 &quot;Cannot <em/load/  <em/module/ xxx&quot; 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>
