【linux】按部就班學運維-基礎篇-Linux系統啓動原理

你們好,我是高勝寒,本文是Linux運維-按部就班學運維-基礎篇的第59篇文章
linux

文章目錄


前言

七月新秋風露早,今天咱們一塊兒聊聊Linux啓動過程及相關的配置文件。 咱們以centos6爲例,一塊兒來研究一下它的啓動過程面試

centos 6的啓動過程

centos6的啓動過程,包含如下幾個部分centos

  1. 加載BIOS硬件信息
  2. grub引導
  3. 加載kernel
  4. 加載init進程
  5. 讀取/etc/inittab配置文件
  6. 執行 /etc/rc.d/rc.sysinit腳本
  7. 執行/etc/rc.d/rc腳本
  8. 啓動mingetty進程,等待用戶登陸系統
1. 加載BIOS硬件信息
a) 通電自檢

系統通電以後,主板的BOIS 運行POST(Power on self test)代碼,檢測系統外圍的一些設備,好比: cpu,內存,顯卡,IO,鍵盤鼠標等。網絡

b) MBR引導

檢測經過後,根據BIOS裏boot設置的(光驅,硬盤,網盤)啓動順序,搜索相應的啓動驅動器,並獲取第一個啓動設備的代號。讀取第一個啓動設備的MBR的引導加載程序(lilo,grub,spfdisk)啓動信息,從MBR中加載啓動引導管理器(grub),並運行該啓動引導管理,進入grub啓動引導階段。運維

注意: MBR引導記錄: 用於引導磁盤空間小於2T的空間
GPT引導記錄: 用於引導磁盤空間大於2T的空間ide

2. grub引導

所謂的grub引導,就是讀取MBR的boot Loader函數

MBR的硬盤的0柱面、0磁頭、1扇區稱爲主引導扇區(也叫主引導記錄MBR)。它由三個部分組成,主引導程序、硬盤分區表DPT(Disk Partition table)和硬盤有效標誌(55AA)測試

備註: 爲何MBR分區表,只能分四個主分區?centos7

注:磁盤默認一個扇區大小爲:512字節。MBR由如下3部分組成:3d

第一部分是:主引導程序(boot loader)佔446個字節。主引導程序,它負責從活動分區中裝載,並運行系統引導程序。

第二部分是Partition table區(分區表),即DPT,佔64個字節,硬盤中分區有多少以及每一分區的大小都記在其中。每一個分區表項長16個字節,164=64字節。爲分區項一、分區項二、分區項三、分區項4。64字節只存4個分區表。
第三部分是MBR有效標識位,佔2個字節,固定爲55AA。若是這個標誌位0xAA55,就認爲這個是MBR。
因此:16
4+446+2=512

3. 加載(內核)kernel

依據 boot loader 的設定,到引導分區加載 Kernel ,Kernel 會開始偵測硬件並加載驅勱程序;

4. 加載init進程

在硬件驅動成功後,Kernel 會主動執行 init 程序,而 init 會取得 run-level 信息;
init是執行的第一個程序,因此他的進程編號pid =1 ,其餘的進程都是從它衍生出來的,都是它的子進程。
前面咱們有提到過,對於孤兒進程,通常是送到init進程來處理。

5. 讀取/etc/inittab配置文件

init 執行 /etc/rc.d/rc.sysinit 文件來準備軟件執行的做業環境 (如網絡、時區主機名,selinux等);

6. 執行 /etc/rc.d/rc.sysinit腳本

init 執行 run-level 下各個服務並啓動 (script 方式);

腳本的內容是:

  • 獲取網絡環境和主機類型
  • 測試掛載/proc /sys /usb 等裝置
  • 決定是否啓動selinux
  • 周邊設備的偵測
  • 讀取.etc.sysctl.conf 檔案中的設定值
  • 設定系統時間
  • 設定終端字形
  • 設定RAID,LVM功能
  • 使用fsck檢測文件系統
  • 清除開機中的暫存檔案 將開機相關信息載入/var/log/dmesg檔案中
7. 執行/etc/rc.d/rc腳本

init 執行開機後自動運行腳本 /etc/rc.d/rc.local 文件;
這個腳本主要是一些自動以的開機啓動程序,若是你想開啓時啓動什麼內容,能夠在裏面寫
在這裏插入圖片描述

能夠看到這裏建立了一個 /var/lock/subsys/local 這個文件的建立只是爲了證實rc.local 這個腳本已經執行過了,目的在於避免這個腳本重複執行。

在系統裏會有一個star()的函數來判斷文件是否已經建立,若是已經建立,後面讀取的時候就不會在去重建,避免系統重複啓動。

8. 啓動mingetty進程,等待用戶登陸系統

全部的服務都運行成功後,接下來進入登陸用戶系統的操做, 返回init , 這時候初始環境都已經配好了, init 打開虛擬終端機控制程序 mingetty 來啓動 login 程序,最後就等待用戶登入

虛擬終端由 mingetty程序產生的:
語法:
mingetty [–long-hostname][–noclear][tty]

在這裏插入圖片描述

9. 登陸系統,啓動完成

當咱們看到mingetty的登陸界面的時候,就能夠輸入用戶名和密碼了。
login會接收mingetty傳來的用戶名做爲用戶名的參數,先判斷用戶名不是root,且存在/etc/nologin文件,而後輸出nologin的文件內容並退出,這樣作通常是爲了防止非root用戶登陸。
以後就能夠根據passwd ,和shadow來驗證帳號的信息。

啓動相關的配置文件

1. boot目錄
[root@ecs-c13b ~]# ls /bootconfig-2.6.32-696.el6.x86_64
config-2.6.32-754.27.1.el6.x86_64
efi
grub
initramfs-2.6.32-696.el6.x86_64.img
initramfs-2.6.32-754.27.1.el6.x86_64.img
initrd-2.6.32-754.27.1.el6.x86_64kdump.img
symvers-2.6.32-696.el6.x86_64.gz
symvers-2.6.32-754.27.1.el6.x86_64.gz
System.map-2.6.32-696.el6.x86_64
System.map-2.6.32-754.27.1.el6.x86_64
vmlinuz-2.6.32-696.el6.x86_64
vmlinuz-2.6.32-754.27.1.el6.x86_64

在這裏插入圖片描述

查看grub的配置文件

(圖片有註釋)

在這裏插入圖片描述

2. 運行級別

運行級別一共有6個:
 # 0 - 停機(千萬別把initdefault設置爲0,不然系統永遠沒法啓動)
  # 1 - 單用戶模式
  # 2 - 多用戶,沒有 NFS
  # 3 - 徹底多用戶模式(標準的運行級)
  # 4 – 系統保留的
  # 5 - X11 (x window)
  # 6 - 從新啓動 (千萬不要把initdefault 設置爲6,不然將一直在重啓 )

總結

centos6的啓動和centos7有點區別,但大同小異,下一篇文章咱們來討論centos7的啓動過程。

若是是面試問到啓動過程:

加點自檢-內核引導-運行init-系統初始化-創建終端-用戶登陸系統

我是高勝寒,一個在教培行業,不忘初心的人,歡迎點贊收藏,咱們下篇文章再見!

相關文章
相關標籤/搜索