????? 問題是你有沒有發現,既然操作系統也是軟件,那么我的計算機優勢如何認識這個操作系統 軟件并且執行它呢?開機時我的計算機系統還沒有任何軟件系統,那他要如何讀取硬盤內的操作系統文件呢?這就要牽涉計算機的開機程序了。下面我們來談一下計算機的開機程序
???? 在計算機概論里面我們談到那個可愛的BIOS 和CMOS兩個東西。CMOS是記錄各項硬件參數且嵌入在主板上面得存儲器,BIOS則是一個寫入到主板上的一個韌體(韌體就是寫入到硬件上的一個軟件程序)。這個BIOS就是在開機的時候計算機系統會主動執行的第一個程序了。
??? 接下來BIOS回去分析計算機里面有哪些存儲設備,我們以硬盤為例,BIOS會依據用戶的設置去取得能夠開機的硬盤,并且到該硬盤里面去讀取第一個扇區的MBR位置。MBR這個僅有446bytes的硬盤容量里面會放置最基本的引導加載程序,此時BIOS就功成圓滿,而接下來就是MBR內的引導加載程序工作了。
??? 這個引導加載程序的目的是在加載內核文件,由于引導加載程序是操作系統在安裝時所提供的,所以他會識別硬盤內的文件系統的格式,因此就能夠讀取內核文件,然后接下來就是內核文件的工作,引導加載程序也功成圓滿,之后就是大家所知道的操作系統的任務了
???? 用一句通俗的話說,BIOS是幫著找到家門(硬盤),硬盤中的引導加載程序就是幫著找到家里的錢(內核),然后操作系統就開始工作了
??? 簡單的說,整個開機流程到操作系統之前的動作應該是這樣的
?????BIOS:開機主動執行的韌體,會認識到第一個可開機的設備
???? MBR:第一個可開機設備的第一個扇區內的主引導分區塊,內包含引導加載程序
???? 引導加載程序(Boot loader):?? 一支可讀取內核文件來執行的軟件
???? 內核文件:?開始操作系統的功能
?由上面的說明,我們會知道,BIOS和MBR都是硬件本身會支持的功能,至于Boot Loader則是操作系統安裝在MBR上面的一套軟件。由于MBR僅有446bytes而已,因此這個引導加載程序是非常小而完美的。這個BootLoader的主要任務是一下項目。
??? 提供菜單:用戶可以選擇不同的開機選項,這也是多重引導的重要功能
?? 載入內核文件: 直接指向可開機的程序段來開始操作系統。
?? 轉交其他Loader:將引導加載功能轉交給其他loader負責
?上面的前兩點還容易理解,但是第三點很有趣!那表示你的計算機系統里面可以具有兩個以上的引導加載程序呢。有可能嗎?我們的硬盤不是只有一個MBR而已?但是引導加載程序除了可以安裝在MBR之外,還可以安裝在每個分區的引導扇區。
??? 舉一個例子來說,假設你的個人計算機只有一塊硬盤,里面分成4個分區。其中第一,二分區分別安裝了Windows及Linux,你要如何在開機的時候選擇用Windows還是Linux開機呢?假設MBR內安裝的是可以同時識別Windows和Linux操作系統的引導加載程序,那么整個流程如下
???
