1. 程式人生 > >centos6啟動過程

centos6啟動過程

啟動

前言

每次在虛擬機裏點擊開啟虛擬機後會看到屏幕不停地出現很多代碼,後面有些跟著【ok】,有些代碼後面跟著紅色的【failed】。那麽問題來了,為啥有些啟動服務都失敗了,系統還是進去了呢?本文就此給大家詳細介紹一下,centos5和6 的啟動流程。以後遇到系統無法啟動,可以做到心中有數。

一、加電自檢POST,通過BIOS讀取cmos上的配置信息,讀取硬件的信息。並檢測能否正常運行,硬件設備初始化。

二、選擇啟動順序

1、加載MBR,存在於0磁道0扇區前446字節;

2、讀取位於MBR中存放的bootloader,功能是:識別、加載操作系統中的核心文件,交給內存。提供菜單信息和用戶選擇加載不同的操作系統,告訴下一階段去哪裏找系統和grub引導。

3、為了打破MBR中只有446Byte存放bootloader,grub分為三個階段

stage1:存放於MBR中,用於加載stage1_5階段,目的是為了識別並驅動stage2所在分區文件系統。

stage1_5: 存放於MBR之後的扇區,讓stage1中的bootloader能識別stage2所在分區的文件系統

stage2:存放於磁盤分區上(/boot/grub),用於加載臨時根文件ramdisk和加載內核文件

功能:(1)提供啟動菜單、並提供交互式接口

a:內核參數

e:編輯模式、用於編輯菜單

c:命令模式,交互式接口

(2)加載用戶選擇的內核或操作系統

允許傳遞參數給內核

可隱藏啟動菜單

(3)為菜單提供了保護機制

為編輯啟動菜單進行認證

為啟用內核或操作系統進行認證

總結:stage1_5就是向grub提供文件系統的驅動的,這樣stage1就能訪問stage2及內核所在分區(/boot)

grub的配置:/etc/grub.conf,讀取此文件的參數,準備啟動內核

三、加載系統內核kernel,執行系統初始化信息

內核存放在/boot下,是一個vmlinuz的文件,通過initramfs文件(ramdisk)虛擬一個根文件系統在內存中,來加載合適的驅動程序,並以只讀方式加載真正的根文件系統,然後運行用戶空間的第一個應用程序/sbin/init

ramdisk:centos 5 iniCentOS 5: initrd
工具程序:mkinitrd
CentOS 6,7: initramfs
工具程序:mkinitrd, dracut

制作ramdisk文件的制作:

(1) mkinitrd命令
為當前正在使用的內核重新制作ramdisk文件
mkinitrd /boot/initramfs-$(uname-r).img $(uname-r)
(2) dracut命令
為當前正在使用的內核重新制作ramdisk文件
dracut /boot/initramfs-$(uname-r).img $(uname-r)

四、啟動/sbin/init

1、 init的程序的類型:

SysV: init, CentOS 5之前 配置文件:/etc/inittab
Upstart: init,CentOS6 配置文件:/etc/inittab————————-僅設置設置默認運行級別

/etc/init/*.conf ——————-Upstart將配置文件拆分存放於/etc/init下以.conf結尾
Systemd:systemd, CentOS 7 配置文件:/usr/lib/systemd/system、/etc/systemd/system

2、流程

(1)初始運行級別

(2)系統初始化腳本————–/etc/rc.d/rc.sysinit:a、設置主機名(/etc/sysconfig/network中的HOSTNAME)

b、歡迎信息

c、激活udev和selinux

d、 掛載/etc/fstab定義的文件系統

e、掛載根文件系統(讀寫方式)

f 、系統時鐘

g、根據/etc/sysctl.conf文件設置內核參數

h、激活swap

i、激活LVM和software RAID設備

j、加載額外的驅動程序

k、清理操作

(3)對應運行級別的腳本目錄

centos 5 的/etc/inittab有類似的幾行: 13:3:wait:/etc/rc.d/rc 3 ————–讀取/etc/rc.d/rc3.d的鏈接文件來決定如何啟動或關閉赴服務:S開頭的 進行start操作,K開頭的stop。鏈接文件的源文件在/etc/init.d/目錄下服務腳本

例外:S99local沒有鏈接到/etc/init.d/下的服務腳本,而是鏈接到/etc/rc.d/rc.local (/etc/rc.local)。後序如果有不方便或者沒必要寫進腳本的程序,又希望開機自啟動,可以直接寫進這個腳本。

(4)配置好組合鍵的功能

(5)配置不斷電系統PF、PR

(6)啟動tty6個終端

(7)如果是3級別,啟動字符界面

五、啟動終端,登錄。

六、到這裏linux大概的過程就結束了,學習啟動過程是為了在系統出故障時,能做到快速判斷。後面一篇文章會詳細模擬啟動故障,根據啟動所需的文件來恢復。


centos6啟動過程