日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

centos7 启动流程图_Linux启动过程详解

發布時間:2025/5/22 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 centos7 启动流程图_Linux启动过程详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Linux啟動過程詳解

作者:江遠航

一、啟動流程圖如下

圖1 Linux啟動流程圖

BIOS ---> MBR

---> Kernel---> Init

二、Linux啟動順序

一>? BIOS初始化

1、電腦周邊設備檢查

偵測周圍設備是否正常工作,如CPU類型、速度、緩存等、主板類型、內存速

度、內存容量、硬盤大小、硬盤類型、硬盤工作模式、風扇速度等。

2、選擇設備開機

軟盤啟動、光盤啟動、網絡啟動、硬盤啟動。

3、選擇好哪個設備開機之后,讀取這個設備的MBR引導扇區。

4、MBR(Master Boot Record,即的主引導記錄)。

主要作用引導磁盤操作系統啟動。MBR是一個512字節大小的扇區,位于磁盤上的第一個扇區中(0道0柱面1扇區),它由三個部分組成,主引導程序、、硬盤有效標志(55AA)。

第一部分是里主引導程序(boot loader)占446個字節。

第二部分是分區表占64個字節,硬盤中分區有多少以及每一分區的大小都記在其中。第三部分是magic

number,占2個字節,固定為55AA。

BIOS不是查找操作系統,而是主引導記錄。BIOS搜索MBR是否有完整的主

引導記錄,如果有,則認為硬盤有操作系統,然后BIOS將MBR整段裝載到內存

RAM,將控制權交給MBR。

二>

BootLoader

1、Boot Loader安裝

1)安裝在硬盤MBR。

2)MBR被其他開機管理程序占用,就可以將Bootloader安裝在硬盤其中一個分區的引導扇區上。

2、Boot Loader啟動過程。

圖2Bootloader啟動流程圖

Stage1(在Flash中運行):

1)初始化硬件,為stage2及kernel執行準備硬件環境。

包括屏蔽所有中斷、設置CPU速度及時鐘頻率、RAM初始化、初始化LED、關閉CPU指令/Cache數據。

2)為stage2準備RAM空間。

為了獲得更快的執行速度,通常把stage2加載到RAM空間執行,因此必須為加

載stage2準備好一段可用的RAM空間范圍。

由于stage2通常是C語言執行代碼,因此在考慮空間大小時,除stage2映像的大小外,還須把堆棧空間考慮進來。(空間大小最好是memory

page(通常是4KB)倍數,一般1M的RAM空間足夠)

3)拷貝uboot到RAM空間。

拷貝時要確定stage2的可執行映像在固態存儲設備(ROM、EEPROM或FLASH等)的存放起始地址和終止地址以及RAM空間的起始地址。

4)設置堆棧。

設置堆棧指針是為執行C語言代碼做好準備,此外,在設置堆棧指針SP之前,也可以關閉LED燈,以提示用戶準備跳轉到stage2。

上述就緒后,可以跳轉到stage2去執行。(比如在RAM系統中,可以通過修

改PC寄存器為合適的地址來實現)

Stage2(拷貝至RAM中運行):

1)初始化本階段需要用到的硬件設備。

通常包括:至少初始化一個串口以便和終端用戶進行I/O輸出信息,初始化計時器等。在初始化這些設備之前,可以重新把LED燈點亮,表明已經進入main函數執行。設備初始化完成,可以輸出一些打印信息,程序名字字符串、版本號等。

2)檢測系統內存映射。

內存映射指在整個4GB物理地址空間中,哪些地址范圍被分配用來尋址系統的RAM單元。檢測系統內存映射的目的是要知道CPU預留的全部RAM地址空間中的哪些被真正映射到RAM地址單元。

規劃內存占用布局包括兩方面:內核映射所占用的內存范圍;根文件系統所占用的內存范圍。在規劃內存占用的布局時,主要考慮基地址和映射的大小。

3)設置內核啟動參數

將內核映像和根文件系統映像拷貝到RAM空間后,就可以準備啟動Linux內核,但在調用內核之前,須設置Linux內核啟動參數。

BootLoader可以通過兩種方式傳遞參數給內核,一種是舊的參數結構方式(parameter_struct)(2.6之前內核版本),另外一種是現在2.6版本在用的參數鏈表方式(tagged_list),這些參數主要包括,系統的根設備標志,頁面大小,內存的起始地址和大小,RAMDISK的起始地址和大小,壓縮的RAMDISK根文件系統的起始地址和大小,內核命令參數等。

4)調用內核

Bootloader調用Linux內核的方法是直接跳轉到內核的第一條指令處,也即是直接跳轉到MEM_START+0x8000地址處。

5)消亡

圖3Flash與RAM映射及初始化圖

系統加電或復位后,所有的CPU通常都從某個由CPU制造商預先安排的地址上取指令。比如,基于ARM7TDMI core的CPU在復位時通常都從地址0x00000000取它的第一條指令。而基于CPU構建的嵌入式系統通常將固態存儲設備(ROM、EEPROM或FLASH等)被映射到這個預先安排的地址上,當Bootloader放到Flash的起始處后,系統加電后,CPU將首先執行BootLoader程序。

三>啟動GRUB

GNU GRUB和GRUB是GRand

Unified Bootloader的縮寫,它是一個多重啟動管理器。用來引導不同系統,如windows/linux。

MBR后面64字節是分區表,從分區表中可以知道有沒有活動分區,以及哪些是活動分區,通常活動分區就是操作系統所在的分區。GRUB可以建立在MBR中,也可以建立在分區中。

