About Me

Foto saya
cimahi, jawa barat, Indonesia
siswi kelas 4 Teknik Komputer Jaringan-A di SMKN 1 Cimahi

Minggu, 28 November 2010

PROSES BOOTING

Booting

1. Booting adalah istilah teknologi informasi dalam bahasa Inggris yang mengacu kepada proses awal menyalakan komputer dimana semua register prosesor disetting kosong, dan status mikroprosesor/prosesor disetting reset. Kemudian address 0xFFFF diload di segment code (code segment) dan instruksi yang terdapat pada alamat address 0xFFFF tersebut dieksekusi.

2. Poses booting adalah proses dimana suatu komputer dan operating system - nya mulai bekerja dengan menginisialisasi semua device yang ada di komputer beserta driver-driver yang akan menjalankannya.

Berikut adalah urutan proses booting yang dilakukan suatu operating system :

  1. Boot loader mencari image kernel, meloadnya ke memory kemudian dari memory, image kernel tadi dijalankan.
  2. Kernel mengenali device-device beserta driver-driver nya.
  3. Kemudian kernel menge-mount root filesystem yang merupakan salah satu langkah penting agar proses-proses lain di dalam system UNIX dapat dijalankan ( di dalam system UNIX root filesystem ditandai dengan / )
  4. Selanjutnya kernel akan menjalankan program bernama init.
  5. Program bernama init inilah yang kemudian menjalankan service selanjutnya.
  6. Proses terakhir yang dijalankan init adalah getty. Dengan getty kita mendapat suatu interface untuk masuk ke dalam system dengan memasukkan username dan password

Memahami masing-masing tahap booting di atas akan membantu kita dalam proses troubleshooting dan memahami kinerja booting komputer secara menyeluruh.

Proses booting pada linux

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 pertama yang memulai init adalah skrip /etc/rc.d/rc/sysinit.
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:
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. Skrip ini
menjalankan sekumpulan skrip pada direktory /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. Skrip 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 background), 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 graphical 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)
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

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 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 selected 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
for high speed disk access.
smb SAMBA: MS/Windows PC file sharing 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 the operating
environment for the process to be started
. /etc/rc.d/init.d/functions

case "$1" in
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

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 ] on | off | reset >
chkconfig --list
chkconfig --list
chkconfig --add
chkconfig --del
chkconfig --level 0123456 off
Contoh :
chkconfig --level 345 httpd on
- apache diberikan 3, 4 dan 5.
chkconfig --add httpd
- memulai web server daemon pada system boot.
chkconfig --del sendmail
- 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

Urutan Booting

Secara ringkas, urutan booting pada linux bisa dilihat pada gambar di bawah ini:

1. BIOS: Basic Input/Output System merupakan interface level paling bawah yang menghubungkan antara komputer dan periperalnya. BIOS melakukan pengecekan integritas memori dan mencari instruksi pada? Master Boot Record (MBR) yang terdapat pada floppy drive atau harddisk.

2. MBR menjalankan boot loader. Di linux, boot loader yang sering dipakai adalah LILO (Linux Loader) dan GRUB (GRand Unified Boot loader). Pada Red Hat dan Turunannya menggunakan GRUB sebagai boot loader.

3. LILO/GRUB akan membaca label sistem operasi yang kernelnya akan dijalankan. Pada boot loader inilah sistem operasi mulai dipanggil. Untuk mengkonfigurasi file grub, buka filenya di /boot/grub/grub.conf

4. Setelah itu, tanggung jawab untuk booting diserahkan ke kernel. Setelah itu, kernel akan menampilkan versi dari kernel yang dipergunakan, mengecek status SELinux, menegecek paritisi swap, mengecek memory, dan sebagainya.

5. Kernel yang dipanggil oleh bootloader kemudian menjalankan program init, yaitu proses yang menjadi dasar dari proses-proses yang lain. Ini dikenal dengan nama The First Process. Proses ini mengacu pada script yang ada di file /etc/rc.d/rc.sysinit.

