您好,登錄后才能下訂單哦!
首先我們來看下圖:
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系統引導流程的詳細內容,更多請關注億速云其它相關文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。