华南俳烁实业有限公司

考試首頁 | 考試用書 | 培訓課程 | 模擬考場 | 考試論壇  
  當前位置:操作系統(tǒng) > Linux > 文章內容
  

Linux操作系統(tǒng)學習筆記(44)

 [ 2016年1月5日 ] 【

系統(tǒng)啟動和引導過程

當打開 Linux 計算機時會發(fā)生什么?

在幾乎每種 Linux 配置中,引導過程都可以分為 9 個步驟:

  1. 硬件和固件:BIOS 或固件系統(tǒng)讀取硬盤或者其他引導設備(例如,光盤、軟盤、網(wǎng)絡引導等等)上的主引導記錄。
  2. 引導裝載程序運行。x86 系統(tǒng)上的 Linux 系統(tǒng)通常使用 LILO 或者 GRUB。某些老式系統(tǒng)可能使用 loadlin 通過一個中間 DOS 分區(qū)進行引導。在 Power PC® 系統(tǒng)上,這可能是 BootX 或者 yaboot。一般來說,引導裝載程序 是一種簡單的程序,它知道到哪里尋找 Linux 內核,可能在幾個版本之間進行選擇,甚至可以選擇同一計算機上的其他操作系統(tǒng)。
  3. 內核裝載。
  4. 安裝根文件系統(tǒng)。在某些情況下,裝載一個臨時 ramdisk 映像,然后再安裝真正的根文件系統(tǒng),這樣可以啟用真實根文件系統(tǒng)所需的特殊驅動程序或模塊。

安裝好根文件系統(tǒng)之后,就可以開始初始化了。

  1. 啟動進程 init 是所有其他 Linux 進程的父進程。
  2. 讀取 /etc/inittab 的內容,對余下的引導步驟進行配置。特別重要的是,/etc/inittab 中的命令行控制將系統(tǒng)引導到哪個運行級別,從而決定初始化期間還要執(zhí)行哪些步驟。

實際上,此后的所有引導過程完全由文件 /etc/inittab 的內容控制。具體來說,腳本和工具一般按照某些約定運行,但是理論上完全可以通過修改 /etc/inittab 來運行不同的腳本。

/etc/inittab 中的一個特定設置特別關鍵。這一行像下面這樣:

id:5:initdefault:

這一行一般出現(xiàn)在接近文件頂部的地方,它設置運行級別。運行級別控制 /etc/inittab 腳本其余部分中采取的操作。

在處理 /etc/inittab 腳本時發(fā)生了什么?具體來說,在這個過程中涉及哪些文件和目錄?

  1. 與運行級別無關的系統(tǒng)初始化。一般情況下,無論運行級別如何,都要執(zhí)行某些初始化操作。這些步驟在 /etc/inittab 中用下面這樣的設置表示:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

在某些 Linux 系統(tǒng)上(大多數(shù)基于 Debian 的系統(tǒng)),還會看到:

si::sysinit:/etc/init.d/rcS

如果是后一種情況,/etc/init.d/rcS 是一個腳本,它只運行每個匹配 /etc/rcS.d/[Ss]??* 的腳本。另一方面,如果系統(tǒng)使用 /etc/rc.d/rc.sysinit,那么這個文件包含一個長腳本,用于執(zhí)行所有 初始化過程。

  1. 特定于運行級別的系統(tǒng)初始化。實際上,可以把任意數(shù)量的操作與運行級別聯(lián)系起來,而且一個操作可以與一個或多個運行級別相關聯(lián)。/etc/inittab 包含的代碼像下面這樣:

l0:0:wait:/etc/rc.d/rc 0
# ...
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

腳本 /etc/rc.d/rc 將運行所有匹配 /etc/rc$1.d/[KkSs]??* 模式的文件。例如,在以運行級別 5 啟動的示例系統(tǒng)上,會依次運行以下文件:

/etc/rc5.d/K15postgresql
/etc/rc5.d/S01switchprofile
/etc/rc5.d/S05harddrake
...
/etc/rc5.d/S55sshd
...
/etc/rc5.d/S99linuxconf
/etc/rc5.d/S99local

以 “K”或“k” 開頭的文件是殺死腳本,它們結束進程或者清除進程的操作。以“S”或“s”開頭的文件是啟動腳本,它們一般啟動新進程或者使系統(tǒng)準備在此運行級別上運行。這些文件大多數(shù)是 shell 腳本,而且大多數(shù)是鏈接(常常鏈接到 /etc/init.d/ 中的文件)。

在大多數(shù)情況下,當 Linux 系統(tǒng)在一個運行級別上運行之后,您希望作為用戶登錄進系統(tǒng)。為此,運行一個稱為 getty 的程序來處理登錄過程。發(fā)行版創(chuàng)建者們使用基本 getty 的許多變體,比如 agetty、mgetty 和 mingetty。這些程序基本上都做同樣的工作。

 

  1. 在提示符下登錄。/etc/inittab 常常在一個或多個虛擬終端中啟動 getty 程序,并且為幾個不同運行級別這樣做。這是用下面這樣的代碼配置的:

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

第一個數(shù)字是運行 getty 的虛擬終端,后面的一組數(shù)字是采用此操作的幾個運行級別(例如,在運行級別 2、3、4 和 5 上都啟動 mingetty)。

接下來的步驟可能涉及啟動更多服務、登錄進一種圖形化環(huán)境、恢復 UI 設置或者其他更個性化的細節(jié),這超出了本教程的討論范圍。

本文糾錯】【告訴好友】【打印此文】【返回頂部
將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動訪問考試網(wǎng) | 復制本頁地址,傳給QQ/MSN上的好友 | 申請鏈接 | 意見留言 TOP
關于本站  網(wǎng)站聲明  廣告服務  聯(lián)系方式  站內導航  考試論壇
Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved
遂昌县| 普兰店市| 菏泽市| 抚远县| 舞钢市| 宁南县| 丹巴县| 赤壁市| 友谊县| 棋牌| 留坝县| 邓州市| 循化| 策勒县| 广汉市| 讷河市| 陇川县| 汪清县| 临武县| 贵南县| 沙田区| 共和县| 凉山| 永胜县| 探索| 鸡泽县| 库伦旗| 赤城县| 尖扎县| 色达县| 中山市| 双峰县| 福建省| 景宁| 定兴县| 阳春市| 同心县| 荃湾区| 宾阳县| 中方县| 开平市|