Tuesday, November 2, 2010

Qúa trình boot hệ thống trong Linux


Sau khi quá trình boot của hệ thống phần cứng kết thúc thì hệ điều hành sẽ được khởi động để người dùng sử dụng.

 
Quá trình boot sẽ chạy một số scripts lưu trong các thư mục con của thư mục /etc/rc.d. Trước tiên sẽ chạy các scripts lưu trong rc1.d-nơi chứa các chức năng cơ bản để cung cấp cho người dùng để có thể chạy được hệ thống. Giai đoạn này được biết đến như là "single user mode". Sau khi giai đoạn này kết thúc thì sẽ tiếp tục đến các scripts trong các thư mục con khác, tùy thuộc vào các cách cấu hình và các startup mode(run level).

1.Quá trình boot tiếp theo

runlevel boot mặc định được đặt trong file /etc/inittab với biến initdefault xác định các runlevel mà quá trình boot tiếp theo sẽ được tiến hành.

vd:
[root@CentOS5 /]# cat etc/inittab
#
# inittab This file describes how the INIT process should set up
# the system in a certain run-level.
#
# Author: Miquel van Smoorenburg,
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# 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:5:initdefault:
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
....
ta có thể thấy được các quy định về runlevel từ 0-6. Vậy chúng có nghĩa gì?

Như đã nói ở trên, biến initdefault sẽ quy định xem boot sequence tiếp theo sau boot default. Ở đây ta có thể thấy rằng initdefault nhận giá trị =5. Điều này có nghĩa là sau khi boot default xong thì sẽ khởi tạo 1 phiên hoạt động với chế độ GUI mode(X11).

Nếu như initdefault=3 thì phiên hoạt động sẽ là Text mode

2.Đưa về chế độ GUI(Graphic User Interface)

Nếu như đang ở chế độ textmode thì sẽ có 2 cách để trở về graphic mode(GUI)
  • Manual method: khởi động X terminal GUI mỗi lần cần bằng câu lệnh "startx" tại text mode.
  • Automatic method:có thể đưa Linux về chế độ tự khởi động GUI cho mỗi lần đăng nhập bằng cách sử dụng init command. Nếu muốn giữ nguyên chế độ sau mỗi lần khởi động thì cần phải thay đổi biến initdefault trong /etc/inittab.

3.Virtual Terminal.

Linux có 7 virtual console phiên làm việc chạy trong chế độ VGA console
  • Từ session 1 tới session 6 là text mode.
  • Nếu đang trong chế độ GUI, có thể chuyển qua chế độ text mode bằng cách nhấn lần lượt các phím Ctrl+Alt+Fx, Fx là từ F1->F6, F7 là chế độ GUI mode.
  • Với các runlevel ta có thể thiết lập các chế độ cho hệ thống bằng cách sử dụng câu lệnh init như:
  • Halt/Shutdown(runlevel 0)

[root@CentOS5 /]# init 0

  • Reboot(runlevel 6)

[root@CentOS5 /]# init 6

4.Set runlevel cho các dịch vụ.

Mỗi 1 chương trình sẽ đưa script khởi động của nó vào thư mục /etc/init.d và đưa symbolic links(pointer) đến các script này vào các subfolder tương ứng trong /etc/rc.d/rc.X ( với X tương ứng từ 0-6). Để kiểm tra runlevel tương ứng với các chương trình ta dùng lệnh chkconfig

[root@CentOS5 /]# chkconfig --list

NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off
......
Bây giờ ta sẽ sử dụng chkconfig để khởi động NetworkManager với các runlevel 3 và 5

Để add 1 service với các runlevel ta dùng cấu trúc:
chkconfig --level

(Xem chi tiết bằng lệnh man: man chkconfig)

[root@CentOS5 /]# chkconfig --level 35 NetworkManager on

Kiểm tra lại:

[root@CentOS5 /]# chkconfig --list | grep Net

NetworkManager 0:off 1:off 2:off 3:on 4:off 5:on 6:off


Vậy là đã thành công trong việc add runlevel cho NetworkManager

***Lưu ý rằng:chkconfig không khởi động các chương trình trong thư mục /etc/init.d, nó chỉ cấu hình các chương trình này được khởi động hoặc bỏ qua khi hệ thống boot.

==============End============

1 comment:

  1. Lưu ý rằng:chkconfig không khởi động các chương trình trong thư mục /etc/init.d, nó chỉ cấu hình các chương trình này được khởi động hoặc bỏ qua khi hệ thống boot.

    >>Luu y nay nghia la sao ban, giai thich ro hon duoc hog? thanks!

    ReplyDelete