linux init啟動分析

2021-10-09 11:22:31 字數 2654 閱讀 8996

上電最先執行/etc/inittab

/etc/inittab檔案每一行包括四個字段:label:runlevel:action:process

label

id用來定義預設的init執行的級別

si是系統初始化的程序

ln其中的n從1~6,指明該程序可以使用的runlevel的級別

ud是公升級程序

ca指明當按下ctrl+alt+del是執行的程序

x是將系統轉入x終端時需要執行的程序

runlevel

0halt

1single-user

2-5multi-user

6reboot

action

boot

只有在引導過程中,才執行該程序,但不等待該程序的結束。當該程序死亡時,也不重新啟動該程序

initdefault

指定系統的預設執行級。系統啟動時,init將首先查詢該登記項,如果存在,init將依據此決定系統最初要進入的執行級。具體來說,init將指定登記項"run_level"欄位中的最大數字(即最高執行級)為當前系統的預設執行級;如果該字段為空,那麼將其解釋為"0123456",並以"6"作為預設執行級。如果不存在該登記項,那麼init將要求使用者在系統啟動時指定乙個最初的執行級

off如果相應的程序正在執行,那麼就發出乙個告警訊號,等待20秒後,再通過關閉訊號強行終止該程序。如果相應的程序並不存在,那麼就忽略該登記項

respawn

如果相應的程序還不存在,那麼init就啟動該程序,同時不等待該程序的結束就繼續掃瞄/etc/inittab檔案;當該程序終止時,init將重新啟動該程序。如果相應的程序已經存在,那麼init將忽略該登記項並繼續掃瞄/etc/inittab檔案

askfirst

和respawn的唯一區別是,在執行這個程序前,需要按下entr鍵確認

sysinit

只有在啟動或重新啟動系統並首先進入單使用者模式時,init才執行這些登記項。而在系統從執行級1~6進入單使用者模式時,init並不執行這些登記項。"action"欄位為"sysinit"的登記項在"run_level"欄位不指定任何執行級

wait

啟動程序並等待其結束,然後再處理/etc/inittab檔案中的下乙個登記項

ctrlaltdel

使用者在控制台鍵盤上按下ctrl+alt+del組合鍵時,允許init重新啟動系統。注意,如果該系統放在乙個公共場所,系統管理員可將ctrl+alt+del組合鍵配置為其他行為,比如忽略等

分析inittab

id:5:initdefault//定義系統的執行級別是5

si::sysinit:/etc/init.d/rcs//初始化程序,執行rcs指令碼

~~:s:wait:/sbin/sulogin//這條語句可以讓系統在重新啟動、進入單使用者模式的時候提示輸入超級使用者密碼。s同執行等級1,並等待其結束,然後再處理/etc/inittab檔案中的下乙個登記項。暫時不知道這有啥用,先注釋掉了

l0:0:wait:/etc/init.d/rc 0

l1:1:wait:/etc/init.d/rc 1

l2:2:wait:/etc/init.d/rc 2

l3:3:wait:/etc/init.d/rc 3

l4:4:wait:/etc/init.d/rc 4

l5:5:wait:/etc/init.d/rc 5//initdefault定義的執行級別是5,將會執行/etc/init.d/rc,其中傳進來的引數是5,稍後也會執行/etc/rc5.d/下的指令碼

l6:6:wait:/etc/init.d/rc 6

z6:6:respawn:/sbin/sulogin//指令碼執行等級為6時才執行,此時不會執行這個命令

mxc::respawn:/etc/init.d/rc_mxc.s//執行rc_mxc.s,這個指令碼其實是執行登陸程式,如下

1:2345:respawn:/sbin/getty 38400 tty1//已經執行了登陸程式,這條命令實際不會執行,可以注釋掉

rc_mxc.s:

#!/bin/bash

if grep -sq ttymxc0 /proc/cmdline; then

/sbin/getty -l ttymxc0 115200 vt100

elif grep -sq ttymxc1 /proc/cmdline; then

/sbin/getty -l ttymxc1 115200 vt100

elif grep -sq ttymxc2 /proc/cmdline; then

/sbin/getty -l ttymxc2 115200 vt100

elif grep -sq ttymxc3 /proc/cmdline; then

/sbin/getty -l ttymxc3 115200 vt100

else

sleep 100000

fi

Linux init命令詳解

一 什麼是init init是linux系統操作中不可缺少的程式之一。所謂的init程序,它是乙個由核心啟動的使用者級程序。核心自行啟動 已經被載入記憶體,開始執行,並已初始化所有的裝置驅動程式和資料結構等 之後,就通過啟動乙個使用者級程式init的方式,完成引導程序。所以,init始終是第乙個程序...

Linux init程序詳解

一 什麼是init init是linux系統操作中不可缺少的程式之一。所謂的init程序,它是乙個由核心啟動的使用者級程序。核心自行啟動 已經被載入記憶體,開始執行,並已初始化所有的裝置驅動程式和資料結構等 之後,就通過啟動乙個使用者級程式init的方式,完成引導程序。所以,init始終是第乙個程序...

Linux init執行級別

執行級就是作業系統當前正在執行的功能級別。這個級別從1到6 具有不同的功能。不同的執行級定義如下 參考red hat linux 裡面的 etc inittab 0 停機 千萬不能把initdefault 設定為0 1 單使用者模式 2 多使用者,沒有 nfs 3 完全多使用者模式 標準的執行級 4...