你們好,我是高勝寒,本文是Linux運維-按部就班學運維-基礎篇的第59篇文章
linux
七月新秋風露早,今天咱們一塊兒聊聊Linux啓動過程及相關的配置文件。 咱們以centos6爲例,一塊兒來研究一下它的啓動過程面試
centos6的啓動過程,包含如下幾個部分centos
系統通電以後,主板的BOIS 運行POST(Power on self test)代碼,檢測系統外圍的一些設備,好比: cpu,內存,顯卡,IO,鍵盤鼠標等。網絡
檢測經過後,根據BIOS裏boot設置的(光驅,硬盤,網盤)啓動順序,搜索相應的啓動驅動器,並獲取第一個啓動設備的代號。讀取第一個啓動設備的MBR的引導加載程序(lilo,grub,spfdisk)啓動信息,從MBR中加載啓動引導管理器(grub),並運行該啓動引導管理,進入grub啓動引導階段。運維
注意: MBR引導記錄: 用於引導磁盤空間小於2T的空間
GPT引導記錄: 用於引導磁盤空間大於2T的空間ide
所謂的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。
因此:164+446+2=512
依據 boot loader 的設定,到引導分區加載 Kernel ,Kernel 會開始偵測硬件並加載驅勱程序;
在硬件驅動成功後,Kernel 會主動執行 init 程序,而 init 會取得 run-level 信息;
init是執行的第一個程序,因此他的進程編號pid =1 ,其餘的進程都是從它衍生出來的,都是它的子進程。
前面咱們有提到過,對於孤兒進程,通常是送到init進程來處理。
init 執行 /etc/rc.d/rc.sysinit 文件來準備軟件執行的做業環境 (如網絡、時區主機名,selinux等);
init 執行 run-level 下各個服務並啓動 (script 方式);
腳本的內容是:
init 執行開機後自動運行腳本 /etc/rc.d/rc.local 文件;
這個腳本主要是一些自動以的開機啓動程序,若是你想開啓時啓動什麼內容,能夠在裏面寫
能夠看到這裏建立了一個 /var/lock/subsys/local 這個文件的建立只是爲了證實rc.local 這個腳本已經執行過了,目的在於避免這個腳本重複執行。
在系統裏會有一個star()的函數來判斷文件是否已經建立,若是已經建立,後面讀取的時候就不會在去重建,避免系統重複啓動。
全部的服務都運行成功後,接下來進入登陸用戶系統的操做, 返回init , 這時候初始環境都已經配好了, init 打開虛擬終端機控制程序 mingetty 來啓動 login 程序,最後就等待用戶登入
虛擬終端由 mingetty程序產生的:
語法:
mingetty [–long-hostname][–noclear][tty]
當咱們看到mingetty的登陸界面的時候,就能夠輸入用戶名和密碼了。
login會接收mingetty傳來的用戶名做爲用戶名的參數,先判斷用戶名不是root,且存在/etc/nologin文件,而後輸出nologin的文件內容並退出,這樣作通常是爲了防止非root用戶登陸。
以後就能夠根據passwd ,和shadow來驗證帳號的信息。
[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的配置文件
(圖片有註釋)
運行級別一共有6個:
# 0 - 停機(千萬別把initdefault設置爲0,不然系統永遠沒法啓動)
# 1 - 單用戶模式
# 2 - 多用戶,沒有 NFS
# 3 - 徹底多用戶模式(標準的運行級)
# 4 – 系統保留的
# 5 - X11 (x window)
# 6 - 從新啓動 (千萬不要把initdefault 設置爲6,不然將一直在重啓 )
centos6的啓動和centos7有點區別,但大同小異,下一篇文章咱們來討論centos7的啓動過程。
若是是面試問到啓動過程:
加點自檢-內核引導-運行init-系統初始化-創建終端-用戶登陸系統
我是高勝寒,一個在教培行業,不忘初心的人,歡迎點贊收藏,咱們下篇文章再見!