新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > init 進程和inittab 引導指令

        init 進程和inittab 引導指令

        作者: 時間:2016-11-22 來源:網絡 收藏
        init 進程是系統所有進程的起點,內核在完成內核引導以后,即在本線程(進程)空間內加載init 程序,它的進程號是1。init 程序讀取/etc/inittab 文件作為其行為指針,根據initab 描述文件的內容建立相應的進程。initab 文件中描述了系統默認的運行級別,運行rc 啟動腳本,進行用戶的登錄,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

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

        其中:

        本文引用地址:http://www.104case.com/article/201611/319978.htm

        • id 為入口標識符,
        • runlevel 為運行級別,
        • action 為動作代號,
        • process 為具體的執行程序。
        id 一般要求4 個字符以內,對于getty 或其他login 程序項,要求id 與tty 的編號相同,否則getty 程序將不能正常工作。runlevel 是init 所處于的運行級別的標識,一般使用0-6 以及S 或s。0、1、6 運行級別被系統保留,0 作為shutdown 動作,1 作為重

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

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

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


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 伊金霍洛旗| 云和县| 进贤县| 永寿县| 聊城市| 襄垣县| 石城县| 大新县| 桦甸市| 无为县| 盐源县| 西贡区| 永年县| 垦利县| 大足县| 清新县| 威远县| 贵州省| 淅川县| 云和县| 土默特右旗| 赤壁市| 嵊州市| 河北区| 个旧市| 潍坊市| 夏河县| 湘乡市| 安新县| 娄底市| 乌鲁木齐市| 凤凰县| 鸡东县| 凤山县| 宣武区| 交城县| 景德镇市| 化州市| 普定县| 泾川县| 城市|