1、Linux系統啟動流程:POST 加電自檢 — BIOS(Boot Sequence)–>MBR(bootloader,446)(加載前512字節后的驅動程序,進入/boot目錄,加載內核)–>Kernel–>initrd–>(系統根路徑 /)(ROOTFS)/sbin/init(/etc/inittab)
2、init程序的類型:
SysV: init, CentOS 5 配置文件:/etc/inittab
Upstart: init,CentOS6 配置文件:/etc/inittab, /etc/init/*.conf
Systemd:systemd, CentOS 7 配置文件:/usr/lib/systemd/system;/etc/systemd/system
init讀取其初始化文件:/etc/inittab
初始運行級別(RUN LEVEL)
0:halt 關機
1: single user mode, 直接以管理員身份切入 修改root密碼
2:multi user mode, no NFS
3: multi user mode, text mode
4:reserved 保留
5: multi user mode, graphic mode
6: reboot
系統初始化腳本:/etc/rc.d/rc.sysinit
激活udev和selinux;
根據/etc/sysctl.conf文件,來設定內核參數;
設定時鐘時鐘;
裝載鍵盤映射;
啟用交換分區;
設置主機名;
根文件系統檢測,并以讀寫方式重新掛載;
激活RAID和LVM設備;
啟用磁盤配額;
根據/etc/fstab,檢查并掛載其它文件系統;
清理過期的鎖和PID文件;
對應運行級別的腳本目錄
捕獲某個關鍵字順序
定義UPS電源終端/恢復腳本
在虛擬控制臺生成getty
在運行級別5初始化X11
切換runlevel:init #
查看運行級別:runlevel: who -r
總結:/sbin/init–> (/etc/inittab) –> 設置默認運行級別–> 運行系統初始腳本、完成系統初始化–> (關閉對應下需要關閉的服務)啟動需要啟動服務–> 設置登錄終端
在CentOS 6 init程序為: upstart, 其配置文件:/etc/inittab, /etc/init/*.conf,配置文件的語法遵循upstart配置文件語法格式
3、系統引導grub.conf
default=0 # 設定默認啟動的title的編號,從0開始
timeout=5 # 等待用戶選擇的超時時長,單位是秒
splashimage= # grub的背景圖片
hiddenmenu # 隱藏菜單
password xxxxxx / password –md5 編輯加密
title # 內核標題,或操作系統名稱,字符串,可自由修改
root (hd0,0) # 內核文件所在的設備;對grub而言,所有類型硬盤一律hd,格式為(hd#,N);hd#,
#表示第幾個磁盤;最后的N表示對應磁盤的分區;
kernel # 內核文件路徑,及傳遞給內核的參數
initrd # ramdisk文件路徑
4、安裝grub :(可修復破壞磁盤前446字節的情況)
# grub
grub> root (hd0,0)
grub> set (hd0)
安裝grub第二種方式:(修復1.5階段)
# grub-install –root-directory=/path/to/boot’s_parent_dir /PATH/TO/DEVICE
5、Kernel初始化的過程:
設備探測
驅動初始化(可能會從initrd(initramfs)文件中裝載驅動模塊)
以只讀掛載根文件系統;
裝載第一個進程init(PID:1)
/sbin/init:(讀取/etc/inittab)upstart: systemd:
id:runlevels:action:process
id: 標識符
runlevels: 在哪個級別運行此行;
action: 在什么情況下執行此行;
process: 要運行程序;
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
ACTION:
initdefault: 設定默認運行級別
sysinit: 系統初始化
wait: 等待級別切換至此級別時執行
respawn: 一旦程序終止,會重新啟動
/etc/rc.d/rc.sysinit:
##: 關閉或啟動的優先次序,數據越小越優先被選定
先關閉以K開頭的服務,后啟動以S開頭的服務;
6、chkconfig
# chkconfig: runlevels SS KK 當chkconfig命令來為此腳本在rc#.d目錄創建鏈接時,runlevels表示默認創建為S*開頭的鏈接,-表示沒有級別默認為S*開頭的鏈接;除此之外的級別默認創建為K*開頭的鏈接;
S后面的啟動優先級為SS所表示的數字;K后面關閉優先次序為KK所表示的數字;
# description: 用于說明此腳本的簡單功能; \, 續行
chkconfig –list: 查看所有獨立守護服務的啟動設定;獨立守護進程!
chkconfig –list SERVICE_NAME
chkconfig –add SERVICE_NAME
chkconfig –del SERVICE_NAME
chkconfig [–level RUNLEVELS] SERVICE_NAME {on|off}
如果省略級別指定,默認為2345級別
原創文章,作者:cui,如若轉載,請注明出處:http://www.www58058.com/86151