6. Program init kemudian menentukan jenis runlevel yang terletak pada file /etc/inittab. Berdasarkan pada run-level, script kemudian menjalankan berbagai proses lain yang dibutuhkan oleh sistem sehingga sistem dapat berfungsi dan digunakan. Runlevel adalah suatu parameter yang mengatur servis yang akan dijalankan misalnya single user, reboot, shutdown, dan sebagainya. Program yang mengatur runlevel ini adalah init yang terletak pada direktori /etc/inittab. Ini adalah file di /etc/inittab:


Di file tersebut, dapat dilihat jenis-jenis runlevel. Ada 7 jenis runlevel yang bisa digunakan untuk berbagai macam keperluan yang selengkapnya dapat dilihat sebagai berikut:
0: sistem halt
1: Modus single user, untuk maintenance (backup/restore) dan perbaikan
2: Multi user tanpa dukungan jaringan
3: Multiuser dengan dukungan jaringan baerbasis console (text)
4: Tidak digunakan
5: Multiuser dengan dukungan jaringan berbasis grafis
6: reboot

Selanjutnya ada system initialization. Skrip ini berhubungan dengan setiap runlevel. Sebagai contoh, runlevel yang kita gunakan adalah runlevel 3, maka skrip yang digunakan untuk menjalankan runlevel ini ada di directory /etc/rc.d/rc3.d.

Selanjutnya di dalam file tersebut ada skrip seperti berikut:
id:3:initdefault:
pernyataan di atas menunjukkan bahwa ketika system booting, maka sistem akan menggunakan runlevel 3 yaitu system akan menggunakan konsol teks.

Selanjutnya ada skrip yang seperti dibawah ini:
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Ini menjelaskan bahwa setelah penekanan tpombol CTRL-ALT-DELETE, sistem akan tereboot setelah 3 detik.

Skrip selanjutnya berhubungan dengan penggunaan UPS (Uninterruptible Power Supply). Jika kita mempunyai UPS? yang terhubungkan dengan system kita dan listrik mati, maka UPS mengambil alih system kelistrikan system computer. Tetapi UPS hanya bisa menjalankan computer dalam batas waktu tertentu dan proses shutdown akan dimulai selama 2 menit dan memberitahukan pengguna sebagai berikut:
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
perintah ini tidak menjalankan fsck ketika reboot dan ketika mematikan system.
Jika listrik kembali menyala sebelum shutdown dieksekusi, maka perintah berikutnya untuk membatalkan shutdown:
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"

Skrip selanjutnya menjelaskan tentang virtual consoles. Virtual consoles adalah baris perintah dimana kita bisa masuk ke system linux. Untuk membuat virtual console yang baru cukup tekan ALT+F2 sampai ALT+F6. Untuk mengkonfigurasi virtual console, maka kita cukup membuka file ini dan secara asal, di file ini hanya tersedia 6 virtual consoles. Kita bisa menambahkan sampai 12 virtual console di dalam system kita.

Skrip terakhir menunjukkan jika kita ingin merubah dari command teks ke GUI. Hal ini bisa dilakukan dengan cara menekan CTRL+ALT+x, dimana x mewakili salah satu dari virtual consoles.

Jika semuanya berjalan normal, maka linux siap untuk proses booting.

Referensi:

Michael Jang, RHCE Red Hat Certified Engineer Linux Study Guide (Exam RH392), Fifth Edition
Rofiq Yuliardi, Panduan Administrasi Sistem operasi GNU/LINUX Buku 1

http://www.catatanlepas.com/component/content/article/56.html

http://www.catatanlepas.com/component/content/article/56.html

http://hasan96asyari.blogspot.com/2010/03/proses-booting-linux.html

http://hasan96asyari.blogspot.com/2010/03/proses-booting-linux.html

http://id.wikipedia.org/wiki/Booting

http://flsa.wordpress.com/2008/04/09/proses-booting/