Linux系統開機啓動流程

 

(來源學習Linux時,本身作的筆記)linux

Linux系統有7個運行級別(runlevel)
運行級別0:系統停機狀態,系統默認運行級別不能設爲0,不然不能正常啓動
運行級別1:單用戶工做狀態,root權限,用於系統維護,禁止遠程登錄
運行級別2:多用戶狀態(沒有NFS)
運行級別3:徹底的多用戶狀態(有NFS),登錄後進入控制檯命令行模式
運行級別4:系統未使用,保留
運行級別5:X11控制檯,登錄後進入圖形GUI模式
運行級別6:系統正常關閉並重啓,默認運行級別不能設爲6,不然不能正常啓動

運行級別的原理:
1。在目錄/etc/rc.d/init.d下有許多服務器腳本程序,通常稱爲服務(service)
2。在/etc/rc.d下有7個名爲rcN.d的目錄,對應系統的7個運行級別
3。rcN.d目錄下都是一些符號連接文件,這些連接文件都指向init.d目錄下的service腳本文件,命名規則爲K+nn+服務名或S+nn+服務名,其中nn爲兩位數字。
4。系統會根據指定的運行級別進入對應的rcN.d目錄,並按照文件名順序檢索目錄下的連接文件
     對於以K開頭的文件,系統將終止對應的服務
     對於以S開頭的文件,系統將啓動對應的服務
5。查看運行級別用:runlevel
6。進入其它運行級別用:init N
7。另外init0爲關機,init 6爲重啓系統
    因爲如今的Linux系統安裝完後就運行在第5個級別,即系統啓動後直接進入圖形界面,而不用在字符模式下登陸後用startx或者xinit 來起動圖形界面。建議在系統安裝完成後把系統的默認運行等級設置在第3級,在字符終端登陸後,再手工輸入startx 命令起動圖形界面。能夠用以下的方法修改:
用文本編輯器修改 /etc/inittab文件,把代碼:
id:5:initdefault:這一行,修改爲
代碼:
id:3:initdefault:保存後就reboot重起,系統就默認起動到字符界面。不一樣運行級別之間的 差異的在於系統默認起動的服務的不一樣,如運行級別3默認不啓動X圖形界面服務,而運行級別5 卻默認起動。本質上是沒有區別的,更無所謂不一樣級別間功能強弱的問題。用戶徹底可自給定義不一樣級別的默認服務。在任何運行級別,用戶均可用init 命令來切換到其餘運行級別。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*Linux系統引導流程
*開機自檢
*MBR引導
*
GRUB
*加載linux內核和image映像
*
INIT進程初始化
-------------------

流程簡介
1. 加載 BIOS 的硬件信息、進行自我測試,並依據設定得到第一個可開機的設備;
2. 讀取並執行第一個開機設備內 MBR 的 boot Loader(grub 等程序);
3. 依據 boot loader 的設置加載 Kernel,Kernel 會開始檢測硬件與加載驅動程序;
4. 內核啓動 init;
5. 系統初始化:(/etc/init/rcS.conf exec /etc/rc.d/rc.sysinit);
6. init 找到/etc/inittab 文件,肯定默認的運行級別(X) (/etc/init/rcS.conf exec telinit $runlevel);
7. 觸發相應的 runlevel 事件(/etc/init/rc.conf exec /etc/rc.d/rc $RUNLEVEL);
8. 開始運行/etc/rc.d/rc,傳入參數 X;
9. /etc/rc.d/rc 腳本進行一系列設置,最後運行相應的/etc/rcX.d/中的腳本;
10. /etc/rcX.d/中的腳本按事先設定的優先級依次啓動;
11. 最後執行/etc/rc.d/rc.local;
12. 加載終端或 X-Window 接口。
------------------------------ios

1、開機流程


1. Power on開啓電源
-----
2. 啓動主板上的BOIS,初始化硬件:顯卡、CPU、內存、硬盤等,同時也開始查找啓動介質,USB、CD-ROM、HDD、PEX,即光盤、硬盤、網絡、移動設備四種方式能夠引導啓動

