Linux的啟動流程

啟動流程

? POST:

Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、 串并行接口、鍵盤、 CD-ROM光驅等硬件情況的檢測。

ROM: BIOS, Basic Input and Output System,保存著有關計算機系統最重要的基本輸入輸出程序,系統信息設置、 開機加電自檢程序和系統啟動自舉程序等。

RAM: CMOS互補金屬氧化物半導體,保存各項參數的設定

按次序查找引導設備,第一個有引導程序的設備為本次啟動設備

? bootloader: 引導加載器,引導程序(因系統而異)

windows: ntloader,僅是啟動OS

Linux:功能豐富,提供菜單,允許用戶選擇要啟動系統或不同的內核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把

系統控制權移交給內核

LILO: LInux LOader

GRUB: GRand Unified Bootloader(centos5之后)

GRUB 0.X: GRUB Legacy, GRUB2

磁盤:

? MBR:

446: bootloader(446字節可尋找到bootloader所在位置), 64: 分區表, 2: 55AA

Linux的啟動流程blob.png

? GRUB:

primary boot loader : 1st stage(加載bootloader,磁盤第1個512字節中), 1.5 stage(boot文件系統,磁盤中第2個512字節中)

secondary boot loader : 2nd stage,分區文件

Linux的啟動流程blob.png

? kernel:

自身初始化:

探測可識別到的所有硬件設備

加載硬件驅動程序(可能借助于ramdisk加載驅動)

以只讀方式掛載根文件系統

運行用戶空間的第一個應用程序: /sbin/init

? init程序的類型:

? SysV: init, CentOS 5之前(全部按順序啟動)

配置文件: /etc/inittab(定義需要加載的驅動,腳本)

? Upstart: init,CentOS 6(無依賴同時啟動,有依賴按順序啟動)

