linux 系統啓動流程

原著資料網址:http://wenku.baidu.com/view/414127fdf705cc1755270997.html html

(版權歸原做者全部) 安全

Linux系統的啓動分5個階段,每一個階段都完成不一樣的啓動任務。本章以Red Hat Enterprise Linux 5.2和x86平臺爲例,剖析從打開計算機電源到計算機屏幕出現登陸歡迎界面的整個Linux啓動過程,並重點介紹啓動中涉及的主要配置文件以及管理工具。 bash

5.1  Linux系統啓動過程簡介 網絡

因爲在Linux系統的啓動過程當中會出現很是多的提示信息,並且不少啓動信息都是在屏幕上一閃而過,因此對於不少Linux系統的初學者來講,可能會以爲Linux的啓動過程很是神祕和複雜。其實Linux系統的啓動過程並非你們想象中的那麼複雜,其過程能夠分爲5個階段。 工具

1.BIOS加電自檢 學習

2.加載主引導加載程序(MBR) 操作系統

3.加載次引導加載程序(GRUB) rest

4.Linux內核映像 htm

5.init進程 對象



5.2  BIOS加電自檢

X86計算機在啓動後首選會進行BIOS的加電自檢,檢測計算機的硬件設備,而後按照CMOS設置的順序搜索處於活動狀態而且能夠引導的設備。引導設備能夠是軟盤、光驅、USB設備、硬盤設置是網絡上的某個設備。

5.3  引導加載程序

GRUB是Red Hat Enterprise Linux 5.2默認的引導加載程序,其引導過程又能夠分爲啓動主引導加載程序和啓動次引導加載程序兩個階段。本節將介紹GRUB在這兩個階段中的啓動過程,以及介紹GRUB配置文件/boot/grub/grub.conf中的各類選項的使用。

5.3.1  引導加載程序的啓動

Red Hat Enterprise Linux 5.2默認安裝的引導加載程序是GRUB,是目前最經常使用的Linux引導加載程序。其引導過程分爲兩個階段,第一階段是保存在MBR中的主引導加載程序的加載。MBR中的主引導加載程序是一個512字節大小的映像,其中包含有機器的二進制代碼和一個小分區表。主引導加載程序的任務就是查找並加載保存在硬盤分區上的次引導加載程序,它經過分區表查找活動分區,而後將活動分區的次引導加載程序從設備讀入內存中並運行,進入引導加載程序的第二階段。

次引導加載程序也被稱爲內核加載程序,這個階段的任務是加載Linux內核。一旦次引導加載程序被加載到內存中後,便會顯示GRUB的圖形界面,在該界面中用戶能夠經過上下方向鍵選擇須要加載的操做系統以及它們的內核。

5.3.2  GRUB配置

GRUB的配置主要經過修改/boot/grub/目錄下的grub.conf文件來完成,用戶能夠經過VI或者在圖形界面中使用文件編輯工具打開該文件進行編輯。

1.default選項

2.timeout選項

3.splashimage選項

4.hiddenmenu選項

5.title選項

6.root (hdx,y)

7.kernel選項

5.4  內核映像

當用戶選擇啓動Linux操做系統後,GRUB會根據/boot/grub.conf配置文件中所設置的信息,從/boot/所在的分區上讀取Linux內核映像,而後把內核映像加載到內存中並把控制權交給Linux內核。Linux內核得到控制權後,將會按如下步驟繼續引導系統。

(1)內核映像首先會檢測系統中的硬件設備,包括內存、CPU、硬盤等,對這些設備進行初始化並配置。

(2)內核映像是通過壓縮的,接下來它要對自身進行解壓,同時加載必要的設備驅動。

(3)初始化與文件系統相關的虛擬設備,如LVM或者軟件RAID等。

(4)裝載根文件系統(/),把根文件系統掛載到根目錄下。

(5)完成引導後,Linux內核會在其進程空間內加載init程序,並把控制器交給init進程,由init進程繼續完成接下來的系統引導工做。

5.5  init進程

init進程是Linux系統全部進程的起點,內核在完成內核引導後,便會加載init進程,其進程號是1。init進程啓動後,會初始化操做系統,並啓動特定的運行級別(Runlevel)下的自動運行程序。用戶能夠經過更改相關的配置文件或使用圖形化配置工具「服務配置」,自定義須要在系統啓動時自動運行的服務。

5.5.1  init進程簡介

內核映像在完成引導後,便會啓動init進程。init進程對應的執行文件爲/sbin/init,它是系統中全部進程的發起者和控制者,全部的進程都是由它所衍生。若是init進程出現問題,系統中的其餘進程也會隨之而受影響。

1.做爲全部進程的父進程參照對象

2.運行不一樣級別的程序

5.5.2  init進程的引導過程

