技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁(yè) > 教程 > 服務(wù)器類 >

Linux系統(tǒng)啟動(dòng)過(guò)程介紹(1)

來(lái)源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-09-07 18:15┆點(diǎn)擊:

  對(duì)操作系統(tǒng)的啟動(dòng)過(guò)程一直是比較模糊,想想大概經(jīng)歷檢查硬件,加載操作系統(tǒng),加載

  用戶環(huán)境等幾個(gè)過(guò)程,但實(shí)際上要復(fù)雜一些。畢竟我們只是了解和掌握啟動(dòng)過(guò)程,而不是去

  對(duì)啟動(dòng)過(guò)程進(jìn)行設(shè)計(jì)和編碼,所以下面的介紹相對(duì)比較簡(jiǎn)單,也點(diǎn)到為止。如果有想深入學(xué)

  習(xí)的同學(xué),可以針對(duì)某個(gè)或某幾個(gè)部分刨根問(wèn)題,編碼調(diào)試。

  下面以Debian Linux的啟動(dòng)加載為例,簡(jiǎn)單介紹一下操作系統(tǒng)的啟動(dòng)。

  經(jīng)歷的過(guò)程如下:

  開(kāi)機(jī)自檢(POST)---->執(zhí)行基本輸入輸出(BIOS)---->加載系統(tǒng)分區(qū)表數(shù)據(jù)(MBR開(kāi)

  始的512字節(jié))---->加載引導(dǎo)程序(grub之類)---->加載Linux內(nèi)核----->系統(tǒng)環(huán)境初始化-----

  ------->用戶環(huán)境初始化

  開(kāi)機(jī)自檢(POST)

  這部分沒(méi)有什么多余的東西,計(jì)算機(jī)連上電源用戶按下啟動(dòng)按鈕后,計(jì)算機(jī)自己檢測(cè)CPU,

  內(nèi)存,硬盤等硬件設(shè)備是否處在可用狀態(tài)。如果可以使用,繼續(xù)下一步的工作,即將運(yùn)行權(quán)

  交給BIOS,否則利用峰鳴器報(bào)警。這也是修理電腦的專家根據(jù)蜂鳴器報(bào)警聲判斷系統(tǒng)那里有

  問(wèn)題的依據(jù)。

  執(zhí)行基本輸入輸出(BIOS)

  BIOS(Basic Input Output System)基本輸入輸出程序。該程序完成最基本的硬件位置

  處理,設(shè)置硬中斷等。然后將MBR最開(kāi)始的程序調(diào)入到CPU上運(yùn)行,運(yùn)行權(quán)進(jìn)而交給MBR。

  MBR加載

  MBR(Master boot record),是啟動(dòng)磁盤最開(kāi)始的512字節(jié),這里包含了分區(qū)信息和一

  個(gè)引導(dǎo)程序。分區(qū)信息記載了磁盤的分區(qū)情況,引導(dǎo)程序即是我們比較熟悉的Grub,LiLo等,

  用來(lái)指引從什么位置加載內(nèi)核程序。

  引導(dǎo)程序加載Grub(GRand Unified Bootloader)

  Grub在配置的時(shí)候指定在什么分區(qū)的什么位置加載內(nèi)核,Grub2以前的版本中g(shù)rub都是

  有兩個(gè)或者多個(gè)加載過(guò)程的,會(huì)去加載stage1,stage1_5,stage2文件,這些文件都在

  /boot/grub目錄下。之所以會(huì)有這些文件,是因?yàn)樵诩虞d的早期,一次只能加載512字節(jié),太

  多文件的話,只能分批加載。

  現(xiàn)在,在Grub2中已經(jīng)找不到這個(gè)文件了,加載和引導(dǎo)的過(guò)程會(huì)另外介紹。

  內(nèi)核加載過(guò)程

  由于在Grub中記錄了內(nèi)核的具體位置,在Grub運(yùn)行完畢后,就開(kāi)始加載內(nèi)核,運(yùn)行權(quán)限隨

  之交給內(nèi)核。

  內(nèi)核接過(guò)運(yùn)行權(quán)限,開(kāi)始探測(cè)系統(tǒng)的硬件,加載硬件對(duì)應(yīng)的驅(qū)動(dòng)(有些以模塊運(yùn)行的驅(qū)動(dòng),

  是需要掛載文件系統(tǒng)才能加載),然后掛載文件系統(tǒng),從文件系統(tǒng)中讀取數(shù)據(jù)。

  這個(gè)過(guò)程的如下:

  內(nèi)核探測(cè)硬件------>加載驅(qū)動(dòng)(initrd)------>掛載根文件系統(tǒng)------>rootfs(/sbin/init)

  系統(tǒng)初始化工作

  最后運(yùn)行權(quán)交給了/sbin/init程序,開(kāi)始跑初始化的腳本內(nèi)容。(待續(xù))