linux 系統啟動流程探討

linux系統啟動流程:

linux系統啟動流程,按層次分的話,可以分為內核空間的啟動與用戶空間的啟動。

下面先說說內核空間的啟動流程。

一個linux要跑起來,在最簡陋的情況下,必須有:kernel , lib ,application

kernel功能:加載驅動程序,內存管理,進程管理,文件系統,網絡管理,安全管理,glibc

庫: 是一個函數的集合,每個庫文件是一個依賴于其他應用程序才能運行起來的代碼片段。

庫頭文件:一個庫中有多少函數,不同函數之差接受的參數,類型不同,這些特點需要有一個文件來對其進行描述,這種對庫中的函數的描述性文件就稱為庫文件。

application:就是平時我們用的二進制程序了

要了解linux的啟動流程,就要先了解下面的幾個概念。

內核的設計流派:
單內核:緊密,效率高,牽一發而動全身。一個小的故障全局崩潰。

微內核:離散設計,效率相對低,子系統故障不會影響全局。

linux為單內核。

雖是單內核,但卻充分吸引微內核設計思想,將能選擇的功能,統統做成功能模塊。即使是內核,自己也被做成模塊。一般為.ko結尾的文件。ko即kernel object。 用戶空間的功能模塊稱為share object,以.so結尾

支持模塊的在線裝卸。
內核組成部分:
1:核心文件:/boot/vmlinuz-version-release
2: 模塊文件: /lib/modules/version-release

ramdisk: 基于內存的磁盤。將硬盤中的mbr載入內存,得到文件系統驅動程序,加載grub。進入grub菜單。

內核空間系統啟動流程解析:

post –> bios –> bootloader(引導從哪塊硬盤加載) –> mbr –> 加載stage2中的grub —> kernel –> init

post: poweron self test  加電自檢。自檢的過程由主板上的rom芯片自己定義。rom芯片就是傳說中的cmos。

bios : base input output system. 也是裝在rom中的一個簡單的程序,主要作用就是按用戶設置的引導順序,從指定的設備加載寫有bootloader的設備。

mbr:加載指定的設備后,根據mbr內容中的stage1的指向,得知stage2的位置,并且加載stage1_5到內存中,得到stage2所在硬件設備的驅動程序,加載驅動后能讀到stage2的內容,即grub。

grub: grand uniform bootloader 。統一加載器。grub會提供一個菜單,給用戶選擇要啟動的操作系統的kernel。

kernel: kernel加載到內存中后,自解壓,自初始化,探測各硬件后裝載硬件的驅動程序,以只讀方式掛載根文件系統,并啟動init進程。

至此,內核空間的啟動完成了。剩下的就是用戶空間的啟動了。
請看下回分解

原創文章,作者:old_radish,如若轉載,請注明出處:http://www.www58058.com/73203

(0)
old_radishold_radish
上一篇 2017-04-11 17:22
下一篇 2017-04-12 10:28

相關推薦

  • 循環語句for、while、until

    作用:    循環語句的作用是它可以讓一段代碼重復的執行,直到所需條件不滿足為止。 在linux中變量的賦值方式有三種:       第一:直接等于號賦值       第二:通過read交互賦值       第三:for循環的賦值 bash腳本中的循…

    Linux干貨 2016-08-22
  • N26-第二周博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。    查看類    pwd : print name of current/working directory  打印當前工作目錄;        &n…

    Linux干貨 2017-02-17
  • Linus Torvalds 語錄 Top 10

    下面是Linux的創始人Linus Torvalds的一些言論,這是我個人認為最有意思的10句。如果你想看更多的Linus Torvalds說過的話,你可以看看他在維基百科上的詞條:Linux Torvalds。我們在下面給出中英文對照,希望你能喜歡。 “Really, I’m not out to dest…

    Linux干貨 2015-04-03
  • 魔術方法

    魔術方法 屬性 含義 __name__ 類、函數、方法等的名字 __module__ 類定義所在的模塊名 __class__ 對象或類所屬的類 __bases__ 類的基類的元組,舒徐為他們在基類列表中出現的順序 __doc__ 類、函數的文檔字符串,如果沒有定義則為None __mro__ 類的mro,class.mro()返回的結果保存在__mro__中…

    Linux干貨 2017-11-21
  • 細說linux上的特殊權限位

    linux上的文件的權限 linux的哲學思想之一就是一切皆文件。這樣說來,每臺安裝了linux的主機上,就會有大量的文件。而另一方面,linux在安全方面有著極為出色的表現。眾所周知,linux是一個多用戶的系統,因此為一個文件加上合適的權限為顯得非常有必要了。linux上的基本權限我就不一一介紹了,請不熟悉的同學自行百度腦補。我們來說說linux上文件和…

    Linux干貨 2017-04-10
  • http狀態碼大全

    狀態值:100 客戶端應當繼續發送請求。這個臨時響應是用來通知客戶端它的部分請求已經被服務器接收,且仍未被拒絕。客戶端應當繼續發送請求的剩余部分,或者如果請求已經完成,忽略這個響應。服務器必須在請求完成后向客戶端發送一個最終響應。 狀態值:101 服務器已經理解了客戶端的請求,并將通過Upgrade 消息頭通知客戶端采用不同的協議來完成這個請求。在發送完這個…

    Linux干貨 2016-11-01
欧美性久久久久