FreeBSD系統啟動指令碼(轉)

gugu99發表於2007-08-11
FreeBSD系統啟動指令碼(轉)[@more@]

  核心探測過系統硬體之後,就啟動程式0和程式1,程式0用於清除記憶體,將所有的記憶體單元置零,程式1為init 程式,將負責啟動系統和各種守護程式。init將系統帶入多使用者狀態,並按照/etc/rc啟動指令碼啟動服務程式。

  /etc/rc啟動指令碼將完成很多非常重要的工作,包括設定磁碟交換、檢查磁碟錯誤、設定網路介面,啟動網路服務程式等非常重要的工作。/etc/rc檔案將也將執行另外的rc檔案,如執行rc.conf用於大部分系統引數的設定,rc.network用於網路設定,rc.firewall用於設定防火牆,以及rc.local,用於管理員對本機特定的啟動設定等。其中rc.conf檔案中包含了使用者能夠更改的很多設定引數,這些設定引數在其他rc檔案中使用,用於配置系統的引數,因此對系統管理來講最為重要。

  由於大部分伺服器程式都是網路程式,因此如果系統的網路設定不正確,這些服務程式將不能正常執行(例如 sendmail)。而且有些程式的超時設定的很長,因此出現錯誤時會出現系統停留在某個程式上不再繼續執行。一般可以不必理會,等待程式超時退出即可,或者可以嘗試使用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中的設定就滿足設定要求了。

  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中沒有涉及的設定)。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-944780/,如需轉載,請註明出處,否則將追究法律責任。

相關文章