1.
載入bios
。bios
(basic input output system
),是固化到計算機內主機板上乙個
rom晶元上的程式。儲存
cpu相關資訊、裝置啟動順序資訊、硬碟資訊、記憶體資訊等等。
開啟計算機電源第一項工作即載入
bios
,進行post
(power on self test
自檢),對硬體進行檢測;第二步進行本地裝置的列舉和初始化。
2.讀取
mbr。
mbr(
master boot record
),位於硬碟第
0磁軌第一扇區,大小
512位元組,存放預啟動資訊、分割槽表資訊。
要引導乙個作業系統,
bios
執行時會按照
cmos
的設定定義的順序,搜尋處於活動狀態可以引導的裝置。通常
linux
都從硬碟上引導,而
mbr中包含主引導引導程式。當
mbr被載入到
ram以後,
bios
將控制權交給
mbr。
檢視mbr
內容,可以使用以下語句:
# dd if=/dev/sda of=mbr.bin bs=512 count=1
# od -ax mbr.bin | tail -n 10
001000=0d512 byte
,512b
為乙個扇區的大小。
aa55
是mbr
結束標誌。 1.
執行boot loader
grub
引導程式不能由僅有
512b
的mbr
完整表示,因此
mbr引導程式開始載入第二階段的引導程式,然後讀取
/boot/grub/menu.lst
組織檔案裡的資料,
menu.lst
中列出了所有可用的作業系統和啟動引數,
grub
按照配置資訊來啟動不同的作業系統。 2.
載入核心
linux
不能直接載入核心,需要首先載入
initrd
檔案。
initrd
(initial ram disk
),初始
ram磁碟,是在系統引導過程中掛載的乙個臨時根
檔案系統
。檔案中包含各種可執行程式和驅動程式,與核心繫結並作為核心引導過程的一部分進行載入,然後再將
initrd
解除安裝釋放記憶體。 根據
grub
設定的核心映像所在路徑,系統讀取核心映像,並進行解壓縮操作。系統將解壓後的核心放置在記憶體之中,並呼叫
start_kernel()
函式來啟動一系列的初始化函式並初始化各種裝置,完成
linux
核心環境的建立。至此,
linux
核心已經建立起來了,基於
linux
的程式應該可以正常執行了。在
start_kernal()
的最後呼叫
init()
函式,進入下一步設定執行等級。 3.
使用者層init
依據inittab
檔案來設定執行等級
init
程序是系統中所有程序的父程序,
init
程序繁衍出完成通常操作所需的子程序,這些操作包括
:設定機器名、檢查和安裝磁碟及檔案系統、啟動系統日誌、配置網路介面並啟動網路和郵件服務,啟動列印服務等。
linux
中init
程序的主要任務是按照
inittab
檔案所提供的資訊建立程序,由於進行系統初始化的那些程序都由
init
建立,所以
init
程序也稱為系統初始化程序。
核心被載入後,第乙個執行的程式便是
/sbin/init
,該檔案會讀取
/etc/inittab
檔案,並依據此檔案來進行初始化工作。 其實
/etc/inittab
檔案最主要的作用就是設定
linux
的執行等級,其設定形式是「:
id:5:initdefault:」
,這就表明
linux
需要執行在等級5上。
linux
的執行等級設定如下: 0
:關機
1:單使用者模式 2
:無網路支援的多使用者模式 3
:有網路支援的多使用者模式 4
:保留,未使用 5
:有網路支援有
x-window
支援的多使用者模式 6
:重新引導系統,即重啟 4.
init
程序執行
rc.sysinit
在設定了執行等級後,
linux
系統執行的第乙個使用者層檔案就是
/etc/rc.d/rc.sysinit
指令碼程式,它做的工作非常多,包括設定
path
、設定網路配置(
/etc/sysconfig/network
)、啟動
swap
分割槽、設定
/proc
等等。
5.執行不同執行級別的指令碼程式
根據執行級別的不同,系統會執行
rc0.d
到rc6.d
中的相應的指令碼程式,來完成相應的初始化工作和啟動相應的服務。 6.
執行etc/rc.d/rc.local程式
讓使用者在初始化完成之後,登入之前個性化設定啟動的東西。 7.
建立終端,
mingetty
啟動作業系統的登入。 8.
登入shell
,建立使用者與作業系統的互動。 注
1:簡化步驟:
機器上電
->bios
啟動->mbr
引導->grub
引導->initrd-> linux
核心->
各種服務
->
系統login 注
2:用cat /etc/inittab
檢視inittab
中的內容時,顯示如下圖:
不像網上廣泛出現的後面有
si::sysinit:/etc/rc.d/rc.sysinit
等內容,我的理解為
fedora12
版本沒有將後面的程序加入到
inittab
中。 shelley
Fedora12 Linux命令列下網路配置
虛擬機器的網絡卡使用nat的連線方式 沒辦法,單位乙個埠只允許1個ip,連hub都沒法用 pwd vi etc sysconfig network scripts ifcfg eth0 bootproto的值改為dhcp,並儲存 ifdown eth0 ifup eth0 重啟網絡卡 ifconfi...
Fedora12 Linux命令列提示符設定
提示符通過變數ps1來設定,可以用以下命令來顯示當前設定 echo ps1 提示符的系統範圍 對系統裡所有使用者有效 的設定在檔案 etc bashrc裡,可能包含以下的行 ps u h w 要定製提示符,我們可以編輯檔案 etc bashrc root使用者 然後在兩個引號之內輸入任何你想要的文字...
Fedora 啟動順序
fedora 系統加電或復位後,處理器將記憶體中的所有資料清零,並對記憶體進行校驗。如果沒有錯誤,則cs code segment 暫存器中全部置1,而ip instruction pointer 暫存器中全部置0。cs ip 位址單元中儲存的指令是一條跳轉指令,這條指令跳轉到bios 的首部。cp...