當init進程得到控制權後,它首先會執行/etc/rc.d/rc.sysinit腳本,根據腳本中的代碼配置環境變量、配置網絡、啓用Swap、檢查並掛載文件系統、執行其餘系統初始化所必須的步驟等。

5.5.3  配置自動運行服務

配置自動運行服務涉及的文件較多,若是徹底由用戶手工配置,其過程比較繁瑣,因此在Red Hat Enterprise Linux 5.2中提供有一個圖形配置工具,能夠有效地簡化配置過程。用戶首先要建立服務對應的啓動關閉腳本,腳本的格式通常爲:

#!/bin/bash

# chkconfig: -

# description:

#

case "$1" in

  start)

stop)

status)

reload)

restart)

     *)

     esac

exit $RETVAL

5.6 重啓和關閉系統

Linux下經常使用的關機/重啓命令有shutdown、root、halt以及init,它們均可以達到重啓系統的目的,但每一個命令的過程過程都有所不一樣。在本節的內容中將會介紹這些命令的使用方法,以及它們之間的區別,但願讀者通過本節的學習後能夠靈活使用這些命令,完成系統的關機和重啓。

5.6.1  shudown命令:關閉或重啓系統

使用shutdown命令能夠安全地重啓或關閉系統。當用戶執行shutdown命令後,系統會通知全部已經登陸的用戶系統將要關閉,而後拒絕任何新的用戶登陸,同時向系統中進程發送SIGTERM信號,這樣就可讓應用程序有足夠的時間提交數據。啓動或關閉系統是經過向init進程發送信號,要求它改變運行級別來實行的。其中,級別0被用來關閉系統,級別6爲重啓系統,級別1爲單用戶模式。shutdown命令的格式以下:

shutdown [-t sec] [-arkhncfFHP] time[warning-message]

5.6.2  halt命令:關閉系統

halt是關閉系統的快捷命令。執行halt命令實際上是至關於執行帶「-h」選項的shutdown命令。halt命令的格式以下所示。

halt [-n] [-w] [-d] [-f] [-i] [-p][-h]

5.6.3  reboot命令:重啓系統

reboot是重啓系統的快捷命令。執行該命令,至關於執行帶「-r」選項的shutdown命令。該命令的格式以下:

reboot [-n] [-w] [-d] [-f][-i] [-p] [-h]

5.6.4  init命令:改變運行級別

Linux系統共有7個不一樣的運行級別:0、一、二、三、四、五、6,使用init命令,能夠改變系統當前的運行級別。其命令格式以下:

init [ -a ] [ -s ] [ -b ] [ -z xxx ] [0123456Ss ]

5.6.5  經過圖形界面關閉系統

要註銷當前用戶,能夠在系統面板上選擇【系統】|【註銷】命令,打開如圖5.12所示的對話框。單擊【註銷】按鈕,系統將註銷當前的登陸用戶,並退出到用戶登陸界面。若是要關閉該對話框並返回桌面,可單擊【取消】按鈕。若是用戶不單擊任何按鈕,系統將會在60秒後自動註銷當前的登陸用戶。

5.7  系統啓動時常見的問題處理

Linux救援模式是解決系統沒法正常引導的最有效的解決方法,用戶應該要熟練掌握進入Linux救援模式的方法。對於安裝了多系統的環境,常常會因爲重裝Windows或者從新進行分區,致使GRUB被覆蓋或者沒法引導Linux,本節也會對這些問題給出具體的解決方法。

5.7.1  進入Linux救援模式

當由於某些緣由致使沒法經過正常引導進入系統(例如GRUB損壞或者誤刪除了某些重要的系統配置文件)或須要進行某些特殊的系統維護任務(例如忘記了root用戶的口令須要進行重置)時,就須要使用Linux救援模式

5.7.2  GRUB被Windows覆蓋

當安裝雙系統環境時,若是先安裝Linux,再安裝Windows;或者已經安裝好雙系統環境後,對Windows進行了重裝,那麼保存在MBR中的GRUB就會被Windows系統的引導裝載程序NTLDR所覆蓋,致使Linux系統沒法引導。

這時候能夠經過如下步驟恢復GRUB。

(1)使用5.7.1節中所介紹的方法進入Linux救援模式,並執行「chroot /mnt/sysimage」命令切換根分區到硬盤的根分區。

(2)在Shell中執行GRUB進入「grub>」提示符。

(3)執行「exit」命令退出硬盤的根分區,而後再執行一次該命令重啓計算機。

5.7.3  從新分區後GRUB引導失敗

若是系統中已經安裝了Linux,用戶使用分區工具對分區進行更改後,可能會致使Linux沒法正常引導。例如,系統中有兩個分區,其中第一個分區安裝了Windows(hda1),第二個分區安裝了Linux(hda5)。

相關文章
相關標籤/搜索