歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 學習鳥哥的Linux私房菜筆記(17)——Linux引導流程

學習鳥哥的Linux私房菜筆記(17)——Linux引導流程

日期:2017/3/1 13:37:18   编辑:關於Linux

一、系統引導流程

第一步:固件fireware(CMOS/BIOS)——POST加點自檢(與操作系統無關)

這一步主要是檢查硬盤等硬件是否能正常工作

CMOS:是固化在主板上,詳細:http://school.cfan.com.cn/news/cfannews/2007-06-06/1181111816d66664.shtml

BIOS:BIOS是固件的操作界面

CMOS是用來保存硬件參數信息的,而BIOS是用來修改這些參數的程序,簡單地說:BIOS就是用來設置CMOS參數的手段,CMOS裡面保存了BIOS設定的參數和結果,即“我們通過BIOS設置程序對CMOS參數進行修改”,比如我們需要修改系統啟動順序,在調整時,我們是通過BIOS設置為“光驅→硬盤→軟驅”依次啟動的,那麼這個啟動順序的數據就保存在CMOS中。

hwclock硬件時鐘(固化在固件中的時鐘)

\

可以看到我的系統時鐘和硬件時鐘不同,下面來修改系統時鐘和硬件時鐘。

如果hwclock是正確的

\

可以用hwclock –help 查看參數

第二步:自舉程序BootLoader(GRUB)——載入內核

MBR(mast boot record):位於磁盤的第一個柱面的第一個扇區

關於MBR詳細請看:http://blog.csdn.net/hbrqlpf/article/details/3007863

/etc/grub.conf配置文件中記錄關於系統內核的詳細信息,我們進去看一下

\

系統內核版本是2.6.18

2:表示主版本號

6:表示次版本號(奇數表示測試版)

18:末版本號

後面還記錄了內核文件的路徑root=LABEL=/rhgb quiet initrd /initrd-2.6.18-128.e15.img

第三步:載入內核後(Kernel)——驅動硬件

啟動進程(init)

系統首先會啟動init進程,該進程啟動後讀取inittab文件,執行缺省運行級別,從而繼續引導過程。在Linux系統中,init是第一個可以存在的進程,它的PID恆為1,但它必須向一個更高級的功能負責:PID為0的內核調度器(Kernel scheduler),從而獲得CPU時間。

孤兒進程:父進程死掉後子進程還存在,則子進程被稱為孤兒進程(系統檢測到孤兒進程後會讓init做父進程)。

僵屍進程:子進程死掉後父進程不知道,則子進程被稱為僵屍進程。

第四步:讀取執行配置文件/etc/inittab

\

0:表示關機

1:表示單用戶模式(只有root賬號,類似於Windows的安全模式,沒有圖形界面)

2:字符界面多用戶模式,沒有NFS服務

3:字符界面多用戶模式,有NFS服務

4:待使用(自定義級別)

5:圖形化的多用戶模式(系統缺省級別)

6:表示重啟

查看當前系統的運行級別(runlevel)

\

切換運行級別 ( init 級別)

\

二、inittab文件剖析

1、在inittab中所有條目采取以下格式

id:run-levels:action:process

id:標識符,一般為兩位數字字母

run-level:指定運行級別,可以指定多個

action:指定運行狀態

process:指定要運行的腳本/命令

2、action常用取值

initdefault:指定系統缺省啟動的運行級別(例如在裡面可以修改運行級別2後系統啟動後進入字符界面)

sysinit:系統啟動執行process中指定的命令。

wait:執行process中的命令,並等其結束後再執行其他命令

once:執行process中的命令,不等待其結束

ctrlaltdel:按下ctrl+alt+del時執行process指定的命令

powerfail:當出現電源錯誤時執行process指定的命令,不等待其結束

powerokwait:當電源恢復時執行process指定命令

respan:一旦process命令終止,便重新運行該命令

3、各個級別服務程序腳本

/etc/rc.d/init.d目錄下包含各個運行級別的服務程序腳本

\

/etc/rc.d/rc[0123456].d分別存放對應運行級別的服務程序腳本的符號鏈接,鏈接到init.d目錄中的相應腳本

\

K代表殺死該進程

S代表啟動該腳本進程

K和S後面的數字代表執行順序

Copyright © Linux教程網 All Rights Reserved