[RHCE] Boot

Boot

Linux在開機的流程,主要如下圖。
1326902750-1974092653.jpg-RHCE開機

開機之後主要是先由BIOS進入主記憶體,進行硬體以及基本功能的診斷和初始化。BIOS執行完系統的檢測之後,會將權限交給MBR(Master Boot Record)。

MBR會選擇Boot Loader,Boot Loader會載入kernel。kernel會呼叫init,init就會載入設定的runlevel啟動相對應的服務,讓使用者可以登入系統。

MBR

MBR是開機很重要的一環,MBR存在於硬碟的第一磁軌的第一磁區,是電腦開機第一個讀取的磁區。
1326902769-357274210.jpg-RHCE開機

MBR共512bytes,主要紀錄硬碟相關的資訊,以及各分割區的資訊。MBR主要分為三個部分。Boot Partition Loader主要用以檢查Partition Table是否正確,並將權限轉交給Boot Loader。Partition Table主要紀錄分割區相關的資訊,每個分割區可用16bytes,最多四個分割區。Signature主要為驗證MBR是否有效。

MBR會決定是由哪個Boot Loader來進行開機,並進行權限轉移。
1326902760-4100355801.jpg-RHCE開機

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所在位置。

GET HELP

在linux系統中,有許多的指令可以使用,或許使用者可以記住常用的幾個指令與參數,但大部分的指令以及指令的參數使用者可能忘記或者根本沒用過;當使用者想要了解一個指令的詳細說明時,可以使用 #mam 指令 去查詢這個指令的man page,如果不太確定指令的完整名稱,可以用 # man –k keywork 去查詢包含關鍵字的man page有哪些。

如果想查詢ifconfig這個指令的說明,可以輸入 #man ifconfig,便可以看到以下畫面。
2017-02-14_150630.png-RHCE開機

左上方可以看到IFCONFIG(8),8是指令的代號,指令總共分為9種:
1: 一般使用者可以使用的指令。
2: 系統核心呼叫的函數或工具。
3: 一般的函式庫。
4: /dev底下的設備特殊文件。
5: 設定檔或者其他文件格式。
6: 遊戲。
7: 巨集、協定、文字編碼等雜項。
8: 系統管理員可以使用的指令。
9: Kernel文件。

接著左邊可以看到NAME, SYNOPSIS, NOTE, DESCRIPTION等man page段落標題。
NAME: 基本的指令說明。
SYNOPSIS: 基本指令語法介紹。
DESCRIPTION: 指令完整說明。
OPTIONS: 所有可用的參數說明。
FILES: 指令所使用到的一些檔案,如設定檔、紀錄檔等。
SEE ALSO: 其他相關說明或參考文件。
EXAMPLE: 範例。

在閱讀man page時,空白鍵或者Page Down可以跳到下一頁,B或者Page Up可以跳到上一頁,方向鍵的上、下鍵可以換上、下行,/keyword可以向下搜尋關鍵字,/?keyword可以向上搜尋關鍵字,n可以向同方向繼續搜尋,N可以向反方向繼續搜尋,q可以離開man page。

另外還有一種說明文件叫做info page,使用 #pinfo 指令可以查詢,與man page不同的在於info page是使用目錄式的方式瀏覽說明文件。
2017-02-14_160555.png-RHCE開機

最上方File是這份pinfo page的檔案,Node表示目前的節點,Next是下一個節點,Prev是前一個節點,Up是上一層節點。所謂的節點可以想像成目錄,下一層節點就是目錄中的子目錄,畫面中有*開頭的表示節點名稱。

Menu下方就是這份文件的節點,也就是目錄,使用方向鍵的上、下鍵移動游標到節點上,目前移動到的節點會變色顯示,如畫面中的Configuration;按下Enter或者方向鍵的右鍵就可以進入該節點瀏覽文件,方向鍵的左鍵可以回到上層節點,p可以瀏覽上一個節點,n可以瀏覽下一個節點,g可以輸入節點名稱並跳至該節點,須注意大小寫要一樣,t可以回到最上層,s可以搜尋全部文件,/則是搜尋該節點文件,f可以繼續搜尋,q可以離開pinfo page。

留言