天天看點

Linux啟動流程

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

下一篇: Java 筆記

繼續閱讀