------------
BIOS簡介
BIOS是英文(Basic Input Output System)的縮寫,直譯過來就是「基本輸入輸出系統」。其實,它是一組固化到計算機內主板上的一個ROM芯片上的程序,它保存着計算機最重要的基本輸入輸出的程序、系統設置信息、開機後自檢程序和系統自啓程序。其主要功能是爲計算機提供最底層、最直接的硬件設置和控制。BIOS應該是鏈接軟件程序和硬件設備的一座「橋樑」,負責解決硬件的即時要求。
**********
BIOS的主要做用
1)
自檢及初始化程序:計算機電源接通後,系統將有一個對內部各個設備進行檢查的過程,這是由一個一般稱之爲POST(Power on self testr/上電自檢)的程序完成,這是BIOS 的一個功能。完整的自檢包括對CPU,640K基本存儲、1M以上的擴展內存、ROM主板、CMOS存貯器、串並口、顯示卡、軟硬盤子系統及鍵盤的測試。在自檢過程當中若發現問題,系統將給出提示信息或鳴笛警告。若是沒有任何問題,完成自檢後BIOS將按照系統CMOS設置中的順序搜尋軟、硬盤驅動器及CD-ROM、網絡服務器等有效的啓動驅動器,讀入操做系統引導記錄,而後將系統控制權交給引導記錄,由引導記錄完成系統的啓動
2) 硬件中斷處理:計算機開機的時候,BIOS會告訴CPU等硬件設備的中斷號,當你操做時輸入了使用某個硬件的命令後,它就會根據中斷號使用相應的硬件來完成命令的工做,最後根據其中斷號跳到原來的狀態
3)
程序服務請求:從BIOS的定義能夠知道它老是和計算機的輸入輸出設備打交道,它是經過最特定的數據端口發出指令,發送或接收各種外部設備的數據,從而實現軟件應用程序對硬件的操做
****************
BIOS和CMOS的關係
BIOS是一個程序,CMOS是一個存數據的芯片,BIOS啓動時會到CMOS裏讀數據。平時咱們配置BIOS的參數的時候,都存在CMOS裏
CMOS常指保存計算機基本啓動信息(如日期、時間、啓動設置等)的芯片,有時人們會把CMOS和BIOS混稱,其實CMOS是主板的一塊可讀寫的RAM芯片,是用來保存BIOS的硬件設備和用戶對某些參數的設定以及系統時間日期。應該把它和BIOS芯片區別開


注意:在斷電狀況下,扣掉CMOS電池,能夠恢復BIOS默認設置,能解決不少問題。
****************
BIOS由兩部分組成:POST代碼和運行時的服務
POST(power on self test):檢查覈心硬件是否正常
設備初始化:初始化驅動程序,分配資源
引導設備選擇:使用光驅,硬盤仍是PXE引導
移交執行區域:加載引導設備的第一個扇區(512字節)
**************
如何進入BIOS?
臺式機:按DEL鍵
筆記本:品牌不一樣按鍵不同,F1,F2,F8,F12等
服務器:F1

***************
計算機裏能夠設置哪些密碼?有哪些做用?
BIOS密碼:防止被人設置從U盤或者網絡引導進入系統
grub密碼:防止破密碼
系統密碼:防止人家進系統

**********
BIOS介紹
*基本輸入輸出系統
*存儲計算機基本硬件的信息
*
不能夠隨意拔插
**************
BIOS 啓動流程

**********
BIOS的設置工具
*
PhoenixBios Setup Utility
*AWARD CMOS Setup Utility

******************
案例一:因爲軟驅已再也不使用,某些BIOS在啓動時檢測不到軟驅會提示錯誤,須要將其屏蔽

案例三:管理員不記得某個電腦的BIOS密碼了,先須要清空BIOS密碼

