clfs-embedded
的啟動指令碼包括以下檔案
/etc/inittab
/etc/rc.d/shutdown
/etc/rc.d/startup
/etc/rc.d/init.d/functions
/etc/rc.d/init.d/network
/etc/rc.d/init.d/sshd
/etc/rc.d/init.d/syslog
linux
核心初始化完成後,執行
init
作為系統的第乙個程序
,init
讀取inittab,
並按照inittab
的指示呼叫初始化程式
. # inittab ::sysinit:/etc/rc.d/startup #
這一行指出
init
將呼叫startup
指令碼做系統初始化
init
呼叫startup,
開始初始化系統
,startup
初始化步驟
: 1.
掛載虛擬檔案系統
/proc,/sysfs;/proc
是乙個只存在於記憶體中的檔案系統
,其作用是為使用者層程式提供乙個介面訪問核心資料,從
/proc
可以獲得系統執行狀態
;/sysfs
也是一種存在於記憶體中的虛擬檔案系統
,sysfs
為每個核心物件建立對應的目錄和檔案
,可以通過
/sys
檢視核心物件
,如系統匯流排裝置等
.接下來將臨時檔案系統掛載到
/dev,
下面的mdev
將在/dev
建立裝置節點,由於
mdev
是每次啟動以後建立裝置節點
,所以不能直接建立在硬碟上
,而是掛載臨時檔案系統供建立節點
,當系統重啟後
,這個臨時檔案系統將不復存在
. 2.
建立裝置節點
,現代的
linux
使用動態建立的方式建立裝置節點
,在普通的
linux
發行版中使用
udev
建立裝置節點
,clfs-embedded
中將使用
busybox
提供的mdev
代替udev
建立裝置節點
. 3.
同步時鐘
,將系統時間與
bios
時間同步
. 4.
磁碟檢測
,這一步檢測根檔案系統
. 5.
將根檔案系統重新掛為可讀寫
,核心初始化時
,已經掛載了根檔案系統
,但那時是以唯讀的方式掛的
,現在將根檔案系統以可讀寫的方式重新掛
. 6.
檢測檔案系統
,不僅僅是根檔案系統
,這裡檢測除了網路檔案系統之後的所有檔案系統
. 7.
設定交換分割槽
(swap),
記憶體總是不夠
,有了交換分割槽之後
,就可以把不常用的資料交換到硬碟上來
. 8.
清除臨時檔案,刪除
/tmp/*
臨時檔案
,建立日誌系統所需要的檔案
. 9.
配置本地網路
(lo),
有些軟體通過本地網路進行程序間通訊
,即使沒有網絡卡也應該配置本地網路
. 10.
執行/etc/rc.d/init.d/start/
下的指令碼
,這裡的指令碼是可能的
,通常在這裡啟動系統服務
,如網路服務
(與外部連線的網路服務,與
lo不同
),系統日誌服務
.
init
呼叫startup
初始化系統之後
,將建立六個虛擬終端供使用者登陸
# inittab
tty1:respawn:/sbin/getty 38400 tty1 #
建立乙個
tty,tty
提供給使用者登陸
.一般共建立6個
tty2:respawn:/sbin/getty 38400 tty2 #respawn
的意思是
init
監視getty
程序的執行
, tty3:respawn:/sbin/getty 38400 tty3 #
如果getty
程序退出了
,將會再次執行
getty
tty4:respawn:/sbin/getty 38400 tty4
tty5:respawn:/sbin/getty 38400 tty5
tty6:respawn:/sbin/getty 38400 tty6
執行到這裡時
,顯示器上將顯示
login:
提示符,
輸入使用者
,tty
將輸入的使用者名稱傳遞給
login
登陸程式
,如果使用者名稱存在
,login
會提示輸入密碼
,login
根據shadow
檔案判斷你輸入的密碼是否正確
,如果正確會開啟乙個
shell,
通常是bash,
在belp
中是ash,
有了shell,
就可以在
shell
中輸入命令
,對系統進行操作啦
.
Oracle 啟動指令碼
大家都注意到用oracle自帶的dbstart指令碼無法在系統啟動時自動啟動oracle資料庫,下面介紹oracle啟動指令碼的編寫和設定!最簡單的指令碼示例 bin sh sqlplus as sysdba oracle instance started.total system global a...
bash啟動指令碼
啟動指令碼是bash啟動時自動執行的指令碼。使用者可以把一些環境變數的設定和alias umask設定放在啟動指令碼中,這樣每次啟動shell時這些設定都自動生效。思考一下,bash在執行啟動指令碼時是以fork子shell方式執行的還是以source方式執行的?啟動bash的方法不同,執行啟動指令...
bash啟動指令碼
啟動指令碼是bash啟動時自動執行的指令碼。使用者可以把一些環境變數的設定和alias umask設定放在啟動指令碼中,這樣每次啟動shell時這些設定都自動生效。思考一下,bash在執行啟動指令碼時是以fork子shell方式執行的還是以source方式執行的?啟動bash的方法不同,執行啟動指令...