新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > init 進(jìn)程和inittab 引導(dǎo)指令

init 進(jìn)程和inittab 引導(dǎo)指令

作者: 時間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
init 進(jìn)程是系統(tǒng)所有進(jìn)程的起點(diǎn),內(nèi)核在完成內(nèi)核引導(dǎo)以后,即在本線程(進(jìn)程)空間內(nèi)加載init 程序,它的進(jìn)程號是1。init 程序讀取/etc/inittab 文件作為其行為指針,根據(jù)initab 描述文件的內(nèi)容建立相應(yīng)的進(jìn)程。initab 文件中描述了系統(tǒng)默認(rèn)的運(yùn)行級別,運(yùn)行rc 啟動腳本,進(jìn)行用戶的登錄,X Window 登錄等工作。Initab 文件的主體部分如下:
[plain]view plaincopy
print?
  1. #Defaultrunlevel.TherunlevelsusedbyRHSare:
  2. #0-halt(DoNOTsetinitdefaulttothis)
  3. #1-Singleusermode
  4. #2-Multiuser,withoutNFS(Thesameas3,ifyoudonothavenetworking)
  5. #3-Fullmultiusermode
  6. #4-unused
  7. #5-X11
  8. #6-reboot(DoNOTsetinitdefaulttothis)
  9. #
  10. id:5:initdefault:
  11. #Systeminitialization.
  12. si::sysinit:/etc/rc.d/rc.sysinit
  13. l0:0:wait:/etc/rc.d/rc0
  14. l1:1:wait:/etc/rc.d/rc1
  15. l2:2:wait:/etc/rc.d/rc2
  16. l3:3:wait:/etc/rc.d/rc3
  17. l4:4:wait:/etc/rc.d/rc4
  18. l5:5:wait:/etc/rc.d/rc5
  19. l6:6:wait:/etc/rc.d/rc6
  20. #TrapCTRL-ALT-DELETE
  21. ca::ctrlaltdel:/sbin/shutdown-t3-rnow
  22. #WhenourUPStellsuspowerhasfailed,assumewehaveafewminutes
  23. #ofpowerleft.Scheduleashutdownfor2minutesfromnow.
  24. #Thisdoes,ofcourse,assumeyouhavepowerdinstalledandyour
  25. #UPSconnectedandworkingcorrectly.
  26. pf::powerfail:/sbin/shutdown-f-h+2"PowerFailure;SystemShuttingDown"
  27. #Ifpowerwasrestoredbeforetheshutdownkickedin,cancelit.
  28. pr:12345:powerokwait:/sbin/shutdown-c"PowerRestored;ShutdownCancelled"
  29. #Rungettysinstandardrunlevels
  30. 1:2345:respawn:/sbin/mingettytty1
  31. 2:2345:respawn:/sbin/mingettytty2
  32. 3:2345:respawn:/sbin/mingettytty3
  33. 4:2345:respawn:/sbin/mingettytty4
  34. 5:2345:respawn:/sbin/mingettytty5
  35. 6:2345:respawn:/sbin/mingettytty6
  36. #Runxdminrunlevel5
  37. x:5:respawn:/etc/X11/prefdm–nodaemon

具體的內(nèi)容在大多數(shù)的Linux書籍中有詳細(xì)的介紹;開發(fā)人員也可以使用man initab命令查看在線幫助手冊,下面只作簡單介紹:
inittab是以行為單位的描述性(非執(zhí)行性)文本,每一個指令行都具有以下格式:
[cpp]view plaincopy
print?
  1. id:runlevel:action:process

其中:

本文引用地址:http://butianyuan.cn/article/201611/319978.htm

  • id 為入口標(biāo)識符,
  • runlevel 為運(yùn)行級別,
  • action 為動作代號,
  • process 為具體的執(zhí)行程序。
id 一般要求4 個字符以內(nèi),對于getty 或其他login 程序項,要求id 與tty 的編號相同,否則getty 程序?qū)⒉荒苷9ぷ?。runlevel 是init 所處于的運(yùn)行級別的標(biāo)識,一般使用0-6 以及S 或s。0、1、6 運(yùn)行級別被系統(tǒng)保留,0 作為shutdown 動作,1 作為重

啟至單用戶模式,6 為重啟;S 和s 意義相同,表示單用戶模式,且無需inittab 文件,因此也不在inittab 中出現(xiàn),實際上,進(jìn)入單用戶模式時,init 直接在控制臺(/dev/console)上運(yùn)行/sbin/sulogin。在一般的系統(tǒng)實現(xiàn)中,都使用了2、3、4、5 幾個級別,在Redhat系統(tǒng)中,2 表示無NFS 支持的多用戶模式,3 表示完全多用戶模式(也是最常用的級別),4保留給用戶自定義,5 表示XDM 圖形登錄方式。7-9 級別也是可以使用的,傳統(tǒng)的Unix 系統(tǒng)沒有定義這幾個級別。runlevel 可以是并列的多個值,以匹配多個運(yùn)行級別,對大多數(shù)action 來說,僅當(dāng)runlevel 與當(dāng)前運(yùn)行級別匹配成功才會執(zhí)行。initdefault 是一個特殊的action 值,用于標(biāo)識缺省的啟動級別;當(dāng)init 由核心激活以后,它將讀取inittab 中的initdefault 項,取得其中的runlevel,并作為當(dāng)前的運(yùn)行級別。如果沒有inittab 文件,或者其中沒有initdefault 項,init 將在控制臺上請求輸入 runlevel。

sysinit、boot、bootwait 等action 將在系統(tǒng)啟動時無條件運(yùn)行,而忽略其中的runlevel,其余的action(不含initdefault)都與某個runlevel 相關(guān)。各個action 的定義在inittab 的man 手冊中有詳細(xì)的描述。

下面是對一個initab 文件的簡單說明:
id:3:initdefault:
#表示當(dāng)前缺省運(yùn)行級別為3--完全多任務(wù)模式;
si::sysinit:/etc/rc.d/rc.sysinit
#啟動時自動執(zhí)行/etc/rc.d/rc.sysinit 腳本
l3:3:wait:/etc/rc.d/rc 3
#當(dāng)運(yùn)行級別為3 時,以3 為參數(shù)運(yùn)行/etc/rc.d/rc 腳本,init 將等待其返回
0:12345:respawn:/sbin/mingetty tty0
#在1-5 各個級別上以tty0 為參數(shù)執(zhí)行/sbin/mingetty 程序,打開tty0 終端用于
#用戶登錄,如果進(jìn)程退出則再次運(yùn)行mingetty 程序
x:5:respawn:/usr/bin/X11/xdm -nodaemon
#在5 級別上運(yùn)行xdm 程序,提供xdm 圖形方式登錄界面,并在退出時重新執(zhí)行。


評論


技術(shù)專區(qū)

關(guān)閉