首先我們來看下圖:
1、加電自檢
固件:硬件和軟件結(jié)合。加電自檢是我們按下電源會檢測硬件像cpu、內(nèi)存、網(wǎng)卡等信息。(從硬件層次檢測硬件是否可用)
2、自舉程序
檢測完之后跳轉(zhuǎn)到mbr(主引導(dǎo)記錄)里面讀取一個(gè)很重要的數(shù)據(jù)bootloader(后續(xù)的所有工作都是bootloader完成)和partition table、magic number
在線視頻教程推薦:linux視頻教程
3、bootloader載入內(nèi)核
內(nèi)核的概念: (linux是一堆源碼,在開機(jī)的時(shí)候會看到booting the kernel,從軟件層次檢測硬件是否可用)
主要作用就兩個(gè):驅(qū)動(dòng)硬件(所謂驅(qū)動(dòng)就是系統(tǒng)識別硬件,讓操作系統(tǒng)認(rèn)識硬件,從軟件識別硬件是否可用)、啟動(dòng)完init進(jìn)程其任務(wù)就完成了。
4、啟動(dòng)init進(jìn)程(linux啟動(dòng)的第一個(gè)進(jìn)程)
init進(jìn)程的任務(wù):
解釋:
init進(jìn)程的pid為1,其PPID為0,PPID就是父進(jìn)程ID,其父進(jìn)程是內(nèi)核任務(wù)調(diào)度器。
linux是一個(gè)實(shí)時(shí)系統(tǒng)就是將處理時(shí)間按時(shí)間分配,如果你這次時(shí)間沒有處理完下次繼續(xù)給你分配時(shí)間的時(shí)候再處理,這就需要一個(gè)CPU時(shí)間調(diào)度器,也就是PID為0的內(nèi)核調(diào)度器。
linux中由一個(gè)進(jìn)程派生出的進(jìn)程成為子進(jìn)程。如果一個(gè)進(jìn)程的父進(jìn)程死了,其子進(jìn)程也不能存在。linux中父進(jìn)程死掉子進(jìn)程存活的進(jìn)程成為孤兒進(jìn)程,在linux中不允許孤兒進(jìn)程的存在。linux掃描到存在孤兒進(jìn)程的時(shí)候會自動(dòng)將這個(gè)孤兒進(jìn)程的父進(jìn)程設(shè)置為init進(jìn)程(PID為1的進(jìn)程)。
子進(jìn)程死亡,父進(jìn)程應(yīng)該切換和子進(jìn)程之間的聯(lián)系,這個(gè)子進(jìn)程成為僵尸進(jìn)程,J進(jìn)程,這種進(jìn)程也不允許存在。
5、讀取/etc/inittab文件
總結(jié):
(1)fireware(固件)開機(jī)自檢,檢驗(yàn)硬件設(shè)備是否正常,如果正常則讀取硬盤上面存放數(shù)據(jù)的第一個(gè)位置MBR(Master Boot Record)里面的bootloader
(2)BootLoader里面最重要的是存放了一個(gè)自舉程序(GRUB)
(3)GRUB 載入內(nèi)核(kernel) 驅(qū)動(dòng)硬件、啟動(dòng)init進(jìn)程
(4)init進(jìn)程讀取/etc/inittab
首先執(zhí)行腳本:/etc/rc.d/rc.sysinit (不管任何運(yùn)行級別都會執(zhí)行這個(gè)腳本),然后根據(jù)initdefault查到默認(rèn)的運(yùn)行級別并且去/etc/rc.d/rcN.d
下執(zhí)行腳本,以S開頭的腳本是啟動(dòng)服務(wù)的腳本,以K開頭是關(guān)閉服務(wù)的腳本
(5)最后會建立終端,等待用戶登錄。顯示user、name。
相關(guān)文章教程推薦:linux教程