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啟動過程