centos 6啟動流程:(1)post:加電自檢(power on and self testing)post --> boot sequence(bios) --> boot loader (mbr) --> kernel(ramdisk) --> rootfs(readonly)–> switchroot --> /sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 設定預設執行級別 --> 執行系統初始化指令碼,完成系統初始化 --> 關閉對應級別下需要停止的服務,啟動對應級別下需要開啟的服務 --> 啟動終端並列印登入提示符 [–> 啟**形終端]
post程式存放在rom晶元的bios(basic input and output system)上,是一種cmos (互補金屬氧化物)晶元。
rom+ram是cpu可訪問的儲存空間,rom和物理記憶體ram
(2)啟動順序boot sequence
按次序查詢各引導裝置,第乙個有引導程式的裝置即為本次啟動要用到的裝置。
(3)bootloader:引導載入器,是乙個引導程式,windows和linux中的bootloader:
windows:ntloader
linux:
lilo:linux loader
grub:grand uniform bootloader(統一引導載入器)
grub 0.x:grub legacy
grub 1.x:grub2
引導程式功能:提供乙個選單,允許使用者選擇要啟動的系統或不同的核心版本,把使用者選定的核心裝載到ram中的特定空間中,解壓、展開,而後把系統控制權移交給核心。
(4)mbr:master boot record,主引導記錄
mbr位於記憶體最初的512bytes,其中前面446bytes是bootloader,中間64bytes是分割槽表,後面2bytes值為55aa,55aa表示該mbr有效,非55aa表示該mbr無效。
(5)grub
grub分為2階段,分別如下:
1)第一階段:載入bootloader;
2)第1.5階段:啟動filesystem驅動;
3)第2階段:依據/boot/grub/grub.conf配置檔案,進行磁碟分割槽。
(6)核心啟動
1)自身初始化
1 探測可識別到的所有硬體裝置;
2 載入硬體驅動程式(有可能會借助於ramdisk載入驅動);
3 以唯讀方式掛載根檔案系統,當啟動沒有問題,再改為讀寫掛載,防止核心有問題,導致資料丟失;
4 執行使用者空間的第乙個應用程式:/sbin/init
(7)init程式的型別:
centos 5-系統之前,叫做sysv init,配置檔案為/etc/inittab;
centos 6系統叫做upstart,是ubuntu研發的,配置檔案:/etc/inittab和/etc/init/ * .conf;
centos 7系統叫做systemd,配置檔案:/usr/lib/systemd/system/和/etc/systemd/system/。
(8)ramdisk
linux核心的特性之一:使用緩衝和快取來加速對磁碟上的檔案訪問。
centos 5的ramdisk叫做initrd,工具程式為mkinitrd,centos 6,centos 7將ramdisk改為ramfs,他們的ramdisk叫做initramfs,工具程式為dracut和mkinitrd,mkinitrd是乙個封裝的shell指令碼,還是利用dracut來建立的。
(9)/sbin/init
centos 5: sysv init
執行級別:為了系統的執行或維護等目的而設定的機制;
0-6:7個級別;
0:關機, shutdown或init 0;
1:單使用者模式(single user),root使用者,無須認證;維護模式;安全模式;
2:多使用者模式(multi user),會啟動網路功能,但不會啟動nfs;維護模式,帶網路功能的安全模式;
3:多使用者模式(mutli user),完全功能模式;文字介面;正常模式;
4:預留級別:目前無特別使用目的,但習慣以同3級別功能使用;
5:多使用者模式(multi user), 完全功能模式,圖形介面;正常模式;
6:重啟,reboot
預設級別:3, 5;
級別切換:init #
級別檢視:who -r
、runlevel
配置檔案:/etc/inittab
適用於centos 5系統:
每行定義一種action以及與之對應的process
id:runlevels:action:process
id:乙個任務的識別符號;
runlevels:在哪些級別啟動此任務,#,###,也可以為空,表示所有級別;
action:在什麼條件下啟動此任務;
process:任務;
action:定義任務何時啟動及如何啟動
wait:等待切換至此任務所在的級別時執行一次;
respawn:一旦此任務終止,就自動重新啟動之;
initdefault:設定預設執行級別;此時,process省略;
sysinit:設定系統初始化方式,此處一般為指定/etc/rc.d/rc.sysinit指令碼;
例如:/etc/inittab檔案中:
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0 傳遞引數0
l1:1:wait:/etc/rc.d/rc 1
…………
l6:6:wait:/etc/rc.d/rc 6
意味著去啟動或關閉/etc/rc.d/rc3.d/目錄下的服務指令碼所控**務;
k*:要停止的服務;k##* ,優先順序,數字越小,越是優先關閉;依賴的服務先關閉,而後關閉被依賴的;
s*:要啟動的服務;s##*,優先順序,數字越小,越是優先啟動;被依賴的服務先啟動,而依賴的服務後啟動;
對於同乙個服務,關閉的數字大,啟動的數字就小。
rc指令碼:接受乙個執行級別數字為引數;
指令碼框架:
for srv in /etc/rc.d/rc#.d/k*; do
$srv stop
done
for srv in /etc/rc.d/rc#.d/s*; do
$srv start
done
/etc/init.d/* (/etc/rc.d/init.d/*)(兩個目錄是鏈結)指令碼執行方式:
# /etc/init.d/srv_script
# service srv_script
chkconfig命令:管控/etc/init.d/每個服務指令碼在各級別下的啟動或關閉狀態。
檢視:chkconfig --list [name]
新增:chkconfig --add name
能被新增的服務的指令碼定義格式之一:
#!/bin/bash
## chkconfig: lll nn nn runlevel 啟動優先順序 關閉優先順序
# description:
刪除:chkconfig --del name
–level levels:指定要控制的級別;預設為2345;
注意:正常級別下,最後啟動的乙個服務s99local沒有鏈結至/etc/init.d下的某指令碼,而是鏈結至了/etc/rc.d/rc.local (/etc/rc.local)指令碼,因此,不便或不需寫為服務指令碼的程式期望能開機自動執行時,直接放置於此指令碼檔案中即可。
tty1:2345:respawn:/usr/sbin/mingetty tty1
... ...
tty6:2345:respawn:/usr/sbin/mingetty tty6
tty7:5:respawn:/etc/x11/
mingetty會呼叫login程式;login是用來登入的程式,開啟虛擬終端的程式除了mingetty之外,還有諸如getty等。
centos 5系統初始化指令碼:/etc/rc.d/rc.sysinit(1) 設定主機名;
(2) 設定歡迎資訊;
(3) 啟用udev和selinux;
(4) 掛載/etc/fstab檔案中定義的所有檔案系統;
(5) 檢測根檔案系統,並以讀寫方式重新掛載根檔案系統;
(6) 設定系統時鐘;
(7) 根據/etc/sysctl.conf檔案來設定核心引數;
(8) 啟用lvm及軟raid裝置;
(9) 啟用swap裝置;
(10) 載入額外裝置的驅動程式;
(11) 清理操作。
centos 6的init程式為upstart,但init命令依然為/sbin/init,其配置檔案為/etc/init/*.conf, /etc/inittab(僅用於定義預設執行級別)。
注意: *.conf為upstart風格的配置檔案。
rcs.conf:系統初始化指令碼;
rc.conf:啟動和關閉服務;
start-ttys.conf:啟動虛擬終端。
centos 7的init程式為systemd,配置檔案為/usr/lib/systemd/system/* ,/etc/systemd/system/ *,完全相容sysv指令碼機制,因此,service命令依然可用,不過,建議使用systemctl命令來控**務:
# systemctl name[.service]
CentOS系統啟動流程
centos6 post開機自檢 執行cmos中的bios程式,載入第乙個啟動磁碟的mbr中的bootloader 由bootloader讀取kernel 通過掛載臨時根目錄initramfs載入核心模組 驅動程式 然後解除安裝臨時根目錄,掛載真正的根目錄。啟動init程式 指定 etc initt...
CentOS系統啟動流程
雖然知識很基礎,但是對於我們理解linux的工作機制是有幫助的。因為在centos 5 centos 6以及centos 7使用的初始化程式init各不相同,雖然centos 6和centos 7也都有向後相容,但在工作機制上還是存在一些差異,所以以下主要介紹centos 5 6系統啟動流程。啟動流...
CentOS系統啟動流程詳解(一)
一 linux組成 linux kernel rootfs kernel 程序管理 記憶體管理 網路管理 驅動程式 檔案系統 安全功能 rootfs 程式和glibc 庫 函式集合,function,呼叫介面 標頭檔案負責描述 過程呼叫 procedure,無返回值函式呼叫 function 程式 ...