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
下一篇 2016-09-13

相關推薦

  • 馬哥教育網絡班19期第一周課程練習

    1、描述計算機的組成及其功能。 從大體上計算機是由cpu、內存、主板、I/O設備、存儲設備組成 cpu的功能就好像人的大腦,控制身體的。嚴格意義上是用來解釋計算機指令以及處理軟件中的數據的。 內存的功能就好像人的大腦記憶區、來存放眼睛看到的世界。嚴格意義上是用于暫時存放cpu中的運算數據,以及與硬盤等外部存儲器交換的數據 主板的功能就好像人的身體,來鏈接身體…

    Linux干貨 2016-06-18
  • vim編輯器基本應用

    vi:Visual  Tnterface文本編輯器 vim:vi Improved vi的加強版 文本編輯種類:   行編輯器:sed   全屏編輯器:nano,vi,vim 其他編輯器::   gedit:一個簡單的圖形編輯器   gvim:一個vim編輯器的圖形版本 vim使用格式 +# :打開文件后,直…

    Linux干貨 2016-08-11
  • sed的用法小結

    sed的用法小結 sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等sed [OPTION]… ‘script’ [input-file] … OPTION: -n 不輸出模式空間中的內容至屏幕,僅顯示script處理后的結果 -e 多點編輯,eg: ~]# sed -e ‘s@^#[[…

    Linux干貨 2017-08-22
  • lvs實踐(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress)

    lvs實踐(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress)   lvs實踐(lvs+nginx+mariadb+php—fpm+nfs搭建wordpress) lvs_dr模型 nginx mariadb php-fpm wordpress   lvs實踐(lvs+nginx+mariadb+php—f…

    2017-01-03
  • 馬哥教育網絡班21期+第2周課程練習

    第二周練習 1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 cp、mv、rm、touch cp:copy,復制    SYNOPSIS        cp [OPTION]… [-T] SOURC…

    Linux干貨 2016-07-07
  • linux基礎

    1.計算機的組成及其功能。 計算機的主要組成部分可以歸納為以下五個部分:控制器、運算器、存儲器、輸入設備、和輸出設備。 控制器 是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。 運算器 運算器的功能是對數據進行各種算術運算…

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