配置文件: /etc/inittab(定義默認的啟動模式常用的位字符界面或者圖像界面), /etc/init/*.conf(定義需要加載的驅動,腳本)

Linux的啟動流程

blob.pngblob.png

? Systemd: systemd, CentOS 7(全部同時啟動,當用戶使用服務時才檢查依賴的文件有沒有啟動)

配置文件: /usr/lib/systemd/system(定義需要加載的驅動,腳本)

/etc/systemd/system(定義需要加載的驅動,腳本)

? ramdisk:

? 內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問

ramdisk –> ramfs 提高速度

CentOS 5: initrd(內存模擬磁盤設備), 工具程序: mkinitrd

CentOS 6: initramfs(內存模擬的文件系統), 工具程序: mkinitrd, dracut

? 系統初始化:

POST –> BootSequence (BIOS) –>

Bootloader(MBR) –> kernel(ramdisk(加載根)) –> rootfs(只讀) —

> init( systemd)

? /sbin/init CentOS6 之前

? 運行級別:為系統運行或維護等目的而設定; 0-6: 7個級別

0:關機

1:單用戶模式(root自動登錄), single, 維護模式

2: 多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式

3:多用戶模式,正常模式;文本界面

4:預留級別;可同3級別

5:多用戶模式,正常模式;圖形界面

6:重啟

? 默認級別: 3, 5

? 切換級別: init #

? 查看級別: runlevel ; who -r

init初始化

?init讀取其初始化文件: /etc/inittab

初始運行級別(RUN LEVEL)

系統初始化腳本

對應運行級別的腳本目錄

捕獲某個關鍵字順序

定義UPS電源終端/恢復腳本

在虛擬控制臺生成getty

在運行級別5初始化X

CentOS 5的inittab文件

? 配置文件: /etc/inittab

? 每一行定義一種action以及與之對應的process

id:runlevel:action:process

action:

wait: 切換至此級別運行一次

respawn:此process終止,就重新啟動之

initdefault:設定默認運行級別; process省略

sysinit:設定系統初始化方式,此處一般為指定

/etc/rc.d/rc.sysinit

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

id:3:initdefault:

si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1…

l6:6:wait:/etc/rc.d/rc 6

CentOS 6 /etc/inittab和相關文件

? /etc/inittab

設置系統默認的運行級別

id:3:initdefault:

centos5的是時候,一下配置是放在/etc/inittab文件中定義的,但是從centos6開始,就單獨放在一下路徑的配置文件中

? /etc/init/control-alt-delete.conf

? /etc/init/tty.conf

? /etc/init/start-ttys.conf

? /etc/init/rc.conf

? /etc/init/prefdm.conf

blob.pngLinux的啟動流程

上圖為redhat5

blob.pngLinux的啟動流程

上圖為centos6

? /etc/rc.d/rc.sysinit: 系統初始化腳本

(1) 設置主機名

(2) 設置歡迎信息

(3) 激活udev和selinux

(4) 掛載/etc/fstab文件中定義的文件系統

(5) 檢測根文件系統,并以讀寫方式重新掛載根文件系統

(6) 設置系統時鐘

(7) 激活swap設備

(8) 根據/etc/sysctl.conf文件設置內核參數

(9) 激活lvm及software raid設備

(10) 加載額外設備的驅動程序

(11) 清理操作

/etc/rc.d/rcN.d/  文件說明

? 說明: rc N –> 意味著讀取/etc/rc.d/rcN.d/

K*: K##*: ##運行次序;數字越小,越先運行;數字越小的服務,通常為依賴到別的服務

S*: S##*: ##運行次序;數字越小,越先運行;數字越小的服務,通常為被依賴到的服務

詳細可看/etc/rc.d/rc 文件

for srv in /etc/rc.d/rcN.d/K*; do

$srv stop

done

for srv in /etc/rc.d/rcN.d/S*; do

$srv start

done

blob.png

總結:

Linux的啟動過程個文件程序間環環相扣,缺一不可。以centos6為例,假設沒有了boot文件夾里的其中一個文件,就無法正常啟動,視損壞程度,有可能在啟動過程中手動添加配置信息,或者要進入光盤的救援模式進行修復。

Linux的啟動流程

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

(0)
hunterhunter
上一篇 2016-09-13 15:32
下一篇 2016-09-13 16:29

相關推薦

  • 第八周作業

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;     在線的主機使用綠色顯示;     不在線的主使用紅色顯示; 2、如何給網絡接口配置多個地址,有哪些方式? 方法3:在/etc/sysconfig/netw…

    2017-04-20
  • 路漫漫其修遠兮第十周

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 從dawning大濕兄那里借來的圖,如下: 啟動過程 (PC架構) POST –> Boot Sequence(BIOS) –> Boot Loader (MBR)–>GRUB—> Kernel(ramdisk) &#821…

    Linux干貨 2017-02-24
  • ansible自動化運維工具使用詳解

    一、ansible簡介   1.ansible        ansible是新出現的自動化運維工具,基于Python研發。糅合了眾多老牌運維工具的優點實現了批量操作系統配置、批量程序的部署、批量運行命令等功能。僅需在管理工作站上安裝ansible程序配置被管控主機的IP信息,被…

    2016-04-30
  • 馬哥教育網絡班22期第一周課程練習1-未聞花名

    一、cpu架構 計算機體系結構: 運算器、控制器(cpu還包含寄存器)、存儲器(內存)、輸入設備(鍵盤、硬盤等)、輸出設備(顯示器、硬盤等) cpu組成: 核心部件:運算器(加法器)、控制器()、寄存器(由于數據總線復用,為cpu保存現場,過程數據記錄)。 輔助部件:一、二、三級緩存:彌合CPU和內存速率不匹配。頻率控制器? 地址總線:內存尋址。 數據總線:…

    Linux干貨 2016-08-15
  • 編寫腳本

        1、  編寫腳本/root/bin/systeminfo.sh,顯示當前主機系統信息,包括主機名,IPV4地址,操作系統版本,內核版本,CPU型號,內存大小,硬盤大小。                      …

    2017-04-13
  • 常見RAID級別

    什么是RAID?     獨立磁盤冗余陣列(RAID,Redundant Arrary of Independent Disks),舊稱廉價磁盤冗余陣列(Redundant Arrary of Inexpensive Disks),簡稱磁盤陣列?;舅枷刖褪前讯鄠€相對便宜的硬盤組合起來,成為一個硬盤陣列組,使性能達到甚至超過一個價格昂貴、…

    Linux干貨 2016-05-29
欧美性久久久久