1. 程式人生 > >Linux系統開機啟動過程

Linux系統開機啟動過程

總覽

這裡寫圖片描述

載入bios

一個特殊的應將電路在CPU的一個引腳上產生一個RESET邏輯值,然後會把一些暫存器(包括cs和eip)設定成固定的值
然後執行在實體地址為0xFFFF FFF0處找到的程式碼,硬體把這個地址對映到某個只讀、持久的儲存晶片中,該晶片通常為ROM
而ROM中存放的程式集在80x86體系統通常叫做BIOS
BIOS由兩部分組成: POST程式碼和執行時服務

載入mbr

硬碟上第0磁軌第一個扇區被稱為MBR,也就是Master Boot Record,即主引導記錄,它的大小是512位元組,別看地方不大,可裡面卻存放了預啟動資訊、分割槽表資訊。
系統找到BIOS所指定的硬碟的MBR後,就會將其複製到0×0000 7c00地址所在的實體記憶體中。其實被複制到實體記憶體的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了(GRUB原來就是Bootloader)。
提取MBR的資訊
要看MBR的內容,請使用下面的命令
從/dev/sda上讀取前512個位元組的內容,並將其寫入mbr.bin檔案中
[

[email protected] pam.d]# dd if=/dev/sda of=mbr.bin bs=512 count=1
以十六進位制和ASCII碼格式列印這個二進位制檔案的內容
[[email protected] pam.d]# od -xa mbr.bin

載入bootloader

在嵌入式系統中,啟動第一步、第二步不存在的,直接從Bootloader開始執行。
Boot Loader 就是在作業系統核心執行之前執行的一段小程式。初始化硬體裝置、建立記憶體空間的對映圖,從而將系統的軟硬體環境帶到一個合適的狀態,以便為最終呼叫作業系統核心做好一切準備。系統讀取記憶體中的grub配置資訊(一般為menu.lst或grub.lst),並依照此配置資訊來啟動不同的作業系統。
Bootloader從地址為0x0009 0200開始存入RAM中,而setup()函式連結在此處,然後跳轉setup()開始執行,作用再次初始化硬體裝置(BIOS已經初始化了)
setup()結束跳轉到startup_32(),這裡面會解壓核心,也就是第四步中提到的,然後跳轉到0x0010 0000處。
執行第二個startup_32()函式,與前一個函式名相同,但是起始實體地址不同,函式結尾會跳轉到start_kernel()處。
執行start_kernel(),作用是完成Linux核心的初始化工作。,幾乎每個核心部件都是由這個函式進行初始化的。

載入核心

根據grub設定的核心映像所在路徑(Bootloader給出Image路徑),系統讀取記憶體映像,並進行解壓縮操作。此時,螢幕一般會輸出“Uncompressing Linux”的提示。當解壓縮核心完成後,螢幕輸出“OK, booting the kernel”。
系統將解壓後的核心放置在記憶體之中,並呼叫start_kernel()函式來啟動一系列的初始化函式並初始化各種裝置,完成Linux核心環境的建立。至此,Linux核心已經建立起來了,基於Linux的程式應該可以正常運行了。
至此,Linux核心已經建立起來。

設定執行等級

核心被載入後,第一個執行的程式便是/sbin/init,該檔案會讀取/etc/inittab檔案,並依據此檔案來進行初始化工作。
其實/etc/inittab檔案最主要的作用就是設定Linux的執行等級,其設定形式是“:id:5:initdefault:”,這就表明Linux需要執行在等級5上。Linux的執行等級設定如下:
0:關機
1:單使用者模式
2:無網路支援的多使用者模式
3:有網路支援的多使用者模式
4:保留,未使用
5:有網路支援有X-Window支援的多使用者模式
6:重新引導系統,即重啟

初始化系統設定

在設定了執行等級後,Linux系統執行的第一個使用者層檔案就是/etc/rc.d/rc.sysinit指令碼程式,它做的工作非常多,包括設定PATH、設定網路配置(/etc/sysconfig/network)、啟動swap分割槽、設定/proc等等
啟動核心模組
依據/etc/modules.conf檔案或/etc/modules.d目錄下的檔案來裝載核心模組。
執行不同級別的指令碼程式
根據執行級別的不同,系統會執行rc0.d到rc6.d中的相應的指令碼程式,來完成相應的初始化工作和啟動相應的服務。
執行個性化程式
rc.local就是在一切初始化工作後,Linux留給使用者進行個性化的地方。你可以把你想設定和啟動的東西放到這裡。
進入登陸狀態
執行/bin/login

