rc.d的内容如下:
init.d/ :各種伺服器和程式的二進制檔案存放目錄。
rcx.d/: 各個啟動級别的執行程式連接配接目錄。裡頭的東西都是指向init.d/的一些軟連接配接。具體的後邊叙述。
還有三個腳本:rc.sysinit, rc, rc.local
redhat的啟動方式和執行次序是:
加載核心
執行init程式
/etc/rc.d/rc.sysinit # 由init執行的第一個腳本
/etc/rc.d/rc $RUNLEVEL # $RUNLEVEL為預設的運作模式
/etc/rc.d/rc.local
/sbin/mingetty # 等待使用者登入
在Redhat中,/etc/rc.d/rc.sysinit主要做在各個運作模式中相同的初始化工作,包括:
調入keymap以及系統字型
啟動swapping
設定主機名
設定NIS域名
檢查(fsck)并mount檔案系統
打開quota
裝載聲霸卡子產品
設定系統時鐘
等等。
/etc/rc.d/rc則根據其參數指定的運作模式(運作級别,你在inittab檔案中可以設定)來執行相應目錄下的腳本。凡是以Kxx開頭的
,都以stop為參數來調用;凡是以Sxx開頭的,都以start為參數來調用。調用的順序按xx
從小到大來執行。例如,假設預設的運作模式是3,/etc/rc.d/rc就會按上述方式調用
/etc/rc.d/rc3.d/下的腳本。
值得一提的是,Redhat中的運作模式2、3、5都把/etc/rc.d/rc.local做為初始化腳本中
的最後一個,是以使用者可以自己在這個檔案中添加一些需要在其他初始化工作之後,登入之前執行的指令。
init在等待/etc/rc.d/rc執行完畢之後(因為在/etc/inittab中/etc/rc.d/rc的
action是wait),将在指定的各個虛拟終端上運作/sbin/mingetty,等待使用者的登入。
至此,LINUX的啟動結束。
Linux 啟動順序:
1、 BIOS自檢
2、 運作系統核心并檢測硬體
3、 運作系統的第一個程序init
4、 init讀取系統引導配置檔案/etc/inittab中的資訊進行初始化
/etc/rc.d/rc.sysinit------系統初始化腳本
/etc/rc.d/rcX.d/[KS]*------根據運作級别配置服務
/etc/rc.d/rc.local---------執行本地特殊配置
其它---------不同運作級别的特殊服務
Linux啟動運作init程式來啟動相關程式初始化,與啟動相關的一個概念是運作級,運作級是作業系統目前運作的級别,在不同運作級别上可以定義
屬于該運作級的啟動程式,系統的運作級别可以在/etc/inittab檔案指定,與運作級相關運作程式通過從源/etc/rc.d/init.d下連結
到目的/etc/rcX.d,這裡X為系統的預設運作級别,是以,預設的啟動腳本放在/etc/rc.d/init.d下。
# 預設的運作級,Linux用到的級别如下:
# 0 - 停機(千萬不要把initdefault 設定為0 )
# 1 - 單使用者模式
# 2 - 多使用者,但是沒有 NFS
# 3 - 完全多使用者模式
# 4 - 沒有用到
# 5 - X11
# 6 - 重新啟動 (千萬不要把initdefault 設定為6 )
#
對各個運作級的詳細解釋:
0 為停機,機器關閉。
1 為單使用者模式,就像Win9x 下的安全模式類似。
2 為多使用者模式,但是沒有NFS 支援。
3 為完整的多使用者模式,是标準的運作級。
4 一般不用,在一些特殊情況下可以用它來做一些事情。
例如在筆記本電腦的電池用盡時,可以切換到這個模式來做一些設定。
5 就是 X11 ,進到 X Window 系統了。
6 為重新開機,運作 init 6 機器就會重新開機。
如何讓系統在啟動是運作指定程式,根據啟動順序中的第四步,有兩種方式。
一種方式是根據運作級别配置服務。
一種方式是執行本地特殊配置。
舉例,任務在啟動是運作指令cvslockd:
方式一:
1. 建立自啟動腳本/etc/rc.d/init.d/cvslockd,内容為:
#!/bin/bash
/usr/local/bin/cvslockd
設定檔案的屬性為可執行:
#chmod +x /etc/rc.d/init.d/cvslockd
2. 檢視計算機運作級别,在檔案/etc/inittab裡看到id:5:initdefault:,則此系統運作級别為5。
3. 到/etc/rc5.d目錄下,把你要執行的可執行檔案做一個軟連接配接,而且在命名的時候要以大寫S字母開頭,S之後的數字大小代表執行順序的先後,數字越大越後執行。
#ln -s /etc/rc.d/init.d/cvslockd /etc/rc5.d/S100cvslockd
#ln -s /etc/rc.d/init.d/cvslockd /etc/rc0.d/K20cvslockd
方式二:
在/etc/rc.d/rc.local 添加 exec /usr/local/bin/cvslockd
該方式是在最後啟動cvslockd。