*****************
根據顯示信息排除故障
*POST信息,包括檢測過程和錯誤提示
1) 計算機啓動時顯示「
CMOS battery faild」 :表示主板電力不足,須要更換新電池
2)計算機啓動時顯示「
Floppy disks fail Press F1 to Continue,Del to setup」:表示沒法驅動軟驅,按F1鍵繼續
根據警報音排除故障
*根據警報音識別故障硬件
1)
蜂鳴器長鳴:表示內存錯誤,清理灰層,或更換一條插槽
---------------------
3. 讀取MBR(master boot record,主引導記錄),又叫主引導扇區
(1)計算機訪問硬盤時所必須讀取的首個扇區(
0柱面、0磁道,1扇區)
MBR中的主引導加載程序是一個512 字節大小的映像,前446個字節是主引導加載程序,其中包含可執行代碼和錯誤消息文本。接下來的64個字節是分區表,其中包含4個分區記錄(每一個記錄的大小是16個字節)。MBR以兩個特殊數字的字節(0x55AA)結束,這個數字會用來進行MBR的有效性檢查


(2)系統若是要啓動,就必需要啓動內核,而MBR遠遠放不下Linux的內核,爲了能順利的找到放在其餘位置上的內核,人們想出了一個辦法就在446字節裏寫一個小程序,當BIOS試着啓動操做系統時就會執行這個小程序,而後再由小程序來載入其餘位置的內核。這個小程序就是啓動載入器(boot loader)。
linux的
boot loader 常見的有兩種:LILO(已淘汰)和GRUB。
MBR(512字節)不屬於任何分區

-----------------------
4. 加載grub(grand unified boot loader)經過GRUB來加載Linux內核
(1) GRUB是一個將引導加載程序安裝到主引導記錄的程序,主引導記錄位於一個硬盤開始的扇區。
它容許位於主引導記錄區中特定的命令來加載一個GRUB菜單或GRUB的命令環境。這使得用戶可以開始操做系統的選擇,在內核引導時傳遞特定命令給內核,或是在內核引導前肯定一些系統參數(如可用的RAM大小)。GRUB支持直接和鏈式加載的引導方法。GRUB能用於幾乎全部操做系統、絕大多數流行的文件系統以及幾乎全部的系統BIOS全部識別的硬盤
(2) GRUB有幾個重要的文件:
Stage一、Stage1.五、Stage2
*
stage1:一般放在MBR中;做用:在系統啓動時用於裝載Stage2並將控制權交給它
*
Stage2:GRUB的核心,全部功能都由它實現
*
Stage1.5:介於stage1和stage2之間,是它們的橋樑,由於stage2較大,一般都是放在一個文件系統當中的,可是stage 1並不能識別文件系統格式,因此才須要stage1.5來引導位於某個文件系統當中的stage2.根據文件系統格式的不一樣,stage1.5也須要相應的文件,如:e2fs_stage1_5,fat_stage1_5,分別用於識別ext和fat的文件系統格式。它存放於1-63的扇區之間
(3) GRUB的配置是經過位於
/boot/grub/grub.conf的一個配置文件來完成的
(4)
/boot目錄下的stage一、stage1.五、stage2都是備份的,防止grub被破壞後,能夠拿來修改grub程序
(5) 引導順序:
stage1->stage1.5->stage2
(6)引導程序功能
*編寫內核命令行
*裝載初始化虛擬磁盤
*將控制權交給Linux內核

注意:stage2是grub的核心,不是linux的核心,grub加載之後,目的就是加載linux內核
-------------------------
下面的的都是備份文件

