|
Selama
proses booting, Linux akan memanggil sebuah loader yang disebut
dengan LILO (belakangan juga muncul loader bernama GRUB), yang
kemudian akan memanggil sebuah program yang bernama dengan
init. Program init inilah yang kemudian akan memeriksa
file-file inisialisasi sistem, lokasi file-file tersebut
berada, dan menjalankan Linux sesuai dengan default run level
yang digunakan.
Proses
Startup
Proses
starup dimulai ketika sistem sudah memanggil LILO dan proses
booting sudah diserahkan pada sebuah program induk yang disebut
dengan init. Pada hampir kebanyakan distribusi Linux, proses
startup mengikuti aturan-aturan seperti berikut.
Eksekusi
LILO
LILO
Memuat secondary loader pada /boot/chain.b.
/boot/chain.b
menjalankan Kernel Linux. Sampai pada bagian ini, seorang
pengguna akan melihat tampilan pesan pada layar seperti
menjalankan daemon, memerika integritas perangkat keras, dan
sebagainya.
Kernel
menyerahkan tugasnya kepada init.
Init
menjalankan berbagai program di belakang layar yang dibutuhkan
oleh seorang user untuk login ke dala sistem.
Init
memanggil program yang digunakan untuk login.
Proses
Startup pada tiap Distribusi
Seperti
sudah diterangkan di atas, setelah init mengambil alih tugas
booting sistem dari LILI atau GRUB, init akan menjalankan
sistem sesuai dengan default run level yang digunakan. Pada
beberapa distribusi, penanganan run level ini berbeda satu
dengan lainnya.
Run
Level pada RedHat dan OpenLinux
Kedua
distribusi ini meletakkan program-program shell pada direktori
/etc/rc.d. Program-program yang berhubungan dengan init
diletakkan dalam sebuah direktori master pada /etc/rc.d/init.d.
Sedangkan direktori lainnya lagi memiliki nama yang sama untuk
setiap run level, misalnya /etc/rc1.d/ untuk run level 1.
Debian/GNU
LINUX
Debian
memiliki kesamaan dengan RedHat ataupun OpenLinux. Perbedaan
terletak pada direktori master, yaitu /etc/init.d sedangkan
untuk RedHat atau OpenLinux adalah /etc/rc.d.init.d.
Slackware
Slackware
memiliki kesamaan dengan RedHat ataupun OpenLinux. Perbedan
terletak pada distribusi Slackware yang tidak menggunakan file
dengan link sombolik seperti yang digunakan oleh distribusi
lainnya. Jadi setiap file yang berhubungan dengan init adalah
program binari yang memang dapat dieksekusi untuk menjalankan
script shell.
SuSE
Perbedaan
utama SuSE dengan RedHat ataupun Open Linux adalah struktur
yang berada pada direktori master /etc/rc.d/rc di link kembali
ke direktori aktif yang berada pada /etc/rc.d/.
Proses
Startup dan LILO
Penggunaan
boot manajer memungkinkan kita untuk menjalankan lebih dari
sistem operasi pada satu komputer. Dengan boot manajer kita
dapat memilih salah satu sistem operasi untuk dijalankan pada
waktu proses booting pertama kali. Kebanyakan distribusi saat
ini menyertakan LILO atau GRUB yang dapat diinstal pada waktu
proses instalasi. Keberadaan boot manajer ini memungkinkan
seorang user untuk dapat menggunakan harddisk berukuran besar
dengan menyertakan opsi linear pada lilo.conf. Untuk
mengkonfigurasikan lilo, dapat dilakukan dengan menggunakan
tool-tool berbasis grafis, seperti RedHat dengan Linuxconf atau
Webmin untuk Open Linux. Meskipun tersedia tool berbasis
grafis, kita dapat mengkonfigurasikan lilo dengan menggunakan
cara manual pada file /etc/lilo.conf.
Jika
pada satu komputer terdapat dua sistem operasi (misal Linux dan
MS Windows), pada file lilo.conf terdapat dua baris utama yang
menunjukkan opsi yang digunakan untuk menjalankan kedua sistem
operasi tersebut. Pada kedua baris tersebut terdapat sebuah
opsi label yang merupakan nama dari sistem operasi yang
digunakan untuk menjalankan salah satu sistem operasi yang
digunakan.
Salah
satu opsi yang digunakan pada lilo adalah pengaturan waktu yang
digunakan untuk memberikan kesempatan user memilih salah satu
sistem operasi yang digunakan sebelum nilai default yang
digunakan lilo dijalankan. Opsi ini menggunakan timeout
dan berisikan nilai dalam satuan detik. Misalkan kita akan
mengatur timeout dengan satuan waktu 20 detik, tambahkan opsi
berikut ke dalam lilo.conf.
timeout
= 200
opsi
lainnya dalah default, yang digunakan untuk mengatur dafult
sistem operasi yang akan dijalankan jika batas timeout di
atas sudah habis. Untuk mengatur Linux sebagai default sistem
operasi yang akan dijalankan, gunakan opsi berikut.
default
= linux
Untuk
menjalankan sistem operasi, dalam konfigurasi lilo harus
dimasukkan opsi image yang digunakan untuk memanggil
image dari kernel Linux. Contoh berikut digunakan untuk
memanggil image kernel yang digunakan pada distribusi RedHat
7.2.
image=/boot/vmlinuz-2.4.7-10
Setelah
memuat image dari Kernel Linux, langkah berikutnya adalah
menentukan label dari kernel Linux yang digunakan, termasuk
partisi tempat file image tersebut berada.
label=linux
root=/dev/hda5
Langkah
terakhir adalah dengan mengaktifkan perubahan yang dilakukan
pada file lilo.conf dengan mengetikkan perintah lilo pada
prompt Linux seperti berikut.
#lilo
Berikut
ini adalah isi file lilo.conf yang penulis gunakan pada
distribusi RedHat 7.2.
prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
message=/boot/message
linear
image=/boot/vmlinuz-2.4.7-10
label=linux
read-only
root=/dev/hda5
init
dan Run Level
Ada
beberapa cara untuk melakukan booting terhadap sistem, yang
sering sekali digunakan adalah dengan membooting sistem
menggunakan harddisk dan menggunakan floppy drive. RedHat dan
distribusi Linux lainnya menggunakan proses boot yang yang
disebut dengan init sysV yang merupakan sistem booting
yang digunakan oleh BSD. Init adalah program dari kernel yang
dieksekusi pada waktu startup, dan kemudian memiliki nomor PID
1. Proses boot ini kemudian menjadi proses induk (parent
process) bagi semua proses yang berada dalam sistem.
Langkah-langkah
yang dilakukan oleh sistem pada waktu booting adalah :
Kernel
menjalankan program init yang berada pada direktori /sbin
init
menjalankan script shell /etc/rc.d/rc.sysinit.
rc.sysinit
menjalankan sistem lainnya dan menampilkan proses startup.
Init
menjalankan script yang sesuai dengan default run level.
Init
menjalankan script pada /etc/rc.d/rc.local.
Program
ini kemudian menjalankan banyak proses dan menuliskan informasi
ke konsol dan sistem log pada /var/log/message tentang status
dari setiap proses yang dijalankan.init menjalankan semua
proses yang dibutuhkan oleh sistem operasi untuk melaksanakan
tugasnya, seperti networking, menggunakan mouse, fungsi dari
I/O dan sebagainya. init juga harus mengetahui program mana
yang harus dijalankan dengan membaca file-file yang berada pada
/etc/rc.d. Setiap file yang berada pada direktori ini
dikelompokkan berdasarkan run level, pada tiap-tiap direktori.
Run
level terdiri dari berbagai tipe layanan, dari single user
mode (run level 1) sampai multiuser, multitasking (run
level 3). Tabel berikut memperlihatkan run level yang tersedia
pada Linux.
Tabel 1 Run Level pada Linux
Run Level
Penjelasan
0
Halt
1
Single user mode
2
Multi user, tidak ada NFS
3
Full multiuser mode
4
Unused (tidak digunakan)
5
X11
6
reboot
Run
Level 0 : /etc/rc.d/rc0.d
Seperti
yang anda lihat pada tabel diatas, run level 0 akan menjalankan
sekumpulan script yang digunakan untuk shutdown. Script pada
run level ini akan menjalankan proses seperti berikut :
Mematikan
semua proses yang sedang berjalan
Mematikan
file virtual memory yang di swap
Melakukan
proses unmounting swap dan filesistem yang di mount.
Berikut
ini adalah file-file yang digunakan ketika proses mematikan
komputer berjalan.
K00linuxconf
-> ../init.d/linuxconf*
K05keytable
-> ../init.d/keytable*
K10xfs
-> ../init.d/xfs*
K11drakfont
-> ../init.d/drakfont*
K15numlock
-> ../init.d/numlock*
K20kheader
-> ../init.d/kheader*
K30usb
-> ../init.d/usb*
K44rawdevices
-> ../init.d/rawdevices*
K60atd
-> ../init.d/atd*
K60crond
-> ../init.d/crond*
K65identd
-> ../init.d/identd*
K75netfs
-> ../init.d/netfs*
K80random
-> ../init.d/random*
K92anacron
-> ../init.d/anacron*
K95harddrake
-> ../init.d/harddrake*
K95kudzu
-> ../init.d/kudzu*
K97sound
-> ../init.d/sound*
K99syslog
-> ../init.d/syslog*
S00killall
-> ../init.d/killall*
S01halt
-> ../init.d/halt*
Run
Level 1: /etc/rc.d/rc1.d
Run
Level 1 merupakan single user mode, atau merupakan mode
untuk melakukan administrasi, run level ini digunakan seorang
sistem administrator untuk melakukan perawatan software.
Untuk
masuk kedalam mode ini pada waktu boot ketikkan perintah
seperti berikut ini :
boot
: linux single
dengan
demikian anda akan langsung masuk kedalam runlevel 1 dengan
melewati berbagai argumen yang ada pada kernel.
Run
Level 2: /etc/rc.d/rc2.d
Runlevel
2 merupakan multiuser mode. Pada runlevel ini fungsi
untuk networking bisa dijalankan kecuali untuk network file
system (NFS). Pilihan ini berguna jika anda hanya menjalankan
komputer PC anda untuk stand alone.
Run
Level 3: /etc/rc.d/rc3.d
Runlevel
3 merupakan default runlvel yang ada pada file /etc/inittab.
Untuk distribusi keluaran akhir seperti redhat 7.0 menggunakan
runlevel 5 sebagai defaultnya.
Run
Level 4: /etc/rc.d/rc4.d
Runlevel
4 digunakan sebagai runlevel yang bisa anda seting kembali
untuk menjalankan runlevel anda sendiri. Dengan demikian anda
bisa membuat runlevel dengan meletakkan file-file yang ingin
anda gunakan atau tidak anda gunakan dengan cara membuat
file-file yang memiliki simbolik link ke direktori atau file
lain yang telah anda pilih.
Run
Level 5: /etc/rc.d/rc5.d
Runlevel
5 digunakan untuk menjalankan aplikasi pada X window. Pada
runlevel ini banyak servis networking yang juga diaktifkan.
Run
Level 6: /etc/rc.d/rc1.d
Runlevel
6 digunakan untuk reboot sistem. Isi dari direktori pada level
ini merupakan link yang sama dengan runlevel 0, akan tetapi
pada script yang yang digunakan untuk mematikan sistem diganti
dengan script yang digunakan untuk mereboot komputer.
Struktur
program init terdiri atas direktori seperti berikut ini :
init.d
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
Tiap-tiap
nomor dalam nama direktori memiliki hubungan dengan dengan tiap
runlevel pada tabel 6.1. Tiap direktori berisikan shell script
yang berguna untuk menjalankan atau menghentikan servis yang
dibutuhkan pada setiap runlevel. Nama file pada setiap script
shell pada masing-masing direktori dimulai dengan huruf S atau
K.Huruf S berarti start (Menjalankan proses) dan K berarti Kill
(mematikan proses). Seperti terlihat berikut ini :
K00linuxconf@
K15numlock@ K60atd@ K80random@ K97sound@
K05keytable@
K20kheader@ K60crond@ K92anacron@ K99syslog@
K10xfs@
K30usb@ K65identd@ K95harddrake@ S00killall@
K11drakfont@
K44rawdevices@ K75netfs@ K95kudzu@ S01halt@
Setiap
script hanya bisa menerima perintah yang berasal dari init
untuk dijalankan (start) atau berhenti (stop), sebagai contoh
jika anda menjalankan perintah untuk menghentikan servis buat
sound, maka pada konsol anda ketikkan perintah sebagai berikut
:
/etc/rc.d/init.d/sound
start
atau
anda hendak menghentikan servis tersebut, yang harus anda
lakukan seperti berikut ini :
/etc/rc.d/init.d/sound
stop
|