首先我們來看下圖:
#1、加電自我檢測
#韌體:硬體和軟體結合。加電自我檢測是我們按下電源會偵測硬體像cpu、記憶體、網路卡等資訊。 (從硬體層次偵測硬體是否可用)
2、自舉程式
##檢測完後跳到mbr(主引導記錄)裡面讀取一個很重要的資料bootloader(後續的所有工作都是bootloader完成)和partition table、magic number
線上影片教學推薦:#3、bootloader載入核心
核心的概念: (linux是一堆原始碼,在開機的時候會看到booting the kernel,從軟體層次檢測硬體是否可用)主要作用就兩個:驅動硬體(所謂驅動就是系統辨識硬件,讓作業系統認識硬件,從軟體辨識硬體是否可用)、啟動完init進程其任務就完成了。
4、啟動init行程(
linux啟動的第一個行程
)
init行程的任務:##################解釋:######init行程的pid為1,其PPID為0,PPID就是父行程ID,其父行程為核心任務調度器。 ######linux是一個即時系統就是將處理時間按時間分配,如果你這次時間沒有處理完下次繼續給你分配時間的時候再處理,這就需要一個CPU時間調度器,也就是PID為0的核心調度器。 ######linux中由一個行程衍生出的行程成為子行程。如果一個進程的父進程死了,其子進程也不能存在。 linux中父進程死掉子程序存活的進程成為孤兒進程,在linux中不允許孤兒進程的存在。 linux掃描到存在孤兒程序的時候會自動將這個孤兒程序的父程序設定為init程序(PID為1的程序)。 ######子進程死亡,父進程應該切換和子進程之間的聯繫,這個子進程成為殭屍進程,J進程,這種進程也不允許存在。 ###5、讀取/etc/inittab檔案
總結:
(1)fireware(韌體)開機自檢,檢驗硬體設備是否正常,如果正常則讀取硬碟上面存放資料的第一個位置MBR(Master Boot Record)裡面的bootloader
(2)BootLoader裡面最重要的是存放了一個自舉程式(GRUB)
(3)GRUB 載入核心(kernel) 驅動硬體、啟動init進程
(4)init進程讀取/etc/inittab
先執行腳本:/etc/rc.d/rc.sysinit (不管任何執行等級都會執行這個腳本),然後根據initdefault查到預設的運行等級並且去/etc/rc.d/rcN.d
下執行腳本,以S開頭的腳本是啟動服務的腳本,以K開頭是關閉服務的腳本
(5 )最後會建立終端,等待使用者登入。顯示user、name。
相關文章教學推薦:linux教學
#以上是linux系統引導流程的詳細內容。更多資訊請關注PHP中文網其他相關文章!