Praktikum 10
Linux Booting Process
POKOK BAHASAN:
ü Linux Booting Process
TUJUAN BELAJAR:
Setelah mempelajari materi dalam bab ini, mahasiswa diharapkan mampu:
ü Mengetahui inisialisasi booting proses pada sistem operasi Linux
ü Melakukan perubahan inisia lisasi booting proses
DASAR TEORI:
1 PC BOOT DAN LINUX INIT PROCESS
Pada praktikum ini membahas PC boot process dan inisialisasi sistem operasi
Linux pada aplikasi background (daemons/service).
1. BIOS
:
Basic Input/Output System adalah antar muka level terendah antara
komputer dan peripheral. Bios melakukan pemeriksaan pada memori dan mencari
instruksi pada Master Boot Record (MBR) pada floppy atau hard drive.
2. MBR menunjuk ke boot loader (LILO : Linux boot loader)
3. LILO akan menanyakan label sistem operasi yang akan mengidentifikasi kernel
yang dijalankan. Kernel akan menjalankan sistem operasi Linux.
4. Yang pertama kali dikerjakan oleh kernel adalah menjalankan program init. Init
adalah root/parent dari semua proses yang dijalankan pada Linux
5. Proses per tama yang memulai init adalah skrip /etc/rc.d/rc/sysinit.
126
PRAKTIKUM 10 LINUX BOOTING PROCESS
127
6. Berdasarkan run-level yang ditentukan, skrip dieksekusi untuk memulai proses
tertentu untuk menjalankan sistem dan membuat sistem lebih fungsional.
2. LINUX INIT PROCESS
Proses init adalah langkah terakhir pada prosedur boot dan diidentifikasi sebagai
process ide “1”. Init bertanggung-jawab untuk memulai proses sistem seperti yang
ditentukan pada file /etc/inittab . Init biasanya memulai “getty ” yang menunggu
layar login yang menandakan proses shell seorang user. Pada saat shutdown, init
mengontrol urutan dan proses untu shutdown. Proses init tidak pernah shut down.
Proses init merupakan proses user dan bukan proses sistem kernel meskipun dijalankan
sebagai root.
Proses sistem :
Process ID
Description
0
The Scheduler
1
The init process
2
kflushd
3
kupdate
4
kpiod
5
kswapd
6
mdrecoveryd
3. PROSEDUR BOOT
Linux mempunyai 6 state operasi dimana “0” adalah shutdown state dan “3”
keatas adalah operasional penuh dengan semua proses yang esensial dijalankan untuk
interaksi user. Berdasarkan sistem boot, Linux sistem akan melakukan :
• Mengeksekusi program /sbin/init yang memulai semua proses-proses lain.
Program ini akan diberikan ke mesin oleh proses awal yang didefinisikan pada file
/etc/inittab
•
Komputer akan di-booting ke runlevel yang didefinisikan oleh baris initdefault
pada file /etc/inittab .
id:5:initdefault:
PRAKTIKUM 10 LINUX BOOTING PROCESS
128
Pada contoh diatas, runlevel ”5” dipilih.
Runlevel “5” akan melakukan booting
sistem pada mode GUI menggunakan XDM dan X-Windows. Booting ke runlevel
”3” (biasanya disebut mode console) biasanya digunakan oleh server yang tidak
memerlukan GUI.
File inittab mengijinkan menggunakan kunci (Ctrl-Alt-Del), memulai dial ke
koneksi internet dll.
•
Satu dari proses-proses yang dimulai oleh init adalah /sbin/rc.
menjalankan
sekumpulan
skrip
pada
direktory
Skrip ini
/etc/rc.d/rc0.d/,
/etc/rc.d/rc1.d, /etc/rc.d/rc2.d dan seterusnya.
•
Skrip pada direktory tersebut dieksekusi pada setiap boot state dari oeprasi sampai
menjadi operasi yang lengkap. S krip mulai dengan S yang merupakan skrip startup
sedangkan skrip yang dimulai dengan K menandakan skrip shutdown (kill). Angka
yang mengikuti huruf tersebut merupakan urutan eksekusi (terendah ke tertinggi)
Jika Anda menginstall semua daemons (proses bac kground), Linux akan
menjalankan semua , menyebabkan mesin lebih lambar. Kita bisa memulai (start) /
menghentikan (stop) daemon secara individual dengan mengubah direktory :
/etc/rc.d/init.d (Redhat)
dan diikuti perintah pilihan start, stop, status, restart atau reload, misalnya untuk stop
web server :
cd /etc/rc.d/init.d
httpd stop
Gunakan perintah ps –aux untuk melihat semua proses pada mesin Anda.
4. LINUX RUN LEVEL
Runlevel “3” akan booting dalam mode teks atau console dan “5” akan booting
dalam mode gr aphical login.
State pada Runlevel / Halt :
0
shutdown (Do NOT set initdefault to this)
1
Single user mode
2
Multiuser, without NFS (The same as 3, if you do not have networking)
PRAKTIKUM 10 LINUX BOOTING PROCESS
129
3
Default text start. Full multiuser
4
unused
5
X11
6
Reboot (Do NOT set initdefault to this)
Anda bila melakukan perpindahan level init dengan menggunakan perintah init
dengan runlevel tertentu. Gunakan perintah ”init#” dimana # adalah satu dari 0, 1, 3,
5, 6. Dapat juga menggunakan perintah telinit.
Skrip untuk run level yang diberikan dijalankan selama boot dan shutdown.
Skrip ditemukan pada direktory /etc/rc.d/rc#.d/ dimana simbol # menandakan
run level, misalnya run level ”3” akan menjalankan semua skrip pada direktory
/etc/rc.d/rc3.d/ yang dimulai dengan huruf ”S” selama sistem boot.
Skrip ini
akan menjalankan proses background yang dibutuhkan oleh sistem. Pada saat shutdown
semua skrip pada direktory yang dimulai dengan huruf ”K” akan dieksekusi. Sistem ini
menyediakan urutan sistem ke state yang berbeda untuk mode produksi dan
maintenance.
TIP : Daftar state dan run level dari semua service dimulai oleh ini : chkconfig –list
GUI tool : /usr/X11R6/bin/tksysv
5. AKTIVASI SKRIP INIT
Menambah suatu skrip ke direktory /etc/rc.d/rc#.d/ baik prefik S atau K,
menambah skrip ke proses boot atau shutdown. Skrip berjalan dengan urutan numerik.
S20abc dijalankan sebelum S30xyz.
Keberadaan prosedur boot dan shutdown ini
merupakan kekuatan sistem operasi UNIX.
Inisialisasi proses dengan urutan tertentu
dapat dikoordinasikan untuk proses dependent.
Shutdown dari proses biasanya
dibutuhkan untuk program yang kompleks misalnya database.
Proses individual
dapatkemunginan dimonitore, shutdown dan start pada sembarang waktu menggunakan
skrip tersebut. Misalnya /etc/rc.d/rc2.d/httpd start. Mofidikasi start, stop
atau status kemungkinan digunakan.
Skrip start / stop /status berada pada direktory /etc/rc.d/init.d/ adalah
suatu link ke direktory sebenarnya. Link tersebut kemungkinan dibuat atau dihapus
menggunakan perintah chkconfig, misalnya chkconfig
–del
httpd akan
PRAKTIKUM 10 LINUX BOOTING PROCESS
130
menghapus web server dari proses startup dan shutdown. Sebaliknnya chkconfig –
add httpd akan menambahke ke proses startup/shutdown dengan membangkitkan
link dari skrip pada /etc/rc.d/init.d/ ke direktory /etc/rc.d/rc#.d/ yang
sebenarnya. Untuk informasi lebih lanjut gunakan halaman manual LINUX untuk init.
Pada Red Hat 9.0, GUI tool /usr/bin/redhat-config-services dapat membantu
untuk mengkonfigurasi service untuk start dan menyediakan deskripsi untuk setiap
service yang tersedia. Service dasar meliputi :
Sistem Service
Deskripsi
anacron
Run jobs which were scheduled for execution while computer was
turned off. Catch up with system duties.
arpwatch
Keeps track of IP address to MAC address pairings
atd
Run scheduled batch jobs.
autofs
automounts file systems on demand.
crond
Job sheduler for periodic tasks
gpm
Allows console terminal cut and paste. (Non X-window consoles)
https
Apache web server.
iptables
Firewall rules interface to kernel
keytable
Loads se lected keyboard map as set in /etc/sysconfig/keyboard
kudzu
New harware probe/detection during system boot.
lpd
Network printer services
microcode_ctl
Uploads microcode to kernel and ultimately to the Intle Pentium
processor. (Hardware specific.)
mysqld
Database services
named DNS
name services (Bind)
network
Active network services during system boot.
nfs
Network file system. Unix file sharing services.
nscd
Password and group lookup services for use with network
authentication (NIS, LDAP,...).
ntpd
Network Time Protocol time synchronization services.
random
Random number generation tool used for encryprion
rawdevices
Enables raw IO. Useful for Oracle and software which utilizes this
PRAKTIKUM 10 LINUX BOOTING PROCESS
131
for high speed disk access.
smb
SAMBA: MS/Windows PC file s haring services
syslog
System log file facility.
ypbind NIS
file sharing/authentication infrastructure service.
yppasswd
NIS file sharing/authentication infrastructure service.
xfs
X-Windows font server.
Service utama yang direkomendasikan adalah : anacron, ard, autofs,
crond,
gpm,
iptables,
keytable,
kudzu,
microcode_ctl (Intel32
hardware only), network, random. syslog
Graphics Workstation - add: xfs
File Server for PC clients - add: smb
Print Server - add: lpd atau cups
File server Linux/Unix clients - add: nfs, netfs, nfslock, portmap, ypbind,
yppasswd, ypserv
Web Server - add: httpd, tux, xinetdi, sshd
6. SKRIP INIT
Skrip init berada pada direktory /etc/rc.d/script-name .
Gunakan
perintah chkconfig untuk membangkitkan soft link ke direktory yang sebenarnya
untuk beberapa run level.
#!/bin/sh
#
# Startup script for program
#
# chkconfig: 345 85 15
- This statement tells the chkconfig
command how to add or delete this process to the boot process
# description: Description of program
# processname: process-name
# pidfile: /var/run/process-name.pid
#
Source
function
library. This
creates
environment for the process to be started
. /etc/rc.d/init.d/functions
case "$1" in
the
operating
PRAKTIKUM 10 LINUX BOOTING PROCESS
132
start)
echo -n "Starting process-name: "
daemon process-name
-Starts only one process of a
given name.
echo
touch /var/lock/subsys/process-name
;;
stop)
echo -n "Shutting down process-name: "
killproc process -name
echo
rm -f /var/lock/subsys/process-name
rm -f /var/run/ process-name.pid
- Only if process
generates this file
;;
status)
status process-name
;;
restart)
$0 stop
$0 start
;;
reload)
echo -n "Reloading process-name: "
killproc process -name -HUP
echo
;;
*)
echo "Usage: $0 {start|stop|restart|reload|status}"
exit 1
esac
exit 0
Fungsi skrip bash daemon, killproc dan status dapat ditemukan dalam
skrip /etc/rc.d/functions.
Skrip harus dieksekusi untuk menjalankannya (chmod +x script-name )
Misalnya skrip digunakan untuk memulai dan menghentikan proses seperti
/etc/rc.d/init.d/httpd restart
/etc/rc.d/init.d/httpd stop
/etc/rc.d/init.d/httpd start
atau menggunakan perintah service :
service httpd restart
service httpd stop
service httpd start
PRAKTIKUM 10 LINUX BOOTING PROCESS
133
Dua baris dalam skrip yang memungkinkan perintah chkconfig mengontrol
skrip untuk proses boot dan shutdown adalah
# chkconfig: 345 85 15
# description: Description of program
Bila menambahkan ke proses booting menggunakan perintah "chkconfig -add script-name" awal order/priority akan diset 80 sedangkan stop/shutdown diset
15. Proses akan ditambahkan ke runlevel 3, 4, dan 5. Hal ini dapat dilakukan dengan
membangkitkan link dari lokasi skrip (/etc/rc.d/init.d/) ke direktori run level :
/etc/rc.d/rc#.d/. Nama file dalam direktory run level akan menunjukkan apa yang
digunakan untuk boot (mulai dengan “S”) atau shutdown (mulai dengan “K”).
7. CHKCONFIG
Perintah chkconfig membangkitkan dan memutuskan link antara direktori
/etc/rc.d/init.d/ dan direktori run level /etc/rc.d/rc [0-6].d/ untuk
mengontrol inisialisasi proses boot dan proses shutdown.
chkconfig [--level <levels>] <name> on | off | reset >
chkconfig --list
chkconfig --list
chkconfig --add <name>
chkconfig --del <name>
chkconfig --level 0123456 <name> o ff
Contoh :
chkconfig --level 345 httpd on
- apache diberikan 3, 4 dan 5.
chkconfig --add httpd
- memulai web server daemon pada system boot.
chkconfig --del sen dmail
- Tidak memulai sendmail daemon pada system boot.
chkconfig --list ]
- Daftar semua servis dan level init.
chkconfig --list | grep on
- Daftar semua service yang dimulai pada sistem boot
PRAKTIKUM 10 LINUX BOOTING PROCESS
134
TUGAS PENDAHULUAN :
Sebagai tugas pendahuluan, jawablah pertanyaan-pertanyaan berikut ini :
1. Sebutkan inisialisasi proses apa saja yang dilakukan oleh sistem operasi Linux pada
saat booting
2. Apa yang dilakukan sistem operasi Linux pada saat booting ?
3. Apakah isi dari file /etc/inittab .
Sebutkan siste m proses yang dapat
dimasukkan pada variabel initdefault dan jelaskan maksudnya.
4. Apa yang dimaksud dengan run level pada linux ? Sebutkan perbedaan file pada
/etc/rc.d/rc#.d/ yang menggunakan awalan ”S” dan awalan ”K”.
5. Apa yang dimaksud dengan perintah service dan chkconfig ?
PERCOBAAN:
1. Login sebagai root.
2. Bukalah Console Terminal dan lakukan percobaan-percobaan di bawah ini
kemudian analisa hasil percobaan.
3. Selesaikan soal-soal latihan.
PRAKTIKUM 10 LINUX BOOTING PROCESS
135
Percobaan 1 : Linux INIT Process
1. Program /sbin/init akan dijalankan pada saat booting. Eksekusi program
ini berdasarkan file /etc/inittab . Lihatlah isi file /etc/inittab dan
perhatikan mode default runlevel pada baris initdefault
# cat /etc/inittab
2. Berdasarkan runlevel yang dipilih, proses init kemudian mengeksekusi skrip
startup yang berada pada sub direktory /etc/rc.d. Skrip yang digunakan
untuk
runlevel
0
sampai
dengan
6
berada
pada
sub
direktory
/etc/rc.d/rc0.d sampai /etc/rc.d/rc6.d.
# ls -l /etc/rc.d
3. Setiap nama file pada direktori misalnya /etc/rc.d/rc5.d dimulai dengan
huruf “S” merupakan skrip startup sedangkan skrip yang dimulai dengan huruf
“K” merupakan skrip shutdown.
Angka yang mengikuti "K" atau "S"
menandakan urutan skrip yang dijalankan. Contohnya ”kudzu” denga n nilai
”05” dijalankan sebelum ”wlan” dengan nilai ”09”
# ls /etc/rc.d/rc5.d
Percobaan 2 : Menentukan default boot runlevel
1. Default boot runlevel pada file /etc/inittab diset dengan menggunakan
variabel initdefault. Jika diset "3", sistem boot menggunakan antar muka
teks pada console VGA; jika diset "5", menggunakan GUI.
2. Hapus baris initdefault yang tidak diperlukan pada file /etc/inittab.
Buatlah bari baru untuk set sistem boot menggunakan console VGA / teks
# vi /etc/inittab
PRAKTIKUM 10 LINUX BOOTING PROCESS
136
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not
have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
# Console Text Mode
#id:5:initdefault:
# Console GUI Mode
3. Setelah dilakukan perubahan variabel initdefault , lakukan reboot.
Perhatikan apakah masuk ke mode teks
# reboot
4. Lakukan perubahan kembali dari 3 ke 5 dan lakukan reboot sistem. Ingat,
jangan melakukan setting ke 6 karena sistem akan reboot terus-menerus.
Sedangkan setting 0 maka sistem tidak pernah dimulai.
Percobaan 3 : Menggunakan Console GUI
1. Kita dapat masuk ke console GUI jika sistem berada pada mode teks. Pertama
ubahlah variabel initdefault pada file /etc/inittab dan ubahlah ke
mode 3 atau dengan menggunakan perintah init
# init 3
2. Metode Manual : Jalankan aplikasi X terminal GUI dengan menjalankan
perintah “startx” pada console VGA. Untuk keluar gunakan logout
# startx
3. Metode Otomatis : Anda dapat menjalankan X terminal GUI setiap kali reboot
menggunakan
perintah
init .
Anda
harus
mengedit
variabel
initdefault ”pada file /etc/inittab seperti percobaan 2 agar setiap
booting masuk ke mode GUI. Ubahlah kembali ke mode 5.
# init 5
PRAKTIKUM 10 LINUX BOOTING PROCESS
137
Percobaan 4 : Menggunakan Virtual Console
1. Untuk mendapatkan command prompt dapat dilakukan dengan membuka
terminal pada Jendela GUI. Default-nya, Linux menjalankan 6 virtual consol
atau TTY session yang dijalankan pada console VGA. Hal ini didefinisikan
dengan statement mingetty pada file /etc/inittab. Console X terminal
GUI membuat virtual console sendiri menggunakan TTY pertama yang
tersedia yang tidak dikontrol oleh mingetty . Hal ini menyebabkan GUI
berjalan sebagai nomor 7.
Perhatikan baris mingetty pada file /etc/
inittab, virtual console nomor berapa yang dikontrol ?
# cat /etc/inittab
2. Cobalah masuk ke virtual console menggunakan <CTRL> <ALT> <F1>
sampai dengan <F6>.
3. Untuk masuk ke login GUI gunakan <CTL> <ALT> <F7>, hanya jika berada
pada run level 5 atau GUI dijalankan setelah ”startx”.
Percobaan 5 : Shutdown dan rebooting sistem
1. Perintah init akan mengubah runlevel, untuk shutdown nilainya adalah 0.
# init 0
2. Perintah shutdown menyebabkan efek yang sama.
Opsi ”–y” untuk
mengabaikan prompt pesan dan ”–h” untuk halt sistem. Opsi 0 menunjukkan
berapa lama menunggu memulai prosedur, dalam hal ini 0 menit.
# shutdown –hy 0
3. Anda juga bisa menggunakan perintah init untuk reboot sistem dengan
memasukkan runlevel 6
# init 6
PRAKTIKUM 10 LINUX BOOTING PROCESS
138
4. Perintah reboot menpunyai efek yang sama, tetapi juga mengirimkan pesan
warning ke semua user
# reboot
5. Reboot juga dapat dilakukan dengan perintah shutdown menggunakan opsi
“-r” dan menentukan delai misalnya 10 menit.
# shutdown –ry 10
Percobaan 6: Berpindah ke mode single user
1. Beberapa aktifitas membutuhkan sistem untuk log off semua user, aplikasi dan
networkin g sehingga hanya sistem administrator yang mengakses sistem dari
console VGA. Alasan lainnya adalah untuk memperbaiki password ”root”.
2. Jika sistem berjalan normal, berpindah ke mode single user dapat dilakukan
dengan perintah init dan memasukkan runlevel 1.
# init 1
3. Perintah diatas tidak memberikan warning ke user dan perintah shutdown tidak
mempunyai opsi mode single user. Hal ini akan muncul dengan menjalankan
perintah shutdown dengan delay.
# shutdown 1
Percobaan 7: Berpindah ke mode single user pada layar Grub
1. Anda dapat masuk ke mode single user secara langsung setelah menghidupkan
power sistem.
2. Hidupkan sistem Anda
3. Jika screen Linux muncul, Anda dapat memilih kernel yang diinstal pada
sistem. Ketik ”a” untuk ”append”.
Maka akan didapa tkan prompt untuk
menambah opsi boot pada file grub.conf .
PRAKTIKUM 10 LINUX BOOTING PROCESS
139
grub append> ro root=LABEL=/
4. Tambahkan “1” pada akhir string
grub append> ro root=LABEL=/1
5. Tekan Enter. Sistem akan melanjutkan booting, tetapi akan menuju ke promp
root # tanpa menanyakan username dan password
Percobaan 8: Berpindah ke default runlevel dari mode single user
1. Perintah “exit” akan menyebabkan sistem keluar dari runlevel 1 dan mengubah
ke default runlevel untuk sistem. Anda juga dapat menggunakan perintah init
(misalnya “init 3” dan “init 5”)
bash-2.05b# exit
Percobaan 9: Memperbaiki password root
3. Kadangkala anda kehilangan atau lupa pada password root, atau sistem
administrator sebelumnya tidak memberi password kepada Anda
4. Masuk ke console VGA dan tekan <CTRL> <ALT> <DEL>. Sistem akan
shutdown
5. Reboot sistem dan masuk ke mode single user
6. Setelah masuk ke command prompt, ubahlah password root. Mode single user
mengasumsikan orang pada consol sebagai “root”, sehingga anda tidak perlu
menentukan nama user “root”
7. Masuk ke default runlevel dengan menggunakan perintah “exit”.
PRAKTIKUM 10 LINUX BOOTING PROCESS
140
Percobaan 10: Menggunakan perintah chkconfig
1. Perintah chkconfig digunakan untuk melihat aplikasi mana yang dimulai
pada setiap runlevel. Opsi ”—list” untuk melihat daftar paket pada /etc/init.d
dan runlevel yang ”on” atau ”off”
# chkconfig –list
2. Anda dapat menggunakan chkconfig untuk mengubah runlevel untuk paket
tertentu.
Misalnya Sendmail akan dimulai pada startup runlevel 3 atau 5.
Ubahlah Sendmail tidak dimulai pada saat boot.
3. Perintah chkconfig dapat digunakan dengan grep untuk menentukan run
level dimana Sendmail akan berjalan. Disini terlihat berjalan pada level 3 dan
5.
# chkconfig –list | grep mail
4. Perintah chkconfig dengan opsi “—level” mengindikasikan bahwa beberapa
aksi dikerjakan pada runlevel yang dimasukkan seba gai nilai.
Argumen
pertama pada perintah adalah paket dan argumen kedua apakah “on” atau
“off”.
Dalam hal ini Anda ingin Sendmail tidak dimulai jika masuk ke
runlevel 3 dan 5
# chkconfig –level 35 sendmail off
5. Hal tersebut juga dapat dilakukan tanpa ops i “—level”, otomatis chkconfig
akan mengubah runlevel 3 dan 5
# chkconfig sendmail off
6. Anda juga dapat shutdown permanen dan stop dari running saat ini.
# service sendmail stop
7. Anda dapat menggunakan chkconfig untuk memeriksa kembali pekerjaan
Anda
# chkconfig –list | grep mail
PRAKTIKUM 10 LINUX BOOTING PROCESS
141
LATIHAN:
1. Pada percobaan 1 lihatlah urutan eksekusi pada saat startup dan shutdown pada
runlevel 5 untuk file :
a. netfs
b. pcmcia
c. nfslock
d. kudzu
e. portmap
f. wlan
g. isdn
h. network
i. syslog
j. keytable
2. Laporkan hasil perubahan password pada mode single user pada percobaan 9.
Gunakan password root “redhat” (jangan lainnya !).
3. Apakah kegunaan menggunakan perintah service ? Berikan contoh.
4. Apa kegunaan menggunakan perintah chkconfig ? Berikan contoh.
LAPORAN RESMI:
1.
Analisa hasil percobaan yang Anda lakukan.
2.
Kerjakan latihan diatas dan analisa hasil tampilannya.
3.
Berikan kesimpulan dari praktikum ini.