Linux操作系統(tǒng)開機自行啟動項目詳細解析_第1頁
Linux操作系統(tǒng)開機自行啟動項目詳細解析_第2頁
Linux操作系統(tǒng)開機自行啟動項目詳細解析_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

從Linux操作系統(tǒng)的引導加載程序(對個人電腦而言通常是LILO)開始,介紹Linux開機引導的步驟。由于操作系統(tǒng)正在變得越來越復雜,所以開機引導和關機下電的過程也越來越智能化。從簡單的DOS系統(tǒng)轉移到WindowsNT系統(tǒng),人們已經親身感受到了這些變化——這已不僅僅是核心操作系統(tǒng)的啟動引導和關閉了,還包括必須要同時啟動或者關閉相當數(shù)量的服務項目。類似于WindowsNT,Linux系統(tǒng)啟動過程需要打開的服務項目也是數(shù)量極大的。這里,我們假設大家已經熟悉其它操作系統(tǒng)的引導過程,了解硬件的自檢引導步驟,就只從Linux操作系統(tǒng)的引導加載程序(對個人電腦而言通常是LILO)開始,介紹Linux開機引導的步驟。加載內核LILO啟動之后,如果你選擇了Linux作為準備引導的操作系統(tǒng),第一個被加載的東西就是內核。請記住此時的計算機內存中還不存在任何操作系統(tǒng),PC(因為它們天然的設計缺陷)也還沒有辦法存取機器上全部的內存。因此,內核就必須完整地加載到可用RAM的第一個兆字節(jié)之內。為了實現(xiàn)這個目的,內核是被壓縮了的。這個文件的頭部包含著必要的代碼,先設置CPU進入安全模式(以此解除內存限制),再對內核的剩余部分進行解壓縮。執(zhí)行內核內核在內存中解壓縮之后,就可以開始運行了。此時的內核只知道它本身內建的各種功能,也就是說被編譯為模塊的內核部分還不能使用。最基本的是,內核必須有足夠的代碼設置自己的虛擬內存子系統(tǒng)和根文件系統(tǒng)(通常就是ext2文件系統(tǒng))。一旦內核啟動運行,對硬件的檢測就會決定需要對哪些設備驅動程序進行初始化。從這里開始,內核就能夠掛裝根文件系統(tǒng)(這個過程類似于Windows識別并存取C盤的過程)。內核掛裝了根文件系統(tǒng)之后,將啟動并運行一個叫做init的程序。注意:在這里我們故意略去了Linux內核啟動的許多細節(jié),這些細節(jié)只有內核開發(fā)人員才感興趣。如果你好奇的話,可以訪問http://:8080地址處的“KernelHackersGuide”。init進程init進程是非內核進程中第一個被啟動運行的,因此它的進程編號PID的值總是1。init讀它的配置文件/etc/inittab,決定需要啟動的運行級別(Runlevel)。從根本上說,運行級別規(guī)定了整個系統(tǒng)的行為,每個級別(分別由0到6的整數(shù)表示)滿足特定的目的。如果定義了initdefault級別,這個值就直接被選中,否則需要由用戶輸入一個代表運行級別的數(shù)值。輸入代表運行級別的數(shù)字之后,init根據(jù)/etc/inittab文件中的定義執(zhí)行一個命令腳本程序。缺省的運行級別取決于安裝階段對登錄程序的選擇:是使用基于文本的,還是使用基于X-Window的登錄程序。rc命令腳本程序我們已經知道,當運行級別發(fā)生改變時,將由/etc/inittab文件定義需要運行哪一個命令腳本程序。這些命令腳本程序負責啟動或者停止該運行級別特定的各種服務。由于需要管理的服務數(shù)量很多,因此需要使用rc命令腳本程序。其中,最主要的一個是/etc/rc.d/rc,它負責為每一個運行級別按照正確的順序調用相應的命令腳本程序。我們可以想象,這樣一個命令腳本程序很容易變得難以控制!為了防止這類事件的發(fā)生,需要使用精心設計的方案。對每一個運行級別來說,在/etc/rc.d子目錄中都有一個對應的下級目錄。這些運行級別的下級子目錄的命名方法是rcX.d,其中的X就是代表運行級別的數(shù)字。比如說,運行級別3的全部命令腳本程序都保存在/etc/rc.d/rc3.d子目錄中。在各個運行級別的子目錄中,都建立有至到/etc/rc.d/init.d子目錄中命令腳本程序的符號鏈接,但是,這些符號鏈接并不使用命令腳本程序在/etc/rc.d/init.d子目錄中原來的名字。如果命令腳本程序是用來啟動一個服務的,其符號鏈接的名字就以字母S打頭;如果命令腳本程序是用來關閉一個服務的,其符號鏈接的名字就以字母K打頭。許多情況下,這些命令腳本程序的執(zhí)行順序都很重要。如果沒有先配置網(wǎng)絡接口,就沒有辦法使用DNS服務解析主機名!為了安排它們的執(zhí)行順序,在字母S或者K的后面緊跟著一個兩位數(shù)字,數(shù)值小的在數(shù)值大的前面執(zhí)行。比如:/etc/rc.d/rc3.d/S50inet就會在/etc/rc.d/rc3.d/S55named之前執(zhí)行(S50inet配置網(wǎng)絡設置,S55named啟動DNS服務器)。存放在/etc/rc.d/init.d子目錄中的、被符號鏈接上的命令腳本程序是真正的實干家,是它們完成了啟動或者停止各種服務的操作過程。當/etc/rc.d/rc運行通過每個特定的運行級別子目錄的時候,它會根據(jù)數(shù)字的順序依次調用各個命令腳本程序執(zhí)行。它先運行以字母K打頭的命令腳本程序,然后再運行以字母S打頭的命令腳本程序。對以字母K打頭的命令腳本程序來說,會傳遞Stop參數(shù);類似地對以字母S打頭的命令腳本程序來說,會傳遞Start參數(shù)。編寫自己的rc命令腳本在維護Linux系統(tǒng)運轉的日子里,肯定會遇到需要系統(tǒng)管理員對開機或者關機命令腳本進行修改的情況。有兩種方法可以用來實現(xiàn)修改的目的:?如果所做的修改只在引導開機的時候起作用,并且改動不大的話,可以考慮簡單地編輯一下/etc/rc.d/rc.local腳本。這個命令腳本程序是在引導過程的最后一步被執(zhí)行的。?如果所做的修改比較細致,或者還要求關閉進程使之明確地停止運行,則需要在/etc/rc.d/init.d子目錄中添加一個命令腳本程序。這個命令腳本程序必須可以接受Start和Stop參數(shù)并完成相應的操作。第一種方法,編輯/etc/rc.d/rc.local腳本,當然是兩種方法中比較簡單的。如果想在這個命令腳本程序中添加內容,只需要使用喜歡的編輯器程序打開它,再把打算執(zhí)行的命令附加到文件的末尾就可以了。這對一兩行的修改來說的確很便利。如果確實需要使用一個命令腳本程序,這時必須選擇第二個方法。編寫一個rc命令腳本程序的過程并不像想象中那么困難。我們下面就給出一個例子,看看它是怎樣實現(xiàn)的(順便說一句,你可以把我們的例子當作范本,按照自己的需要進行修改和添加)。假設你打算每隔60分鐘調用一個特殊的程序來彈出一條消息,提醒自己需要從鍵盤前面離開休息一會兒,命令腳本程序將包括下面幾個部分:?關于這個命令腳本程序功能的說明(這樣就不會在一年之后忘記它);?在試圖運行它之前驗證這個命令腳本程序確實存在;?接受start和stop參數(shù)并執(zhí)行要求的動作。參數(shù)給定后,我們就可以編寫命令的腳本程序。這個程序很簡單,大家可以自己編寫一下,我在這里就不給出了。編寫好新的命令腳本程序之后,再從相關的運行級別子目錄中加上必要的符號鏈接,來控制這個命令腳本程序的啟動或者停止。在我的印象中,只想讓它在運行級別3或者運行級別5中啟動,原因是我認為只有這兩個運行級別才是日常工作的地方。最后,希望這個命令腳本程序在進入運行級別6(重啟動)的時候被關閉。激活或者禁止服務項目有的時候會發(fā)現(xiàn),在引導的時候并不需要某個特定的服務被啟動。如果你正在考慮使用Linux替換WindowsNT的文件和打印服務器,就更是如此。我們已經知道,在特定的運行級別子目錄中給符號鏈接改個名稱,就可以讓該服務不被啟動,如把其名稱的第一個字母由S改為K。一旦熟練掌握了命令行和符號鏈接,就會發(fā)現(xiàn)這是激活或者禁止服務的最快辦法。在學習這個改名方法的時候,可能會覺得圖形化的操作界面ksysv比較容易掌握。雖然它原來是設計使用在KDE環(huán)境里的,但在RedHatLinux7.2下缺省安裝的GNOME環(huán)境里也運行得很好。如果想啟動它,只需簡單地打開一個xterm窗口,并輸入ksysv命令就可以了。屏幕上會出現(xiàn)一個窗口,其中列出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論