系統啓動讀取文件順序:/etc/profile--->/etc/profile.d/*.sh-->.bash_profile-->.bashrc-->/etc/bashrc
----------------
修復grub的方法:
1)
grub-install /dev/sdx :修復/boot/grub目錄下的stage1,stage2,*stage1_5這些文件,/dev/sdx爲/boot所在硬盤
2)
root (hdx,x) ;setup <hdx>setup主要是將stage1.5作成功能塊嵌進硬盤
--------

在系統沒有執行過grub-install命令時stage1.5記錄stage2在磁盤上的位置
系統通過grub-install修復後stage1.5記錄stage2文件的位置
---------------
5.grub.conf----加載vmlinuz內核鏡像------加載initramfs掛在僞根至內存-----加載各類模塊和驅動-----加載INIT進程
6.加載Shell,進行驗證用戶和登陸

-------------------------------------------------------
INIT進程初始化
init進程是系統全部進程的起點,內核在完成核內引導後,即在本進程空間內加載init程序,它的進程號是
1init是全部進程的發起者和控制者。由於在任何基於Linux的系統中,它都是第一個運行的進程,因此init進程的編號(PID)永遠是 1
init進程有如下
兩個做用
1) init進程的第一個做用是扮演終結父進程的角色。由於init進程永遠不會被終止,全部系統老是能夠確信它的存在,並在必要的時候以它爲參照。若是某個進程在它衍生出來的所有子進程結束以前被終止,就會出現必須以init爲參照的狀況,此時那些失去父進程的子進程就都會以init做爲它們的父進程
2) init的第二個做用是在進入某個特定的運行級別時運行相應的程序,以此對各類運行級別


init的工做是根據/etc/inittable 來執行相應的腳本,進行系統初始化,如設置鍵盤、字體、裝載模塊、設置網絡
-------------------

/etc/inittable只實現開機的運行級別
/etc/rc.d/rc.sysinit:由init執行的第一個腳本

init在一開始會先判斷所要進入的runlevel爲1~6的哪種模式,跟着就直接進入rc.sysinit文件設置大部分和系統相關的環境。
rc.sysinit完成設置網絡、主機名、加載文件系統等初始化工做
1) 獲取網絡環境和主機類型
首先讀取網絡配置文件/etc/sysconfig/network,獲取主機名稱與默認網關(GATEWAY)等網絡環境
2) 測試與載入內存設備/proc及USB設備/sys
除載入內存設備/proc以外,還會主動檢測系統上是否有USB的設備,如有,則會主動加載USB設備的驅動程序,而且嘗試載入USB的文件系統
3) 決定是否啓動SELINUX
4) 接口設備的檢測與即插即用(PnP)參數測試
5) 用戶自定義模塊的加載
用戶能夠在/etc/sysconfig/modules/*.modules 加入自定義的模塊,此時會加載到系統中
6) 加載核心的相關配置
系統會自動去讀取/etc/sysctl.conf文件的設置值,使核心功能複合咱們的要求
7) 設置系統時間(clock)
8) 設置終端控制檯(console)的字形
9) 設置RAID和LVM等硬盤功能
10) 以FSCK檢驗磁盤文件系統
11) 進入磁盤配額 quota 功能(非必要)
12) 從新以可讀取模式載入系統磁盤
13) 啓動 quota功能
14) 啓動系統隨機數設備
15) 清除啓動過程當中的臨時文件
16) 將啓動相關信息加載到/var/log/dmesg文件中

/var/log/dmesg文件中能查看到系統開機的一系列流程
[root@lcl ~]# dmesg | more
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-279.el6.x86_64 (mockbuild@x86-008.build.bos.redhat.com) (gc
c version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Wed Jun 13 18:24:36 ED
T 2012
Command line: ro root=UUID=d43052a2-de68-41ae-9bc1-4de0e3c379d3 rd_NO_LUKS KEYB
OARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_
NO_DM rhgb quiet
KERNEL supported cpus:
Intel GenuineIntel
AMD AuthenticAMD
Centaur CentaurHauls
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cdce0000 (usable)
...
------------------------------------------
重啓後出現error15,代表stage1,stage1_5,stage2被破壞
-------------------------
刪除內核鏡像文件和初始化虛擬磁盤文件,下圖是重啓後出現的現象

修復
先mount /dev/cdrom /mnt

---------------------
系統啓動硬件信息
1./etc/rc.d/rc.sysinit
*由init進程調用執行
*完成設置網絡、主機名、加載文件系統等初始化工做

2./etc/rc.d/rc腳本文件
*由init進程調用執行
*根據指定的運行級別,加載或終止相應的系統服務

3.紅帽企業版linux服務腳本位於/etc/rc.d/init.d中
4. /etc/rc.d/rcn.d目錄中
包含運行級別n執行服務狀態配置的符號鏈接
小程序

 

/init = /bin/bash


bash

 

Linux系統有7個運行級別(runlevel)
運行級別0:系統停機狀態,系統默認運行級別不能設爲0,不然不能正常啓動
運行級別1:單用戶工做狀態,root權限,用於系統維護,禁止遠程登錄
運行級別2:多用戶狀態(沒有NFS)
運行級別3:徹底的多用戶狀態(有NFS),登錄後進入控制檯命令行模式
運行級別4:系統未使用,保留
運行級別5:X11控制檯,登錄後進入圖形GUI模式
運行級別6:系統正常關閉並重啓,默認運行級別不能設爲6,不然不能正常啓動

運行級別的原理:
1。在目錄/etc/rc.d/init.d下有許多服務器腳本程序,通常稱爲服務(service)
2。在/etc/rc.d下有7個名爲rcN.d的目錄,對應系統的7個運行級別
3。rcN.d目錄下都是一些符號連接文件,這些連接文件都指向init.d目錄下的service腳本文件,命名規則爲K+nn+服務名或S+nn+服務名,其中nn爲兩位數字。
4。系統會根據指定的運行級別進入對應的rcN.d目錄,並按照文件名順序檢索目錄下的連接文件
     對於以K開頭的文件,系統將終止對應的服務
     對於以S開頭的文件,系統將啓動對應的服務
5。查看運行級別用:runlevel
6。進入其它運行級別用:init N
7。另外init0爲關機,init 6爲重啓系統
    因爲如今的Linux系統安裝完後就運行在第5個級別,即系統啓動後直接進入圖形界面,而不用在字符模式下登陸後用startx或者xinit 來起動圖形界面。建議在系統安裝完成後把系統的默認運行等級設置在第3級,在字符終端登陸後,再手工輸入startx 命令起動圖形界面。能夠用以下的方法修改:
用文本編輯器修改 /etc/inittab文件,把代碼:
id:5:initdefault:這一行,修改爲
代碼:
id:3:initdefault:保存後就reboot重起,系統就默認起動到字符界面。不一樣運行級別之間的 差異的在於系統默認起動的服務的不一樣,如運行級別3默認不啓動X圖形界面服務,而運行級別5 卻默認起動。本質上是沒有區別的,更無所謂不一樣級別間功能強弱的問題。用戶徹底可自給定義不一樣級別的默認服務。在任何運行級別,用戶均可用init 命令來切換到其餘運行級別。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*Linux系統引導流程
*開機自檢
*MBR引導
*
GRUB
*加載linux內核和image映像
*
INIT進程初始化
-------------------
file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/1.png
流程簡介
1. 加載 BIOS 的硬件信息、進行自我測試,並依據設定得到第一個可開機的設備;
2. 讀取並執行第一個開機設備內 MBR 的 boot Loader(grub 等程序);
3. 依據 boot loader 的設置加載 Kernel,Kernel 會開始檢測硬件與加載驅動程序;
4. 內核啓動 init;
5. 系統初始化:(/etc/init/rcS.conf exec /etc/rc.d/rc.sysinit);
6. init 找到/etc/inittab 文件,肯定默認的運行級別(X) (/etc/init/rcS.conf exec telinit $runlevel);
7. 觸發相應的 runlevel 事件(/etc/init/rc.conf exec /etc/rc.d/rc $RUNLEVEL);
8. 開始運行/etc/rc.d/rc,傳入參數 X;
9. /etc/rc.d/rc 腳本進行一系列設置,最後運行相應的/etc/rcX.d/中的腳本;
10. /etc/rcX.d/中的腳本按事先設定的優先級依次啓動;
11. 最後執行/etc/rc.d/rc.local;
12. 加載終端或 X-Window 接口。
------------------------------服務器

1、開機流程


1. Power on開啓電源
-----
2. 啓動主板上的BOIS,初始化硬件:顯卡、CPU、內存、硬盤等,同時也開始查找啓動介質,USB、CD-ROM、HDD、PEX,即光盤、硬盤、網絡、移動設備四種方式能夠引導啓動
file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/2.png
------------
BIOS簡介
BIOS是英文(Basic Input Output System)的縮寫,直譯過來就是「基本輸入輸出系統」。其實,它是一組固化到計算機內主板上的一個ROM芯片上的程序,它保存着計算機最重要的基本輸入輸出的程序、系統設置信息、開機後自檢程序和系統自啓程序。其主要功能是爲計算機提供最底層、最直接的硬件設置和控制。BIOS應該是鏈接軟件程序和硬件設備的一座「橋樑」,負責解決硬件的即時要求。
**********
BIOS的主要做用
1)
自檢及初始化程序:計算機電源接通後,系統將有一個對內部各個設備進行檢查的過程,這是由一個一般稱之爲POST(Power on self testr/上電自檢)的程序完成,這是BIOS 的一個功能。完整的自檢包括對CPU,640K基本存儲、1M以上的擴展內存、ROM主板、CMOS存貯器、串並口、顯示卡、軟硬盤子系統及鍵盤的測試。在自檢過程當中若發現問題,系統將給出提示信息或鳴笛警告。若是沒有任何問題,完成自檢後BIOS將按照系統CMOS設置中的順序搜尋軟、硬盤驅動器及CD-ROM、網絡服務器等有效的啓動驅動器,讀入操做系統引導記錄,而後將系統控制權交給引導記錄,由引導記錄完成系統的啓動
2) 硬件中斷處理:計算機開機的時候,BIOS會告訴CPU等硬件設備的中斷號,當你操做時輸入了使用某個硬件的命令後,它就會根據中斷號使用相應的硬件來完成命令的工做,最後根據其中斷號跳到原來的狀態
3)
程序服務請求:從BIOS的定義能夠知道它老是和計算機的輸入輸出設備打交道,它是經過最特定的數據端口發出指令,發送或接收各種外部設備的數據,從而實現軟件應用程序對硬件的操做
****************
BIOS和CMOS的關係
BIOS是一個程序,CMOS是一個存數據的芯片,BIOS啓動時會到CMOS裏讀數據。平時咱們配置BIOS的參數的時候,都存在CMOS裏
CMOS常指保存計算機基本啓動信息(如日期、時間、啓動設置等)的芯片,有時人們會把CMOS和BIOS混稱,其實CMOS是主板的一塊可讀寫的RAM芯片,是用來保存BIOS的硬件設備和用戶對某些參數的設定以及系統時間日期。應該把它和BIOS芯片區別開


注意:在斷電狀況下,扣掉CMOS電池,能夠恢復BIOS默認設置,能解決不少問題。
****************
BIOS由兩部分組成:POST代碼和運行時的服務
POST(power on self test):檢查覈心硬件是否正常
設備初始化:初始化驅動程序,分配資源
引導設備選擇:使用光驅,硬盤仍是PXE引導
移交執行區域:加載引導設備的第一個扇區(512字節)
**************
如何進入BIOS?
臺式機:按DEL鍵
筆記本:品牌不一樣按鍵不同,F1,F2,F8,F12等
服務器:F1

***************
計算機裏能夠設置哪些密碼?有哪些做用?
BIOS密碼:防止被人設置從U盤或者網絡引導進入系統
grub密碼:防止破密碼
系統密碼:防止人家進系統

**********
BIOS介紹
*基本輸入輸出系統
*存儲計算機基本硬件的信息
*
不能夠隨意拔插
**************
BIOS 啓動流程
file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/3.png
**********
BIOS的設置工具
*
PhoenixBios Setup Utility
*AWARD CMOS Setup Utility

******************
案例一:因爲軟驅已再也不使用,某些BIOS在啓動時檢測不到軟驅會提示錯誤,須要將其屏蔽
file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/4.png
案例三:管理員不記得某個電腦的BIOS密碼了,先須要清空BIOS密碼
file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/5.png
******************
根據顯示信息排除故障
*POST信息,包括檢測過程和錯誤提示
1) 計算機啓動時顯示「
CMOS battery faild」 :表示主板電力不足,須要更換新電池
2)計算機啓動時顯示「
Floppy disks fail Press F1 to Continue,Del to setup」:表示沒法驅動軟驅,按F1鍵繼續
根據警報音排除故障
*根據警報音識別故障硬件
1)
蜂鳴器長鳴:表示內存錯誤,清理灰層,或更換一條插槽
---------------------
3. 讀取MBR(master boot record,主引導記錄),又叫主引導扇區
(1)計算機訪問硬盤時所必須讀取的首個扇區(
0柱面、0磁道,1扇區)
MBR中的主引導加載程序是一個512 字節大小的映像,前446個字節是主引導加載程序,其中包含可執行代碼和錯誤消息文本。接下來的64個字節是分區表,其中包含4個分區記錄(每一個記錄的大小是16個字節)。MBR以兩個特殊數字的字節(0x55AA)結束,這個數字會用來進行MBR的有效性檢查

file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/6.png
(2)系統若是要啓動,就必需要啓動內核,而MBR遠遠放不下Linux的內核,爲了能順利的找到放在其餘位置上的內核,人們想出了一個辦法就在446字節裏寫一個小程序,當BIOS試着啓動操做系統時就會執行這個小程序,而後再由小程序來載入其餘位置的內核。這個小程序就是啓動載入器(boot loader)。
linux的
boot loader 常見的有兩種:LILO(已淘汰)和GRUB。
MBR(512字節)不屬於任何分區

-----------------------
4. 加載grub(grand unified boot loader)經過GRUB來加載Linux內核
(1) GRUB是一個將引導加載程序安裝到主引導記錄的程序,主引導記錄位於一個硬盤開始的扇區。
它容許位於主引導記錄區中特定的命令來加載一個GRUB菜單或GRUB的命令環境。這使得用戶可以開始操做系統的選擇,在內核引導時傳遞特定命令給內核,或是在內核引導前肯定一些系統參數(如可用的RAM大小)。GRUB支持直接和鏈式加載的引導方法。GRUB能用於幾乎全部操做系統、絕大多數流行的文件系統以及幾乎全部的系統BIOS全部識別的硬盤
(2) GRUB有幾個重要的文件:
Stage一、Stage1.五、Stage2
*
stage1:一般放在MBR中;做用:在系統啓動時用於裝載Stage2並將控制權交給它
*
Stage2:GRUB的核心,全部功能都由它實現
*
Stage1.5:介於stage1和stage2之間,是它們的橋樑,由於stage2較大,一般都是放在一個文件系統當中的,可是stage 1並不能識別文件系統格式,因此才須要stage1.5來引導位於某個文件系統當中的stage2.根據文件系統格式的不一樣,stage1.5也須要相應的文件,如:e2fs_stage1_5,fat_stage1_5,分別用於識別ext和fat的文件系統格式。它存放於1-63的扇區之間
(3) GRUB的配置是經過位於
/boot/grub/grub.conf的一個配置文件來完成的
(4)
/boot目錄下的stage一、stage1.五、stage2都是備份的,防止grub被破壞後,能夠拿來修改grub程序
(5) 引導順序:
stage1->stage1.5->stage2
(6)引導程序功能
*編寫內核命令行
*裝載初始化虛擬磁盤
*將控制權交給Linux內核

注意:stage2是grub的核心,不是linux的核心,grub加載之後,目的就是加載linux內核
-------------------------
下面的的都是備份文件
file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/7.png
系統啓動讀取文件順序:/etc/profile--->/etc/profile.d/*.sh-->.bash_profile-->.bashrc-->/etc/bashrc
----------------
修復grub的方法:
1)
grub-install /dev/sdx :修復/boot/grub目錄下的stage1,stage2,*stage1_5這些文件,/dev/sdx爲/boot所在硬盤
2)
root (hdx,x) ;setup <hdx>setup主要是將stage1.5作成功能塊嵌進硬盤
--------
file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/8.png

在系統沒有執行過grub-install命令時stage1.5記錄stage2在磁盤上的位置
系統通過grub-install修復後stage1.5記錄stage2文件的位置
---------------
5.grub.conf----加載vmlinuz內核鏡像------加載initramfs掛在僞根至內存-----加載各類模塊和驅動-----加載INIT進程
6.加載Shell,進行驗證用戶和登陸

-------------------------------------------------------
INIT進程初始化
init進程是系統全部進程的起點,內核在完成核內引導後,即在本進程空間內加載init程序,它的進程號是
1init是全部進程的發起者和控制者。由於在任何基於Linux的系統中,它都是第一個運行的進程,因此init進程的編號(PID)永遠是 1
init進程有如下
兩個做用
1) init進程的第一個做用是扮演終結父進程的角色。由於init進程永遠不會被終止,全部系統老是能夠確信它的存在,並在必要的時候以它爲參照。若是某個進程在它衍生出來的所有子進程結束以前被終止,就會出現必須以init爲參照的狀況,此時那些失去父進程的子進程就都會以init做爲它們的父進程
2) init的第二個做用是在進入某個特定的運行級別時運行相應的程序,以此對各類運行級別


init的工做是根據/etc/inittable 來執行相應的腳本,進行系統初始化,如設置鍵盤、字體、裝載模塊、設置網絡
-------------------
file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/9.png

/etc/inittable只實現開機的運行級別
/etc/rc.d/rc.sysinit:由init執行的第一個腳本

init在一開始會先判斷所要進入的runlevel爲1~6的哪種模式,跟着就直接進入rc.sysinit文件設置大部分和系統相關的環境。
rc.sysinit完成設置網絡、主機名、加載文件系統等初始化工做
1) 獲取網絡環境和主機類型
首先讀取網絡配置文件/etc/sysconfig/network,獲取主機名稱與默認網關(GATEWAY)等網絡環境
2) 測試與載入內存設備/proc及USB設備/sys
除載入內存設備/proc以外,還會主動檢測系統上是否有USB的設備,如有,則會主動加載USB設備的驅動程序,而且嘗試載入USB的文件系統
3) 決定是否啓動SELINUX
4) 接口設備的檢測與即插即用(PnP)參數測試
5) 用戶自定義模塊的加載
用戶能夠在/etc/sysconfig/modules/*.modules 加入自定義的模塊,此時會加載到系統中
6) 加載核心的相關配置
系統會自動去讀取/etc/sysctl.conf文件的設置值,使核心功能複合咱們的要求
7) 設置系統時間(clock)
8) 設置終端控制檯(console)的字形
9) 設置RAID和LVM等硬盤功能
10) 以FSCK檢驗磁盤文件系統
11) 進入磁盤配額 quota 功能(非必要)
12) 從新以可讀取模式載入系統磁盤
13) 啓動 quota功能
14) 啓動系統隨機數設備
15) 清除啓動過程當中的臨時文件
16) 將啓動相關信息加載到/var/log/dmesg文件中

/var/log/dmesg文件中能查看到系統開機的一系列流程
[root@lcl ~]# dmesg | more
Initializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-279.el6.x86_64 (mockbuild@x86-008.build.bos.redhat.com) (gc
c version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Wed Jun 13 18:24:36 ED
T 2012
Command line: ro root=UUID=d43052a2-de68-41ae-9bc1-4de0e3c379d3 rd_NO_LUKS KEYB
OARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_
NO_DM rhgb quiet
KERNEL supported cpus:
Intel GenuineIntel
AMD AuthenticAMD
Centaur CentaurHauls
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cdce0000 (usable)
...
------------------------------------------
重啓後出現error15,代表stage1,stage1_5,stage2被破壞
-------------------------
刪除內核鏡像文件和初始化虛擬磁盤文件,下圖是重啓後出現的現象
file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/10.png
修復
先mount /dev/cdrom /mnt
file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/11.png
---------------------
系統啓動硬件信息
1./etc/rc.d/rc.sysinit
*由init進程調用執行
*完成設置網絡、主機名、加載文件系統等初始化工做

2./etc/rc.d/rc腳本文件
*由init進程調用執行
*根據指定的運行級別,加載或終止相應的系統服務

3.紅帽企業版linux服務腳本位於/etc/rc.d/init.d中
4. /etc/rc.d/rcn.d目錄中
包含運行級別n執行服務狀態配置的符號鏈接


file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/12.png
file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/13.png

file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/14.png
/init = /bin/bash

file://C:\Users\losnau\AppData\Local\Temp\ct_tmp/15.png網絡

相關文章
相關標籤/搜索