深入理解RHEL6開機啟動原理

2021-07-14 07:08:51 字數 4370 閱讀 5007

一.深入理解開機啟動流程

1.電源加電的一刻,cpu通過自舉電路,(reset)重置訊號重置了自己的暫存器的值使其值正好指向了rom中bios程式的位址將其載入到記憶體中

2.bios是一段**其功能主要有兩個:乙個是完成加電自檢(post),另外乙個就是完成基本的輸入輸出服務

3.bios完成post後首先會根據coms(需要電池儲存其配置資訊)中的設定尋找第乙個處於活動狀態的可啟動的裝置(軟盤,硬碟,u盤,光碟等)

4.bios找到指定裝置後會利用bios中提供的int13h的2號功能來讀出改裝置的mbr中的內容(乙個扇區512位元組),mbr中存放的是bootloader引導管理器

5.linux下主流的bootloader是lilo和grub,目前linux系統主要使用grub或grub2.  

二.啟動流程值bios詳解

1.bios是什麼?

bios無非就是一段解除安裝eeprom中的一段程式而已.

586以後的主機板上bios rom的晶元基本上都採用了eeprom(electrically erasable programmable rom)電可擦除可程式設計rom.

通過跳線開關和系統配帶的驅動程式盤,可以對eeprom進行重寫,方便地實現bios公升級。

2.bios具有什麼功能?

bios用於計算機開機時執行系統各部分的的自檢,並啟動引導程式或裝載在記憶體的作業系統。此外,bios還向作業系統提供一些系統引數。

3.bios和coms的區別和聯絡

聯絡: cmos是計算機上另乙個重要的儲存器。之所以提到它,是因為bios程式的設定結果就儲存在cmos中。而且,在bios程式引導計算機啟動後,計算機需要載入cmos中的使用者資訊和常規設定後才能正常使用。

區別: bios與cmos都是儲存器。二者的區別是bios為唯讀儲存器(rom或eprom),而cmos為隨機儲存器(ram);bios中儲存的是程式,而cmos中儲存的是普通資訊。

三.啟動流程之grub詳解

1.grub主要有stage1,stage1.5,stage2三個階段組成,bios載入mbr中的bootloader,其實質就是載入stage1

2.stage1開始載入stage1.5,stage1.5階段主要是為了載入一些檔案系統的驅動,我們可以看下/boot/grub目錄下的檔案來驗證1 23

45

[root@litte grub]# pwd

/boot/grub

[root@litte grub]# ls

device.map 

fat_stage1_5  grub.conf 

jfs_stage1_5  minix_stage1_5 

splash.xpm.gz  stage2 

vstafs_stage1_5

e2fs_stage1_5  ffs_stage1_5  iso9660_stage1_5  menu.lst 

reiserfs_stage1_5  stage1 

ufs2_stage1_5  xfs_stage1_5

我們會發現大量以檔名中含有*stage1_5命名的檔案,這其實即使就是各個不同檔案系統的驅動

3.stage1.5階段以檔案系統方式載入了stage2階段,這個階段會讀取配置檔案生成可選擇的選單供使用者選擇要載入的核心,並提供選單的背景

4.stage2通過使用者的選擇載入相應的initrd檔案,到此grub生命週期結束,控制權轉交給initrd檔案

四.啟動流程之initid詳解

1.initrd是什麼?

initrd是在系統引導過程中掛載的乙個臨時根檔案系統,用來支援兩階段的引導過程。initrd 檔案中包含了各種可執行程式和驅動程式,

它們可以用來掛載實際的根檔案系統,然後再將這個 initrd ram 磁碟解除安裝,並釋放記憶體。在很多嵌入式 linux 系統中,initrd 就是最終的根檔案系統。

2.為什麼要使用initrd?

最主要的目的是載入根檔案系統儲存介質的驅動模組。我們知道根檔案系統可以儲存在包括ide、scsi、usb在內的多種介質上,如果將這些裝置的驅動都編譯進核心,可以想象核心會多麼龐大、臃腫。

3.initrd的載入流程?

1. boot loader 把核心以及 initrd 檔案載入到記憶體的特定位置。

