init的進程號是1,從這一點就能看出,init進程是系統全部進程的起點,Linux在完成核內引導之後,就開始運行init程序,。init程序 須要讀取配置文件/etc/inittab。inittab是一個不可執行的文本文件,它有若干行指令所組成。在Redhat系統中,inittab的內容以下所示(以「###"開始的中註釋爲筆者增長的): # # inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author: Miquel van Smoorenburg, 〈[email]miquels@drinkel.nl.mugnet.org[/email]〉 # Modified for RHS Linux by Marc Ewing and Donnie Barnes # # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not havenetworking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # ###表示當前缺省運行級別爲5(initdefault); id:5:initdefault: ###啓動時自動執行/etc/rc.d/rc.sysinit腳本(sysinit) # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 ###當運行級別爲5時,以5爲參數運行/etc/rc.d/rc腳本,init將等待其返回(wait) l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 ###在啓動過程當中容許按CTRL-ALT-DELETE重啓系統 # Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now # When our UPS tells us power has failed, assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" ###在二、三、四、5級別上以ttyX爲參數執行/sbin/mingetty程序,打開ttyX終端用於用戶登陸, ###若是進程退出則再次運行mingetty程序(respawn) # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 ###在5級別上運行xdm程序,提供xdm圖形方式登陸界面,並在退出時從新執行(respawn) # Run xdm in runlevel 5 x:5:respawn:/etc/X11/prefdm -nodaemon 以上面的inittab文件爲例,來講明一下inittab的格式。其中以#開始的行是註釋行,除了註釋行以外,每一行都有如下格式: id:runlevel:action:process 對上面各項的詳細解釋以下: 1. id id是指入口標識符,它是一個字符串,對於getty或mingetty等其餘login程序項,要求id與tty的編號相同,不然getty程序將不能正常工做。 2. runlevel runlevel是init所處於的運行級別的標識,通常使用0-6以及S或s。0、一、6運行級別被系統保留:其中0做爲shutdown動做,1做爲重啓至單用戶模式,6爲重啓;S和s意義相同,表示單用戶模式,且無需inittab文件,所以也不在inittab中出現,實際上,進入單用戶模式時,init直接在控制檯(/dev/console)上運行/sbin/sulogin。在通常的系統實現中,都使用了二、三、四、5幾個級別,在Redhat系統中,2表示無NFS支持的多用戶模式,3表示徹底多用戶模式(也是最經常使用的級別),4保留給用戶自定義,5表示XDM圖形登陸方式。7-9級別也是可使用的,傳統的Unix系統沒有定義這幾個級別。runlevel能夠是並列的多個值,以匹配多個運行級別,對大多數action來講,僅當runlevel與當前運行級別匹配成功纔會執行。 3. action action是描述其後的process的運行方式的。action可取的值包括:initdefault、sysinit、boot、bootwait等: initdefault是一個特殊的action值,用於標識缺省的啓動級別;當init由核心激活之後,它將讀取inittab中的initdefault項,取得其中的runlevel,並做爲當前的運行級別。若是沒有inittab文件,或者其中沒有initdefault項,init將在控制檯上請求輸入runlevel。 sysinit、boot、bootwait等action將在系統啓動時無條件運行,而忽略其中的runlevel。 其他的action(不含initdefault)都與某個runlevel相關。各個action的定義在inittab的man手冊中有詳細的描述。 4. process process爲具體的執行程序。程序後面能夠帶參數。?dm - ? display manager,即xx圖形界面顯示管理器,它將使您能夠在啓動時直接進入 X 環境,而勿需經過 startx 來啓動 X。gdm - GNOME display managerkdm - KDE display managerxdm - X display manager目前,gdm 應該是功能最好、界面最漂亮的一個。