FREEBSD系統啟動腳本

FreeBSD 核心探測過系統硬體之後,就啟動進程0和進程1。

開始啟動過程,/etc/rc啟動腳本,不同OS比較,

開始啟動過程

進程0:用於清除記憶體,將所有的記憶體單元置零
進程1:為 init進程,將負責啟動系統和各種守護進程。init將系統帶入多用戶狀態,並按照/etc/rc啟動腳本啟動服務程式。

/etc/rc啟動腳本

/etc/rc啟動腳本將完成很多非常重要的工作,包括設定磁碟交換、檢查磁碟錯誤、設定網路界面,啟動網路服務程式等非常重要的工作。
/etc/rc檔案將也將執行另外的 rc 檔案,如執行 rc.conf 用於大部分系統參數的設定,rc.network 用於網路設定,rc.firewall 用於設定防火牆,以及 rc.local ,用於管理員對本機特定的啟動設定等。其中 rc.conf 檔案中包含了用戶能夠更改的很多設定參數,這些設定參數在其他 rc 檔案中使用,用於配置系統的參數,因此對系統管理來講最為重要。
由於大部分伺服器程式都是網路程式,因此如果系統的網路設定不正確,這些服務程式將不能正常執行。而且有些程式的逾時設定的很長,因此出現錯誤時會出現系統停留在某個程式上不再繼續執行。一般可以不必理會,等待程式逾時退出即可,或者可以嘗試使用 Ctrl-C 中斷該程式。
如果啟動腳本真的出現無法繼續執行的錯誤,如 果能夠通過網路登錄,可以先登錄進系統再更改啟動腳本,而大部分正在執行啟動腳本的情況下,網路服務並沒有啟動,那么就必須重新啟動系統進入單用戶狀態,再修改啟動腳本來糾正錯誤。
#! /bin/sh
swapfile="NO" # Set to name of swapfile if aux swapfile desired.
apm_enable="NO" # Set to YES if you want APMenabled.
pccard_enable="NO" # Set to YES if you want to configure PCCARD devices.
pccard_mem="DEFAULT"# If pccard_enable=YES, this is card memory address.
pccard_ifconfig="NO" # Specialized pccard ethernet configuration (or NO).
local_startup="/usr/local/etc/rc.d /usr/X11R6/etc/rc.d" # startup script dirs.
上面是 /etc/rc.conf 的部分內容,可以看出參數的設定形式,相應的設定值都給出了提示,使得更改這些參數設定非常容易。rc.onf 中的大部分設定可以通過 /stand/sysinstall 系統安裝程式來進行設定 ,但也有部分參數不能通過 sysinstall 進行設定,必須通過手工修改這個檔案來完成。按照 FreeBSD 的習慣 ,這些rc檔案,rc.conf用於參數配置,可以由 sysinstall 安裝程式和管理員更改,rc.local 中定義這台計算機特定的啟動命令,可以由管理員重新設定,而其他rc檔案應該保留不變。這只是一種習慣做法,而非硬性規定,然而遵從習慣的好處是系統設定比較清晰,便於系統維護和管理,並且當管理員進入一個新系統中,能立即找到需要的配置檔案。
在版本3.1-release之前,/etc/rc.conf 中包括了所有參數設定,這樣在系統長期運行之後,就無法區分哪個參數為預設值,哪個參數為管理員更改過的值。在3.1-release中,rc.conf 劃分為兩個檔案,/etc/default/rc.conf和/etc/rc.conf,其中 /etc/default/rc. conf 是設定各個參數的系統預設值,而/etc/rc.conf僅僅設定本地系統在安裝和運行過程中更改的參數,例如 hostname 等,因此3.1-release之後的 /etc/rc.conf 檔案中的內容較少。事實上 /etc/default/rc.conf 中不但設定了讀取/etc/rc.conf檔案中的設定,還包括讀取 /etc/rc.conf.local 檔案的設定,以適應更複雜的計算機設定情況。對於一般的情況,用不到那么複雜的設定檔案,僅僅注意 /etc/rc.conf 中的設定就滿足設定要求了。

不同OS比較

BSD Unix 傳統上只使用 rc.local 來維護本機特定的啟動命令,這樣如果系統在啟動時需要配置的內容過多,這個檔案就會變得相當龐大,不利於系統維護。Unix System V 風格的系統使用啟動目錄而非檔案來維護啟動命令,每個啟動一個特定功能的設定被放入一個單獨腳本中,然後將所有的腳本都放入啟動目錄中,系統啟動時逐項檢 查這個目錄中的執行腳本,自動執行這些命令。
System V 和 BSD 的啟動管理有很大不同,System V 引入了啟動級別的概念,可以有6種不同的啟動級別,而 BSD 只簡單的分為多用戶狀態、單用戶狀態和停機狀態3種。在啟動的管理方面,System V 比 BSD 更友好一些。
因此 FreeBSD 吸取 System V 中的啟動目錄的思想,在 rc.conf 中定義了本計算機的系統啟動檔案存放的目錄 local_startup 參數,預設使用 /usr/local/etc/rc.d 目錄存放伺服器程式的啟動腳本,使用 /usr/X11R6/etc/rc.d 目錄存放本地 X Window 相關的程式啟動腳本。這些目錄中的以 sh 結尾並具備執行屬性的 shell 腳本程式將在啟動時被自動執行。這兩個目錄中的腳本程式也是由系統管理員設定和修改的,必須以“.sh” 結尾,其他後綴的檔案將被忽略。習慣上這兩個目錄里的腳本程式負責啟動伺服器程式,而 rc.local 主要用於調整系統的一些非標準參數設定(rc.conf中沒有涉及的設定)。

相關詞條

熱門詞條

聯絡我們