2. 將initrd的內容釋放到rootfs中。

3. 執行initrd中的/init檔案,執行到這一點,核心的工作全部結束,完全交給/init檔案處理。

4.  init檔案的功能(init檔案 其實是乙個nash指令碼,和linux系統的第乙個程序init不一樣)1 23

45

61.掛載proc,sys目的之為了獲取核心輸出的資訊進行硬體探測

2.掛載/dev/pts,/dev/shm,

3.通過mknod命令建立裝置檔案(linux系統是通過udev進行裝置檔案的自動建立的)

4.通過insmod命令載入相關硬碟驅動和檔案系統驅動

5.掛載根檔案系統

6.切換真正的root,並執行init程式

五.grub配置檔案詳解

1.獲取硬碟上的grub

dd if=/dev/sda of=/root/mbr.bak bs=512 count=1

2.grub配置檔案詳解

grub.conf 12

3456

78910

1112

1314

15default=0

#設定預設載入的核心 0代表第乙個title處指定的核心映象

timeout=5

#選單選擇超時時間,5秒後不選擇的話就會啟動預設項

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

#指定載入的grub選單的背景

hiddenmenu 

#隱藏啟動選單

title centos (2.6.18-308.el5)#選單顯示資訊

root (hd0,0) 

#指定核心的位置 任何型別的硬碟grub都是hd#形式,

#第一塊硬碟就是0,第乙個分割槽就是0

kernel/vmlinuz-2.6.18-308.el5 ro root=label=/

#指定核心映象檔案

initrd/initrd-2.6.18-308.el5.img

#指定initrd映象檔案

其它額外引數介紹:

password

指定使用者在能夠解鎖選單、編輯乙個配置行或輸入 grub 命令前必須輸入的密碼。這個密碼可能是明文格式。grub 還允許將密碼儲存為乙個 md5 摘要,我們的示例就是這樣做的。這樣更安全一些,大多數管理員都會設定乙個密碼。如果不設定密碼,使用者就能夠完全訪問 grub 命令列。

boot

乙個可選引數,指示 grub 啟動選擇的作業系統。當乙個選項所有命令全部執行完時,這將是乙個預設操作。

lock

本示例中不使用。沒有輸入密碼之前不會啟動指定項。如果使用這個命令,那麼還應該在初始選項中指定乙個密碼;

否則,使用者可以編輯您的鎖定選項並啟動系統,或者新增 「single」 到其中的一項。如果您願意的話,還可以為個別條目指定乙個不同的密碼。

rootnoverify

類似於 root,除非 grub 不嘗試掛載檔案系統或驗證其引數。這通常用於 grub 不支援的檔案系統,比如 nifs。

chainloader

指定將作為階段 1 檔案載入的另乙個檔案。值 「+1」 等同於 0+1,表示載入從扇區 0 開始的乙個扇區,即從 root 或 rootnoverify 指定的裝置載入第乙個扇區。

深入理解 Oracle 啟動原理

當oracle啟動時,初始化引數檔案的載入順序為 spfilesid.ora spfile.ora initsid.ora 資料庫處於shutdown狀態 資料庫處於停止狀態。不能接受外界資料請求。使用作業系統命令ps ef grep ora看不到任何資料庫程序的存在,啟動指令碼問dbstart 資...

深入理解simhash原理

lsh locality sensitive hashing 是區域性敏感性hashing,它與傳統的hash是不同的。傳統hash的目的是希望得到o 1 的查詢效能,將原始資料對映到相應的桶內。lsh的基本思想是將空間中原始資料相鄰的2個資料點通過對映或者投影變換後,這兩個資料點在新的空間中的相鄰...

HDFS原理深入理解

1 hdfs概述 1 資料量越來越多,在乙個作業系統管轄的範圍存不下了,那麼就分配到更多的作業系統管理的磁碟中,但是不方便管理和維護,因此迫切需要一種系統來管理多台機器上的檔案,這就是分布式檔案管理系統 2 是一種允許檔案通過網路在多台主機上分享的檔案系統,可讓多機器上的多使用者分享檔案和儲存空間。...