從MBR載入Bootloader開始、載入kernel、載入init這些程序,都是由GRUB這個開機管理程序負責(/boot/grub/grub.conf)

引導過程

1、由硬盤啟動時,BIOS通常是轉向第一塊硬盤的第一個,即(MBR)。

2、裝載GRUB和的過程,包括:

1)裝載記錄

基本引導裝載程序所做的唯一的事情就是裝載第二引導裝載程序。

2)裝載Grub

第二引導裝載程序實際上是引出更高級的功能,以允許用戶裝載一個特定的。

3)裝載系統

如。GRUB把機器的控制權移交給。

不同的是,都是使用一種稱為鏈式裝載的引導方法來啟動的,,僅僅是簡單地指向操作系統所在分區的第一個。

四>加載內核

當內核映像被加載到內存之后,內核階段就開始,內核映像并不是一個可執行的內核,而是一個壓縮過的內核映像,通常是zImage(壓縮映像小于512KB)或bzImage(較大的壓縮映像,大于512KB)。在這個內核映像前面是一個例程,現實少量硬件設置,并對內核映像中包含的內核進行解壓,然后將其放入高端內存中,然后該例程會調用內核,并開始啟動內核引導的過程。

1)檢測電腦硬件設備。

2)將檢測到的硬件驅動程序載入Kernel。(守護進程kerneld)

3)如果必要的驅動程序載入Kernel后將根目錄以只讀的方式掛載進來。

4)Kernel載入第一個程序init進程。

在/sbin/init上來查尋init,如果沒有找到init,就會試著運行/bin/sh,如果還是失敗了,那么系統的啟動就宣告失敗了。

五> Init

在UNIX里,除了進程0(即PID=0的交換進程,Swapper

Process)以外的所有進程都是由其他進程使用fork創建的,這里調用fork創建新進程的進程即為父進程,而相對應的為其創建出的進程則為子進程,因而除了進程0以外的進程都只有一個父進程,但一個進程可以有多個子進程。

以進程標識符(Process

Identifier,即PID)來識別進程。進程0是系統引導時創建的一個特殊進程,在其調用fork創建出一個子進程(即PID=1的進程1,又稱init)后,進程0就轉為交換進程(有時也被稱為空閑進程),而進程1(init進程)就是系統里其他所有進程的祖先。(fork后相當于復制了一份,也就相當于一個副本,所以在以后的程序執行,父進程改變父進程的數據,子進程改變子進程的數據)

init進程是系統所有進程的起點,在完成內核引導后,在本進程空間加載init程序,它的進程號是1。s

1、init進程作用

1)扮演終結父進程角色。

init進程永遠不會終止,所以系統確信它的存在,并在必要時以它為參照。如果某個進程在它衍生出來的全部子進程結束前被終止,就會出現以init為參照的情況,這個子進程立刻成為init的子進程,init進程自動對終止的子進程調用wait,防止產生僵尸進程。

2)進入某個特定的運行級別(Runlevlel)時運行相應的程序,以此對各種運行級別進行

管理。(由/etc/inittab文件定義)

Init程序讀取/etc/inittab文件決定做哪些操作

1)決定預設要使用哪個Run Level

2)Init會初始化作業系統的程序/etc/rc.d/rc.sysinit

3)Init根據執行的Run level來對應目錄里的程序,決定開啟哪些服務

操作系統

操作系統(英語:Operating System,簡稱OS)是管理與資源的,同時也是的核心與基石。操作系統身負諸如管理與配置、決定系統資源供需的優先次序、控制輸入與、操作與管理等基本事務。操作系統也提供一個讓用戶與系統交互的操作接口。

操作系統的形態非常多樣,不同機器安裝的操作系統可從簡單到復雜,可從的到的大型操作系統。許多操作系統制造者對它涵蓋范疇的定義也不盡一致,例如有些操作系統集成了,而有些僅使用文字接口,而將圖形接口視為一種非必要的應用。

操作系統理論在科學中,為歷史悠久而又活躍的分支;而操作系統的設計與實現則是工業的基礎與核心。

2內核

內核,是一個操作系統的核心。它負責管理系統的進程、、設備、文件和系統,決定著系統的性能和穩定性。

“內核”指的是一個提供抽象層、磁盤及控制、多任務等功能的。一個內核不是一套完整的操作系統。一套基于Linux內核的完整操作系統叫作Linux操作系統,或是GNU/Linux。

內核是操作系統最基本的部分。它是為眾多應用提供對的安全訪問的一部分,這種訪問是有限的,并且內核決定一個程序在什么時候對某部分硬件操作多長時間。直接對操作是非常復雜的,所以內核通常提供一種硬件抽象的方法來完成這些操作。抽象隱藏了復雜性,為和硬件提供了一套簡潔,統一的接口,使更為簡單。s

嚴格地說,內核并不是計算機系統中必要的組成部分。可以直接地被調入中執行,這樣的設計說明了設計者不希望提供任何抽象和操作系統的支持,它常見于早期計算機系統的設計中。最終,一些輔助性,例如程序加載器和調試器,被設計到機器核心當中,或者固化在里。這些變化發生時,操作系統內核的概念就漸漸明晰起來了。

摘自:

《基于嵌入式ARM的Bootloader研究與實現》

《Bootloader研究》s

總結

以上是生活随笔為你收集整理的centos7 启动流程图_Linux启动过程详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。