Mengenal Sistem Startup dan Shutdown

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.

  1. Eksekusi LILO
  2. LILO Memuat secondary loader pada /boot/chain.b.
  3. /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.
  4. Kernel menyerahkan tugasnya kepada init.
  5. Init menjalankan berbagai program di belakang layar yang dibutuhkan oleh seorang user untuk login ke dala sistem.
  6. 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 :

  1. Kernel menjalankan program init yang berada pada direktori /sbin
  2. init menjalankan script shell /etc/rc.d/rc.sysinit.
  3. rc.sysinit menjalankan sistem lainnya dan menampilkan proses startup.
  4. Init menjalankan script yang sesuai dengan default run level.
  5. 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 :

  1. Mematikan semua proses yang sedang berjalan
  2. Mematikan file virtual memory yang di swap
  3. 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

Tinggalkan komentar