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