所謂開機啟動流程,是指計算機從通電開機到進入登錄界面的程序,熟悉開機啟動流程,了解其背后的原理,可以更好的深入了解Linux的核心作業原理,
1、加載BIOS
BIOS(basic input output system),直譯為“基本輸入輸出系統”,
bios資訊極為重要,包含了CPU、設備啟動順序、硬碟、記憶體、時鐘等各種計算機重要屬性的基本資訊,
bios一般搭載在計算機的主板上,一般可以按F12、FN等快捷鍵進入bios管理系統,各個硬體品牌可能有所不同,
通過讀取bios資訊,計算機選擇讀取存放了Linux系統的硬碟,將控制權交給該硬碟的第一個扇區,Linux開始控制系統,
2、讀取MBR
MBR(Master Boot Record),主引導記錄,
位于硬碟的第一個扇區,大小為512位元組,存放了預啟動資訊、磁區表資訊,由引導區(446位元組)和磁區表(64位元組)組成,
引導區的作用之一是找到標記為活動(ACTIVE)的磁區,并將活動磁區的引導區讀入記憶體,
磁區表則記錄硬碟的磁區資訊,
系統找到BIOS所指定的硬碟的MBR后,就會將其復制到0×7c00地址所在的物理記憶體中,其實被復制到物理記憶體的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了,
3、運行Boot Loader
boot loader是呼叫作業系統內核前運行的一個小程式,其作用為初始化硬體系統,將其調整到一個合適的狀態為運行內核作業系統做準備,
Boot Loader有若干種,其中Grub、Lilo和spfdisk是常見的Loader,這里以Grub為例,
系統讀取記憶體中的grub配置資訊(一般為menu.lst或grub.lst),并依照此配置資訊來啟動不同的作業系統,
4、呼叫內核
根據grub設定的內核映像所在路徑,系統讀取記憶體映像,并進行解壓縮操作,
系統將解壓后的內核放置在記憶體之中,并呼叫start_kernel()函式來啟動一系列的初始化函式并初始化各種設備,完成Linux核心環境的建立,至此,Linux內核已經建立起來了,基于Linux的程式應該可以正常運行了,
5、運行init程式
內核被加載后,第一個運行的程式便是/sbin/init,該行程會完成很多作業,這里一一列舉:
首先該檔案會讀取/etc/inittab檔案,并依據此檔案設定Linux的運行等級,
然后執行/etc/rc.d/rc.sysinit腳本程式,設定PATH、 設定網路配置(/etc/sysconfig/network)、啟動swap磁區、設定/proc等等,
執行緒init的最終完成狀態是能夠使得一般的用戶程式可以正常地被執行,從而真正完成可供應用程式運行的系統環境,
6、啟動內核模塊,根據執行等級啟動相應的腳本程式
7、執行/etc/rc.d/rc.local
這一步非常有用,是可以進行個性化的地方,比如你想開機自啟動一個程式,可以將該程式的啟動路徑粘貼至改檔案下,這樣就能實作開機自啟動,
8、登錄
執行/bin/login程式,進入登錄狀態,輸入賬號密碼后進入作業系統
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/258943.html
標籤:其他
上一篇:軟體設計師中級之第二章-作業系統
下一篇:acwing 841 字串哈希
