X86平臺系統啟動流程 (Blog 9)

POST –> BootSeqence(BIOS) –> Bootloader(MBR) –> Kernel(initrd) –> init(/etc/inittab)

適用環境:MBR類的X86PC兼容架構;不適用于其它架構或UEFI的PC架構;

系統組成:
Mage1

內核功能
文件系統、進程管理、網絡協議棧、內存管理、驅動、安全加密
內核功能實現通過內核模塊;裝載模塊就有此功能,不裝載就沒有此功能;

內核特點
支持模塊化
支持動態裝載或卸載
使用緩沖和緩存來加速對磁盤上的文件訪問

操作系統的組成

運行中的內核
Kernel + 根文件系統
內核空間 + 用戶空間

從磁盤的視角
內核只是一個靜態文件;

如何將一個靜態的內核啟動起來?
啟動:將內核加載至內存中,運行起來;
沒有那么契機,沒有唐僧揭去壓猴石條,猴子是蹦不出來的;

內核通過根文件系統的驅動關聯根文件系統;文件系統驅動在根上;
內核需要自帶驅動:
如果是自己使用:僅編譯進一個硬盤的驅動;

如果是所有人都使用這個內核:就要將所有的硬盤的驅動全部編譯進內核;缺點:內核體積大。
為了解決這個問題:通過ramdisk一個臨時的根文件系統,僅有當前系統獨有的驅動,在操作系統安裝后動態生成;

注意:ramdisk并非是必須的,完全可以將驅動編譯進內核供自己使用;

內核的組成:
內核文件: /boot/vmlinuz-VERION-release
根文件系統: 遵循FHS層級結構標準,內核啟動后關聯的分區;有bin, sbin, lib, lib64, etc, proc, sys, var, usr等目錄
內核模塊:/lib/modules/VERSION-release/ 目錄下有各種驅動,為實現內核功能,例如:文件系統模塊;網絡協議棧;安全加密;內核管理;等;
磁盤映像:/boot/initrd-VERSION-release.img 或 /boot/initramfs-VERSION-release.img

ramdisk:基于內存中的磁盤映像
CentOS5: initrd
CentOS6,7: initramfs

區別:
initrd: 基于內存中的磁盤映像
initramfs: 基于內存中的文件系統

內核特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問
所有initrd本身在內存中,仍需要緩沖一次;
initramfs:本身是文件系統不需要再緩沖;

完整的系統啟動流程
內核空間 –> 用戶空間

CentOS 系統啟動流程

LILO啟動次序:POST –> bootloader –> kernel(ramdisk) –> init(/etc/inittab)
GRUB啟動次序:POST –> bootloader(1st) –> grub(2nd) –> kernel(ramdisk) –> init(/etc/inittab)

POST(Power On SafeTesting)
ROM芯片中COMS提供的BIOS指令完成加電自檢;
內核運行在硬件之上,硬件是提供計算能力的最基礎的保證;

Boot Seqence
BIOS從啟動次序中查找第一個可引導設備(MBR),即為本次要啟動的設備

Bootloader
MBR前446Bytes是Bootloader;
Bootloader功能:提供一個菜單,允許用戶選擇要啟動的系統或不同內核版本;把用戶選定的內核裝載到RAM中的特定空間中,解壓、展開,而后把系統控制權移交給內核;
安裝在U盤、光盤、硬盤中第0磁盤的第0扇區

MBR組成:
446Bytes: bootloader
64Bytes: fat
4Bytes: 磁盤有效標識

Bootloader分類:
Windows:ntloader
Linux:
LILO: 用446Bytes(ASCII碼;一個1Bytes對應一個字符)寫bootloader程序是極困難的;
GRUB: 通過驅動完成加載磁盤,實現更多的功能;
GRUB 0.x: grub legacy
GRUB 1.x:grub2

Kernel
被加載至內存的內存,自解壓展開;內核初始化,即內核空間;
內核初始化:
(1) 探測可識別的所有硬件設備;
(2) 加載硬件驅動程序;有可能借助于ramdisk加載驅動;
(3) 以只讀方式掛載根文件系統;
(4) 運行用戶空間的第一個程序/sbin/init
注意:加載init后,內核只會參與發生中斷后運行內核空間代碼的過程

init(/etc/inittab文件)
init被創建,即用戶空間;人間的一切事務均由其代理完成;
設定默認運行級別
初始化
(1) 主機名
(2) 歡迎信息
(3) 激活udev和selinux
(4) 掛載/etc/fstab中定義的所有文件系統
(5) 檢測根文件系統,重新掛載根
(6) 設備系統時間
(7) 根據/etc/sysctl.conf設置內核參數
(8) 激活lvm及軟RAID
(9) 激活swap設備
(10) 加載額外驅動
(11) 清理臨時文件,初始化過程中生成的臨時文件;
關閉和啟動服務
打印登陸提示符

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/89053

(0)
逆神陽逆神陽
上一篇 2017-11-27 23:14
下一篇 2017-11-27 23:25

相關推薦

  • find查找命令及壓縮

    文件查找     在文件系統上查找符合條件的文件;     文件查找: locate, find         非實時查找(數據庫查找): locate    &nbs…

    Linux干貨 2016-08-18
  • N21天天第十一周課程練習

    1、詳細描述一次加密通訊的過程,結合圖示最佳。 SSL協議基礎: SSL協議位于TCP/IP協議與各種應用層協議之間,本身又分為兩層: 1)SSL記錄協議:建立在可靠傳輸層協議(TCP)之上,為上層協議提供數據封裝、壓縮、加密等基本功能。 2)SSL握手協議:在SSL記錄協議之上,用于實際數據傳輸前,通訊雙方進行身份認證、協商加密算法、交換加密密鑰等。 SS…

    Linux干貨 2016-10-09
  • rsync+inotify實時同步備份數據

    rsync同步 rsync+inotify實時同步備份數據 軟件簡介: rsync命令簡介: rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。 rsync是一個功能非常強大…

    Linux干貨 2016-10-28
  • Linux發行版本介紹與哲學思想

    1.Linux發行版本介紹 Linux 發行版(英語:Linux distribution,也被叫做GNU/Linux 發行版),為一般用戶預先集成好的Linux操作系統及各種應用軟件。一般用戶不需要重新編譯,在直接安裝之后,只需要小幅度更改設置就可以使用,通常以軟件包管理系統來進行應用軟件的管理。 1.服務器版本:Centos/Debian 從Red Ha…

    Linux干貨 2016-10-28
  • 馬哥教育網絡21期+第三周練習博客

    1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [root@localhost ~]# who | cut -d' ' -f 1 | uniq 2、取出最后登錄到當前系統的用戶的相關信息。 [root…

    Linux干貨 2016-07-26
  • Linux軟件包管理之程序包編譯安裝

    程序包編譯 程序包編譯安裝: Application-VERSION-release.src.rpm–>      安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝 源代碼–>預處理–>編譯(gcc)–>匯編&#82…

    Linux干貨 2016-08-25
欧美性久久久久