搜尋此網誌
RHCE 開機流程
Boot
Linux在開機的流程,主要如下圖。
開機之後主要是先由BIOS進入主記憶體,進行硬體以及基本功能的診斷和初始化。
BIOS執行完系統的檢測之後,會將權限交給MBR(Master Boot Record)。
MBR會選擇Boot Loader,Boot Loader會載入kernel。
kernel會呼叫init,init就會載入設定的runlevel啟動相對應的服務,讓使用者可以登入系統。
MBR
MBR是開機很重要的一環,MBR存在於硬碟的第一磁軌的第一磁區,是電腦開機第一個讀取的磁區。
MBR共512bytes,主要紀錄硬碟相關的資訊,以及各分割區的資訊。
MBR主要分為三個部分。
Boot Partition Loader主要用以檢查Partition Table是否正確,並將權限轉交給Boot Loader。
Partition Table主要紀錄分割區相關的資訊,每個分割區可用16bytes,最多四個分割區。
Signature主要為驗證MBR是否有效。
MBR會決定是由哪個Boot Loader來進行開機,並進行權限轉移。
MBR中的Boot Loader會經由使用者選擇或預設的方式將權限轉交給其他Boot Loader。
當其他Boot Loader得到權限之後就會去載入各自的Kernel。
這邊要特別注意的是,Windows的Boot Loader不認得其他OS的Boot Loader。
所以如果要安裝雙系統,要先安裝Windows,再安裝Linux,讓Linux的Boot Loader覆寫到MBR。
Init & Runlevel
Kernel呼叫的第一隻程式就是init,init被呼叫之後會載入配置,也就是inittab。
inittab最重要的部分就是runlevel的設定,不同的runlevel可以決定使用者有多少服務可以使用。
開機預設的runlevel可在/etc/inittab中更改設定。
Linux中總共有7個runlevel,分別如下:
0 = 關機
1 = 單人模式,不用帳號密碼,管理員權限,文字介面,用以維護系統。
2 = 多人模式,使用者需輸入帳號密碼登入,文字介面,無網路功能。
3 = 多人模式,使用者需輸入帳號密碼登入,文字介面,有網路功能。
4 = 系統保留功能。
5 = (預設)多人模式,使用者需輸入帳號密碼登入,視窗化介面,有網路功能。
6 = 重新開機。
之後會依照runlevel載入服務,接著就可以讓使用者登入系統,並進行各種shell。
使用 #runlevel 可以查詢目前的runlevel,以及利用 #init [runlevel number] 切換runlevel。
若系統設定為1~3,可利用 #startx 啟動圖形介面,當使用者登出圖形介面則會回到文字介面。
Grub
Linux的Boot Manager為Grub,主要設定檔位於/boot/grub/grub.conf,此檔案可設定開機選單。
default:設定為預設開機設定。
timeout:開機選項逾時時間。
splashimage=:選單背景圖位置。
hiddenmenu:隱藏選單。
title = :開機設定選項標題。
root(hd0,0) :開機磁區,第一個數字為硬碟編號,第二個數字為磁區編號。
root=/dev/... : root所在的位置。
kernel :kernel所在位置。