歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> Linux系統服務 4 啟動流程+模塊管理與loader

Linux系統服務 4 啟動流程+模塊管理與loader

日期:2017/3/3 16:17:40   编辑:關於Linux

一 Linux的啟動流程分析

1 目前各大Linux發行版本的主流引導裝載程序使用的軟件為grub

2 簡單來說,系統啟動的過程如下:

1. 加載BIOS的硬件信息與自我測試,並依據設置取得第一個可啟動的設備

2. 讀取並執行第一個啟動設備內的MBR的boot Loader也就是一般的grub

3. 依據boot Loader的設置加載Kernel,Kernel會開始檢測硬件與加載驅動程序

4. 在硬件驅動成功後,Kernel會主動調用init進程,而init會取得run-level信息

5. init准備軟件執行的環境以及各個服務,最後等待用戶的登錄

3 引導裝載程序稱為Boot Loader,就在啟動設備的第一個扇區內,也就是我們一直說的MBR

4 為什麼我們推薦先安裝windows再安裝Linux呢?

原因是因為Linux具有控制權轉交的功能,而Windows是沒有的,因為在加載Boot Loader的時候 windows只會加載它自己的(流氓啊,業界毒瘤)

5 假設我的MBR使用的是Linux的grub,那麼我們就有三種菜單了

1. 第一個菜單就是直接指向Linux的內核文件直接加載內核來啟動Linux

2. 第二個菜單就是將引導裝載控權交給windows,此時會加載windows的內核啟動windows

3. 使用Linux的boot sector內的引導裝載程序,此時就會跳出另一個grub的菜單

6 在內核加載完畢進行完畢硬件檢測與驅動加載後,此時我們的內核就會主動的調用第一個進程就是 /sbin/init

7 運行級別

0: 系統直接關機

1: 單用戶維護模式,用在系統出問題時的維護

2: 類似運行級別3,但是沒有NFS服務

3: 完整含有網絡功能的純文本模式

4: 系統保留功能

5: 與運行級別3類似,但是加載了x window

6: 重新啟動

8 init的配置文件就是/etc/inittab

9 如果用戶有想要在系統啟動的時候進行的工作,可以直接寫在/etc/rc.d/rc.local,那麼該工作就 會在啟動的時候自動被加載,而不必等我們登錄系統去啟動。

10 如果僅是暫時更改系統的運行級別,則使用init x切換到運行級別x

二 Boot Loader

1 boot Loader是載入內核的重要工具,沒有boot Loader的話那麼內核根本沒有辦法被系統加載

2 硬盤與分區在grub中的代號

1 第一塊查找的硬盤代號為(hd0),而該硬盤的一號分區為(hd0 , 0)

2 在grub裡面,它開始的數字是0而不是1,第一塊硬盤的第一個分區的grub的代號為(hd0 , 0), 第 一塊硬盤的第一個邏輯分區的grub的代號為(hd0 , 4)

3 BIOS無法讀取大硬盤的問題

舉例來說,過去很多朋友經常會發現,系統使用DVD啟動安裝的時候,可以順利安裝好linux,但是第 一次啟動時,屏幕只出現黑黑的一片,且出現grub>的字樣,而無法進入Linux系統,這是怎麼回事?

1 在安裝的過程中,由於是使用DVD或CD啟動,因此加載Linux內核不成問題,而內核會失去檢測系統 硬件,因此可以識別BIOS識別不到的硬盤

2 但是進入硬盤啟動時,由於Kernel與initrd文件都是通過BIOS的INT3通道來讀取的,因此你的 Kernel與initrd如果放置在BIOS無法判斷的扇區中,當然就無法被加載,而僅會出現grub>等待你的 處理

三 重點內容

1 Linux不可隨意關機,否則容易造成文件系統錯亂或者其他無法啟動的問題

2 啟動流程主要是BIOS,MBR,Loader,Kernel+initrd,/sbin/init等流程

3 init的配置文件為/etc/initab,此文件可以設置默認的runlevel,系統初始化腳本,不同執行等 級的服務

4 grub的配置文件與相關文件系統定義文件太多放置/boot/grub目錄中,配置文件名為menu.lst

5 若要進入救援模式,可於啟動菜單過程中,在kernel的選項後面加入"single"或者 "init=/bin/bash"等方式來進入救援模式

 

Copyright © Linux教程網 All Rights Reserved