歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> RHEL6 啟動過程

RHEL6 啟動過程

日期:2017/2/28 15:47:12   编辑:Linux教程

在 Red Hat Enterprise Linux 6 中,sysvinit 軟件包中的 init 已經由 Upstart 替換,它是基於事件的 init 系統。這個系統可處理在引導過程中的任務和服務啟動,在關機過程中關閉它們並在系統運行時監控它們。rhel6的啟動流程發生了比較大的變化。對於熟悉其流程非常重要,對系統的排錯有很大的幫助。

--------------------------------------------------------------------------------------------------

1、BIOS加電,進行硬件自檢。然後產生int 19的終端,讀取第一個可引導的設備,比如自檢,初始化各種芯片,控制器,與端口;包括顯示器,內存,鍵盤,軟驅,串口等等最終,POST(Power-On Self Test)執行INT 19h中斷,找到可以啟動的磁盤,並將boot程序裝入內存,並將控制權交給OS的boot程序。當BIOS INT 19h被執行以後,系統進入OS Booting階段。

--------------------------------------------------------------------------------------------------

2、一塊硬盤,有一個主引導記錄,就是0面0道1扇區,又稱MBR。MBR是由BIOS自動裝載到內存中並CPU跳轉過去執行的。主引導記錄(Master Boot Record,縮寫:MBR),又叫做主引導扇區,是計算機開機後訪問硬盤時所必須要讀取的首個扇區,它在硬盤上的三維地址為(柱面,磁頭,扇區)=(0,0,1)。共512 Byte。

_____________________________________________

| | | |

| 引導代碼 446 Byte | 分區表 64 Byte | 結束符2 Byte |

|_________________|______________|_________ ___|

--------------------------------------------------------------------------------------------------

3、讀取第一個可引導的設備的MBR的BootLoader程序,在rhel系統上是Grub.

stage1:

/boot/grub中的stage1文件大小為512b,它是引導扇區中引導程序(前446字節為引導程序)的備份文件,功能是用來裝載 stage1.5或stage2的。

stage1.5:

因為STAGE2較大,通常都是放在一個文件系統當中的,但是STAGE1並不能識別文件系統格式,所以才需要stage1.5來引導位於某個文件系統當中的STAGE2,根據文件系統格式的不同,STAGE1.5也需要相應的文件,如:e2fs_stage1_5,fat_stage1_5,分別用於識別 ext和fat的文件系統格式。但是,當stage1加載1.5時,原則上是不認識ext文件系統的,應該也是無法找到1.5程序的,而實際上在安裝 grub時,程序已經把1.5程序寫到硬盤最前面的32K中,因為緊連著MBR的一段硬盤空間通常是空白無用的,grub就把stage1.5程序寫到這個地方,這個地方沒有文件系統,stage1程序可以直接去加載stage1.5。

--------------------------------------------------------------------------------------------------

4、Grub進程第二階段引導,讀取/boot/grub/grub.conf配置文件,根據配置文件中的定義,加載相應的內核,內核再加載相應的硬件驅動,進行必要的基礎硬件初始化

stage2:

grub能讓用戶以選項方式將OS加載、改變參數、修改選項,這些全都是stage2程序的功能。stage2可以去獲取grub.conf以及menu.lst等文件的內容。

[root@osdba~]# ls /boot/

config-2.6.32-71.el6.i686 <===系統kernel的配置文件,內核編譯完成後保存的就是這個配置文件

efi &lt;===Extensible Firmware Interface(EFI,可擴展固件接口)是 Intel 為全新類型的 PC 固件的體系結構、接口和服務提出的建議標准。

grub &lt;===開機管理程序grub相關數據目錄

initramfs-2.6.32-71.el6.i686.img &lt;===虛擬文件系統文件(RHEL6用initramfs代替了initrd,他們的目的是一樣的,只是本身處理的方式有點不同)

initrd-2.6.32-71.el6.i686.img &lt;===此文件是linux系統啟動時的模塊供應主要來源,initrd的目的就是在kernel加載系統識別cpu和內存等內核信息之後,讓系統進一步知道還有那些硬件是啟動所必須使用的;

symvers-2.6.32-71.el6.i686.gz &lt;===模塊符號信息

System.map-2.6.32-71.el6.i686 &lt;===是系統kernel中的變量對應表;(也可以理解為是索引文件)

vmlinuz-2.6.32-71.el6.i686 &lt;===系統使用kernel,用於啟動的壓縮內核鏡像。

[root@osdba~]# cat /boot/grub/grub.conf

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,0)

# kernel /vmlinuz-version ro root=/dev/sda3

# initrd /initrd-[generic-]version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title Red Hat Enterprise Linux (2.6.32-71.el6.i686)

root (hd0,0)

kernel /vmlinuz-2.6.32-71.el6.i686 ro root=UUID=bfd97ccd-15df-4e0f-8a66-b2da62213f62

rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM

LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet

initrd /initramfs-2.6.32-71.el6.i686.img

default #啟動系統時在人為不干預的情況下,默認讀取哪一個title,如果安裝了多個不同版本內核或者安裝了不用的操作系統,默認會產生多個title,#0第一個,1第二個,以此類推。

timeout #開機等待用戶的超時時間,單位為秒。在超時時間結束時,如果用戶沒有人為選擇,則以default指定的title讀取。

splashimage=(hd0,0)/grub/splash.xpm.gz #grub的背景圖案

hiddenmenu #隱藏菜單

title Red Hat Enterprise Linux (2.6.32-71.el6.i686) #title後為指定的菜單名字

root (hd0,0)

#root 這裡不是管理員的意思,這裡的root表示為根文件系統,hd代表硬盤(不區分IDE、SCSI),第一個0:第一個硬盤,第二個0:第一個分區。

#這裡的意思是定義第一個硬盤的第一個分區為根文件系統。

kernel /vmlinuz-2.6.32-71.el6.i686 ro root=UUID=bfd97ccd-15df-4e0f-8a66-b2da62213f62 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto rhgb quiet

initrd /initramfs-2.6.32-71.el6.i686.img

#kernel /vmlinuz-2.6.32-71.el6.i686

由boot loader的管理而開始讀取內核文件後,接下來,Linux 就會將內核解壓縮到主存儲器當中, 並且利用內核的功能,開始測試與驅動各個周邊設備,包括儲存設備、CPU、網卡、聲卡等等。 此時 Linux 內核會以自己的功能重新檢測一次硬件,而不一定會使用 BIOS 檢測到的硬件信息。也就是說,內核此時才開始接管 BIOS 後的工作。內核一般來說,它會被放置到 /boot 裡面,並且取名為 /boot/vmlinuz。

#ro root=UUID=bfd97ccd-15df-4e0f-8a66-b2da62213f62

Copyright © Linux教程網 All Rights Reserved