Linux啟動過程簡介
許多人對Linux的啟動過程感到很神秘,因為所有的啟動資訊都在螢幕上一閃而過。其實,
Linux的啟動過程並不象啟動資訊所顯示的那樣複雜,它主要分成兩個階段:
1.啟動核心。在這個階段,核心裝入記憶體並在初始化每個裝置驅動器時列印資訊。
2.執行程式init。裝入核心並初始化裝置後,執行init程式。init程式處理所有程式的啟動,
包括重要系統精靈程式和其它指定在啟動時裝入的軟體。
下面以Red Hat為例簡單介紹一下Linux的啟動過程。
一、啟動核心
首先介紹啟動核心部分。電腦啟動時,BIOS裝載MBR,然後從當前活動分割槽啟動,LILO獲得引
導過程的控制權後,會顯示LILO提示符。此時如果使用者不進行任何操作,LILO將在等待制定
時間後自動引導預設的作業系統,而如果在此期間按下TAB鍵,則可以看到一個可引導的操作
系統列表,選擇相應的作業系統名稱就能進入相應的作業系統。
當使用者選擇啟動LINUX作業系統時,LILO就會根據事先設定好的資訊從ROOT檔案系統所在的分
區讀取LINUX映象,然後裝入核心映象並將控制權交給LINUX核心。LINUX核心獲得控制權後,
以如下步驟繼續引導系統:
1. LINUX核心一般是壓縮儲存的,因此,它首先要進行自身的解壓縮。核心映象前面的一些
程式碼完成解壓縮。
2. 如果系統中安裝有可支援特殊文字模式的、且LINUX可識別的SVGA卡,LINUX會提示使用者
選擇適當的文字顯示模式。但如果在核心的編譯過程中預先設定了文字模式,則不會提示選
擇顯示模式。該顯示模式可透過LILO或RDEV工具程式設定。
3. 核心接下來檢測其他的硬體裝置,例如硬碟、軟盤和網路卡等,並對相應的裝置驅動程式
進行配置。這時,顯示器上出現核心執行輸出的一些硬體資訊。
4. 接下來,核心裝載ROOT檔案系統。ROOT檔案系統的位置可在編譯核心時指定,也可透過
LILO或RDEV指定。檔案系統的型別可自動檢測。如果由於某些原因裝載失敗,則核心啟動
失敗,最終會終止系統。
二、執行init程式
其次介紹init程式,利用init程式可以方便地定製啟動其間裝入哪些程式。init的任務是
啟動新程式和退出時重新啟動其它程式。例如,在大多數Linux系統中,啟動時最初裝入
六個虛擬的控制檯程式,退出控制檯視窗時,程式死亡,然後init啟動新的虛擬登入控制檯,
因而總是提供六個虛擬登陸控控制檯程式。
控制init程式操作的規則存放在檔案/etc/inittab中。Red Hat Linux預設的inittab文
件如下:
#
#inittab This file describes how the INIT process should set up the system in a certain
#run-level.
#
#
#Default runlevel.The runlevels used by RHS are:
#0-halt(Do NOT set initdefault to tis)
#1-Single user mode
#2-Multiuser,without NFS(the same as 3,if you do not have networking)
#3-Full multiuser mode
#4-unused
#5-X11
#6-reboot(Do NOT set initdefault to tis)
#
id:3:initdefault:
#system initialization
si::sysinit:/etc/rc.d/rc.sysinit
10:0:wait:/etc/rc.d/rc 0
11:1:wait:/etc/rc.d/rc 1
12:2:wait:/etc/rc.d/rc 2
13:3:wait:/etc/rc.d/rc 3
14:4:wait:/etc/rc.d/rc 4
15:5:wait:/etc/rc.d/rc 5
16:6:wait:/etc/rc.d/rc 6
#Things to run in every runlevel
ud:once:/sbin/update
#Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
#When our UPS tells us power has failed,assume we have a few minutes o
power left.Schedule a
#shutdown for 2 minutes from now.
#This does,of course,assume you have powered installed and your UPS
connected and working
#correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Restored;Shutdown Cancelled"
#Run gettys in standard runlevels
1:12345:respawn:/sbin/minggetty tty1
2:2345:respawn:/sbin/minggetty tty2
3:2345:respawn:/sbin/minggetty tty3
4:2345:respawn:/sbin/minggetty tty4
5:2345:respawn:/sbin/minggetty tty5
6:2345:respawn:/sbin/minggetty tty6
#Run xdm in runlevel 5
x:5:respawn:/usr/bin/X11/xdm -nodaemon
Linux有個執行級系統,執行級是表示系統當前狀態和init應執行哪個程式並保持在這種
系統狀態中執行的數字。在inittab檔案中,第一個專案指定啟動時裝入的預設執行級。
上例中是個多使用者控制檯方式,執行級為3。然後,inittab檔案中每個專案指定第二個
欄位的專案用哪種執行級(每個欄位用冒號分開)。因此,對執行級3,下列行是相關的:
13:3:wait:/etc/rc.d/rc 3
1:12345:respawn:/sbin/minggetty tty1
2:2345:respawn:/sbin/minggetty tty2
3:2345:respawn:/sbin/minggetty tty3
4:2345:respawn:/sbin/minggetty tty4
5:2345:respawn:/sbin/minggetty tty5
6:2345:respawn:/sbin/minggetty tty6
最後六行建立Linux提供的六個虛擬控制檯。第一行執行啟動指令碼/etc/rc.d/ rc 3;
這將執行目錄/etc/
rc.d/rc3.d中包含的所有指令碼,這些指令碼表示系統初始化時要啟動的程式。一般來說,
這些指令碼不需要編輯或改變,是系統預設的。[@more@]
Linux的啟動過程並不象啟動資訊所顯示的那樣複雜,它主要分成兩個階段:
1.啟動核心。在這個階段,核心裝入記憶體並在初始化每個裝置驅動器時列印資訊。
2.執行程式init。裝入核心並初始化裝置後,執行init程式。init程式處理所有程式的啟動,
包括重要系統精靈程式和其它指定在啟動時裝入的軟體。
下面以Red Hat為例簡單介紹一下Linux的啟動過程。
一、啟動核心
首先介紹啟動核心部分。電腦啟動時,BIOS裝載MBR,然後從當前活動分割槽啟動,LILO獲得引
導過程的控制權後,會顯示LILO提示符。此時如果使用者不進行任何操作,LILO將在等待制定
時間後自動引導預設的作業系統,而如果在此期間按下TAB鍵,則可以看到一個可引導的操作
系統列表,選擇相應的作業系統名稱就能進入相應的作業系統。
當使用者選擇啟動LINUX作業系統時,LILO就會根據事先設定好的資訊從ROOT檔案系統所在的分
區讀取LINUX映象,然後裝入核心映象並將控制權交給LINUX核心。LINUX核心獲得控制權後,
以如下步驟繼續引導系統:
1. LINUX核心一般是壓縮儲存的,因此,它首先要進行自身的解壓縮。核心映象前面的一些
程式碼完成解壓縮。
2. 如果系統中安裝有可支援特殊文字模式的、且LINUX可識別的SVGA卡,LINUX會提示使用者
選擇適當的文字顯示模式。但如果在核心的編譯過程中預先設定了文字模式,則不會提示選
擇顯示模式。該顯示模式可透過LILO或RDEV工具程式設定。
3. 核心接下來檢測其他的硬體裝置,例如硬碟、軟盤和網路卡等,並對相應的裝置驅動程式
進行配置。這時,顯示器上出現核心執行輸出的一些硬體資訊。
4. 接下來,核心裝載ROOT檔案系統。ROOT檔案系統的位置可在編譯核心時指定,也可透過
LILO或RDEV指定。檔案系統的型別可自動檢測。如果由於某些原因裝載失敗,則核心啟動
失敗,最終會終止系統。
二、執行init程式
其次介紹init程式,利用init程式可以方便地定製啟動其間裝入哪些程式。init的任務是
啟動新程式和退出時重新啟動其它程式。例如,在大多數Linux系統中,啟動時最初裝入
六個虛擬的控制檯程式,退出控制檯視窗時,程式死亡,然後init啟動新的虛擬登入控制檯,
因而總是提供六個虛擬登陸控控制檯程式。
控制init程式操作的規則存放在檔案/etc/inittab中。Red Hat Linux預設的inittab文
件如下:
#
#inittab This file describes how the INIT process should set up the system in a certain
#run-level.
#
#
#Default runlevel.The runlevels used by RHS are:
#0-halt(Do NOT set initdefault to tis)
#1-Single user mode
#2-Multiuser,without NFS(the same as 3,if you do not have networking)
#3-Full multiuser mode
#4-unused
#5-X11
#6-reboot(Do NOT set initdefault to tis)
#
id:3:initdefault:
#system initialization
si::sysinit:/etc/rc.d/rc.sysinit
10:0:wait:/etc/rc.d/rc 0
11:1:wait:/etc/rc.d/rc 1
12:2:wait:/etc/rc.d/rc 2
13:3:wait:/etc/rc.d/rc 3
14:4:wait:/etc/rc.d/rc 4
15:5:wait:/etc/rc.d/rc 5
16:6:wait:/etc/rc.d/rc 6
#Things to run in every runlevel
ud:once:/sbin/update
#Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
#When our UPS tells us power has failed,assume we have a few minutes o
power left.Schedule a
#shutdown for 2 minutes from now.
#This does,of course,assume you have powered installed and your UPS
connected and working
#correctly.
pf::powerfail:/sbin/shutdown -f -h +2 "Power Restored;Shutdown Cancelled"
#Run gettys in standard runlevels
1:12345:respawn:/sbin/minggetty tty1
2:2345:respawn:/sbin/minggetty tty2
3:2345:respawn:/sbin/minggetty tty3
4:2345:respawn:/sbin/minggetty tty4
5:2345:respawn:/sbin/minggetty tty5
6:2345:respawn:/sbin/minggetty tty6
#Run xdm in runlevel 5
x:5:respawn:/usr/bin/X11/xdm -nodaemon
Linux有個執行級系統,執行級是表示系統當前狀態和init應執行哪個程式並保持在這種
系統狀態中執行的數字。在inittab檔案中,第一個專案指定啟動時裝入的預設執行級。
上例中是個多使用者控制檯方式,執行級為3。然後,inittab檔案中每個專案指定第二個
欄位的專案用哪種執行級(每個欄位用冒號分開)。因此,對執行級3,下列行是相關的:
13:3:wait:/etc/rc.d/rc 3
1:12345:respawn:/sbin/minggetty tty1
2:2345:respawn:/sbin/minggetty tty2
3:2345:respawn:/sbin/minggetty tty3
4:2345:respawn:/sbin/minggetty tty4
5:2345:respawn:/sbin/minggetty tty5
6:2345:respawn:/sbin/minggetty tty6
最後六行建立Linux提供的六個虛擬控制檯。第一行執行啟動指令碼/etc/rc.d/ rc 3;
這將執行目錄/etc/
rc.d/rc3.d中包含的所有指令碼,這些指令碼表示系統初始化時要啟動的程式。一般來說,
這些指令碼不需要編輯或改變,是系統預設的。[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22001907/viewspace-1023619/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux的啟動過程介紹Linux
- linux啟動過程Linux
- 【LINUX】啟動過程Linux
- ORACLE啟動過程簡析Oracle
- Linux 啟動過程分析Linux
- Linux啟動過程分析Linux
- Linux的啟動過程(轉)Linux
- Linux啟動過程詳解Linux
- Linux系統啟動過程Linux
- Linux核心Kernel啟動過程Linux
- Linux核心啟動流程(簡介)Linux
- 深入理解linux啟動過程Linux
- Linux啟動過程綜述(轉)Linux
- MacPorts打包過程簡介Mac
- 編譯過程簡介編譯
- Linux的啟動過程及init程式Linux
- 走進Linux之systemd啟動過程Linux
- 深入理解Linux啟動過程薦Linux
- MySQL資料庫啟動過程的簡述MySql資料庫
- Windows 啟動過程Windows
- UDEV簡介及配置過程dev
- App 啟動過程(含 Activity 啟動過程) | 安卓 offer 收割基APP安卓
- Linux核心初始化過程簡要介紹(轉)Linux
- Linux 中的靜態庫和動態庫簡介及生成過程示例Linux
- Android 啟動過程簡析(一)之 init 程式Android
- Angular的啟動過程Angular
- main的啟動過程AI
- Nginx的啟動過程Nginx
- Service啟動過程分析
- Activity啟動過程分析
- Oracle的啟動過程Oracle
- iOS App啟動過程iOSAPP
- nbu新增media server過程簡介Server
- Windows啟動過程(MBR引導過程分析)Windows
- Linux 開機引導和啟動過程詳解Linux
- Linux 啟動過程, 初始化和關閉(轉)Linux
- Linux啟動過程以及7種執行級別Linux
- 在Linux中,開機啟動過程是什麼?Linux