執行login程式

Grub是一個系統載入程式,其又分成兩個階段:第一階段:儲存在MBR中,用匯編編寫,也就是MBR中的載入程式部分,功能包括:①基礎硬體裝置初始化(遮蔽所有中斷、關閉處理器內部指令/資料cache等);②為載入Grub的另一部分Stage2準備空間;③如果從某個固態儲存介質中,則拷貝Grub中Stage2到RAM空間中;④設定好堆疊;⑤跳轉到Stage2的C程式入口點;第二階段:通常由C語言編寫,功能包括:①初始化本階段使用到的硬體裝置;②檢測系統記憶體對映;③將kernel映像和根檔案系統映像從Flash讀到RAM中;④為核心設定啟動引數;⑤呼叫核心。———-分隔符————第二階段通常儲存在/boot/grub中,當我們啟動系統進入Grub介面,會看到選擇資訊,如果我們編譯了系統核心的話,我們可以選擇從某個核心啟動。同時注意Grub配置檔案和核心在/boot分割槽。從前面分析可以看出,Grub第一階段需要到MBR中讀載入程式,第二階段需要到/boot分割槽讀系統核心和配置檔案。

相關推薦

【研究任務】linux系統開機啟動過程

邏輯 color 提示 not 讀取 兩個 引導程序 配置信息 函數名 總覽加載BIOS一個特殊的應將電路在CPU的一個引腳上產生一個RESET邏輯值,然後會把一些寄存器(包括cs和eip)設置成固定的值然後執行在物理地址為0xFFFF FFF0處找到的代碼,硬件把這個地址

Linux系統開機啟動過程

總覽 載入bios 一個特殊的應將電路在CPU的一個引腳上產生一個RESET邏輯值,然後會把一些暫存器(包括cs和eip)設定成固定的值 然後執行在實體地址為0xFFFF FFF0處找到的程式碼,硬體把這個地址對映到某個只讀、持久的儲存晶片中,該晶

linux系統開機啟動過程詳解

開機過程指的是從開啟計算機電源直到LINUX顯示使用者登入畫面的全過程。分析LINUX開機過程也是深入瞭解LINUX核心工作原理的一個很好的途徑。   啟動第一步——載入BIOS   當你開啟計算機電源,計算機會首先載入BIOS資訊,BIOS資訊是如此的重要,以至於計

Linux系統開機啟動項優化 命令詳解 齊天大聖原創作品 命令來自老男孩教育

開機啟動優化Linux系統開機啟動項優化 命令詳解 齊天大聖原創作品 命令來自老男孩教育

linux系統啟動過程簡要分析

com bubuko 加載內核 ice func auth 變量 number 啟動過程 接觸linux系統運維已經好幾年了,常常被問到linux系統啟動流程問題,剛好今天有空來梳理下這個過程:一般來說,所有的操作系統的啟動流程基本就是: 總的來說,linux系統啟動

Linux系統啟動過程

系統啟動過程? POST->BIOS(boot sequence)->GRUB Stage1(MBR-bootloader)->GRUB Stage2(/boot/grub/grub.conf)->kernel, initramfs->/sbin/ini

分析Linux系統啟動過程

  一直使用linux系統,卻對系統啟動過程及系統初始化和各種服務的啟動不太清楚。今天終於搞明白整個是怎麼一回事了。本來想自己寫篇文章,剛好在網上看到一篇不錯的介紹,很詳細,就直接拿來了。   Linux系統的啟動過程: BIOS自檢 —> grub載入程式 —> 載入核心

Linux系統開機啟動詳解

計算機開機是一個神祕的過程。我們只是按了開機鍵,就看到螢幕上的進度條或者一行行的輸出,直到我們到達登入介面。然而,計算機開機又是個異常脆弱的過程,我們滿心期望的登入介面可能並不會出現,而是一個命令列或者錯誤資訊。瞭解計算機開機過程有助於我們修復開機可能出現的問題。 一、最初始階段 當我們開啟計算機電

003---Linux系統啟動過程

