POST->BIOS(Boot Sequence)->MBR(bootloader,446bytes)->Kernel(initrd)->(rootfs)/sbin/init
1、加電自檢(PowerOnSelfTest)
開機自動映射rom中程式到cpu可以尋址的空間中,cpu執行指令檢查基本硬體是否正常
2、BIOS(Boot Sequence)
如果正常則按照CMOS中儲存的BootSequnece依次尋找對應裝置上的MBR
3、MBR(BootLoader)
讀取第一個MBR存在的裝置中的BootLoader,并交與其控制權。
Linux下的常見BootLoader有兩種:
LILO: LInux LOader 不能引導1024柱面以後的分區核心(嵌入式)
GRUB: GRand Unified Bootloader
GRUB是個程式,裝在MBR的BootLoader當中來引動作業系統,但因為MBR空間有限,無法展示其特性,是以将GRUB分為2階段程式
Stage1(被裝載MBR當中) 主要目的是為了引導第二階段
Stage1.5(/boot/grub/Stage1_5) 識别常見不同類型的檔案系統
Stage2(/boot/grub/Stage2) 引導作業系統(突破了446位元組的限制)
并借助配置件/boot/grub/grub.conf
/boot/grub/grub.conf配置檔案作用
default=0# 設定預設啟動的title編号
timeout=5# 等待使用者選擇的逾時時長
splashimage=(hd0,0)/grub/splash.xpm.gz grub的背景圖檔
hiddenmenu 隐藏菜單
passwordredhat 定義明文密碼
password --md 定義密文密碼 生成密文指令grub-md5-crypt修改grub需要密碼
title Red Hat Enterprise Linux Server (2.6.18-238.el5) 核心标題或作業系統标題
root (hd0,0) 核心檔案所在裝置所有硬碟類型一律為hd(磁盤,分區)
kernel /vmlinuz-2.6.18-238.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
核心檔案路徑,以及傳遞核心的參數cat /proc/cmdline
password --md 定義密文密碼 生成密文指令grub-md5-crypt 啟動此核心需要密碼
initrd /initrd-2.6.18-238.el5.img ramdisk檔案路徑;作業系統安裝最後一步生成的
4、Kernel
裝置探測
驅動初始化(可能會從initrd(RHEL6 initramfs)檔案中裝載驅動子產品)
向核心提供基本驅動能力,此後核心可以通路根檔案系統,等待核心豐滿之後,逐漸失去作用
以隻讀挂載根檔案系統
裝載第一個程序init
5、init(etc/inittab)
/sbin/init 其配置檔案(etc/inittab)
RHEL6.0 upstart ubuntu 開源項目 并行啟動很多程序/etc/init/
systemd 更加快
/etc/inittab 主要任務
1、設定偶人運作級别
2、運作系統初始化腳本
3、運作制定運作級别目錄下的腳本
4、設定Ctrl+Alt+Del組合鍵的操作
5、定義UPS電源在電源故障/恢複時執行的操作
6、啟動6個虛拟終端(2345級别)
7、啟動圖形終端(5級别)
id:runlevels:action:process
id标示符
runlevels在那個級别運作此行
action什麼情況下執行此行
initdefault設定預設運作級别
sysinit系統初始化
wait等待級别切換至次級别時執行
respawn一段程式終止再重新啟動
ctrlaltdel重新開機
powerfail停電
powerokwait電又來了
process要運作的程式
si::sysinit:/etc/rc.d/rc.sysinit 主要功能
1、激活udev和selinux
2、根據/etc/sysctl.conf檔案,來設定核心參數
3、設定時鐘時鐘
4、裝載鍵盤映射
5、啟用交換分區
6、設定主機名
7、根檔案系統檢測,并以讀寫方式重新挂載
8、激活RAID和LVM裝置
9、啟用磁盤配額
10、根據/etc/fstab,并檢查挂載其他檔案系統
11、清理過期的鎖和PID檔案
/etc/rc.d/rc.local系統最後執行的一個腳本,不是特别麻煩的操作,不希望做成服務的可以在這裡聲明。
本文轉自 ftmoonfans 51CTO部落格,原文連結:http://blog.51cto.com/soulboy/1266162