mbr 過程 根據 不同的 bios 開機 inittab 開機自檢 linux Linux系統的啟動過程 按下電源 開機自檢(BIOS):檢查cpu、內存、硬盤是否有問題 MBR引導 GRUB菜單 加載內核(kernel) 運行 INIT 進程(linux系統裏面的第一

linux基礎-linux系統啟動過程

tro pan rc.d init進程 基礎 選擇 font 開機 流程圖 一.linux系統的啟動過程介紹  1.按下電源開機自檢(硬件檢查,內存cpu硬盤是否有問題)  2.硬件(MBR)引導  3.GRUB菜單(選擇不同的內核)  4.加載內核(kernel)

Linux系統開機啟動過程

linu 系統初始化 mark src 初始化 text 令行 圖形界面 圖形 提起操作系統這個詞,想必大家並不陌生,有電腦端操作系統和手機端操作系統。電腦端操作系統較為熟悉的就是微軟開發的windows操作系統,還有一種就是大家稍微陌生的linux操作系統,而手機端的操作

Linux系統開機啟動過程總結(略)

啟動第一步--載入BIOS當你開啟計算機電源,計算機會首先載入BIOS資訊,BIOS資訊是如此的重要,以至於計算機必須在最開始就找到它。這是因為BIOS中包含了CPU的相關資訊、裝置啟動順序資訊、硬碟資訊、記憶體資訊、時鐘資訊、PnP特性等等。在此之後,計算機心裡就有譜了,知

linux系統開機啟動過程

    我們先通過一張圖來簡單瞭解下整個linux系統啟動的流程     整個過程基本可以分為BIOS-->MBR(GRUB)-->Kernel-->Init-->Runlevel。      BIOS   BIOS(Basic Input

Linux開機啟動過程分析

物理內存 登錄 page thread 陷阱門 execute 啟動過程 font 定義 Linux開機啟動過程分析 開機過程指的是從打開計算機電源直到LINUX顯示用戶登錄畫面的全過程。分析LINUX開機過程也是深入了解LINUX核心工作原理的一個很好的途徑。 啟動第一

linux開機啟動過程、PATH、過濾一級目錄、cd的參數、ls -lrt、命令切割日誌

linux 開機啟動過程 cd ls 第二波命令正向我方來襲 :開機啟動過程、PATH、過濾一級目錄、cd的參數、ls -lrt、命令切割日誌 1.1 linux開機啟動過程1.1.1 開機自檢(BIOS)-- MBR引導 -- GRUB菜單 -- 加載內核(kernel)-- 運

Linux開機啟動過程

ref com top 加載 otto image process run pro 1.BIOS開機自檢2.讀取MBR:主引導記錄(Master Boot Record)3.GRUB:(Grand Unified BootLoader)多系統啟動程序4.Kernel:加載內

Linux 開機啟動過程

Linux系統最終呈現給使用者的,要麼是一個命令列介面,也可能是一個圖形化介面。不管是哪種呈現,能看到說明伺服器已經裝載系統成功了。 對於很多使用者來說,學習、使用Linux,可能就起始於系統已經裝載成功的介面。 總體來說,Linux啟動以 init

基於linux開機啟動時的系統排錯

一、系統引導過程概述二,基於系統引導過程的排錯2.1 BIOS初始化• 基本輸入/輸出系統( BIOS )是內置於標準x86/x86-64 硬體的韌體介面,將硬體置於已知狀態並準備好系統以載入作業系統• 出現什麼情況? 檢測並初始化硬體確定從中引導的裝置• 可能出現了什麼錯誤

linux系統開機過程描述

BIOS是由兩部分組成:POST程式碼和執行時的服務。當POST完成之後就會被從記憶體中清理出來,但是BIOS執行時服務依然會保留在記憶體中。BIOS會按照設定中定義的順序來搜尋處於活動狀態並且可以引導的裝置。 引導裝置可以是硬碟上的某個分割槽、CD-ROM、軟盤、網路上的某個裝置或者是USB裝置。linux

Linux基礎-6.系統啟動過程

回來 過程 alt+ 命令行 image 維護 防止 down 用戶登錄 Linux啟動時我們會看到許多啟動信息 Linux系統的啟動過程並不是大家想象中的那麽復雜,其過程可以分為5個階段: 內核的引導 運行init 系統初始化 建立終端 用戶登錄系統