init 程式的型別:當計算機開啟電源後,首先是bios開機自檢,按照bios中設定的啟動裝置(通常是硬碟)來啟動。
作業系統接管硬體以後,首先讀入 /boot 目錄下的核心檔案。
作業系統 -> /boot
init 程序是系統所有程序的起點,你可以把它比擬成系統所有程序的老祖宗,沒有這個程序,系統中任何程序都不會啟動。
init 程式首先是需要讀取配置檔案 /etc/inittab。
作業系統 -> /boot -> init 程序
執行級別
許多程式需要開機啟動。它們在windows叫做"服務"(service),在linux就叫做"守護程序"(daemon)。
init程序的一大任務,就是去執行這些開機啟動的程式。
但是,不同的場合需要啟動不同的程式,比如用作伺服器時,需要啟動apache,用作桌面就不需要。
linux允許為不同的場合,分配不同的開機啟動程式,這就叫做"執行級別"(runlevel)。也就是說,啟動時根據"執行級別",確定要執行哪些程式。
作業系統 -> /boot -> init 程序 -> 執行級別
linux系統有7個執行級別(runlevel):
在init的配置檔案中有這麼一行: si::sysinit:/etc/rc.d/rc.sysinit 它呼叫執行了/etc/rc.d/rc.sysinit,而rc.sysinit是乙個bash shell的指令碼,它主要是完成一些系統初始化的工作。
作業系統 -> /boot -> init 程序 -> 執行級別 -> /etc/init.d
rc執行完畢後,返回init。這時基本系統環境已經設定好了,各種守護程序也已經啟動了。
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
從上面可以看出在2、3、4、5的執行級別中都將以respawn方式執行mingetty程式,mingetty程式能開啟終端、設定模式。
同時它會顯示乙個文字登入介面,這個介面就是我們經常看到的登入介面,在這個登入介面中會提示使用者輸入使用者名稱,而使用者輸入的使用者將作為引數傳給login程式來驗證使用者的身份。
一般來說,使用者的登入方式有三種:
linux 的賬號驗證程式是 login,login 會接收 mingetty 傳來的使用者名稱作為使用者名稱引數。
然後 login 會對使用者名稱進行分析:如果使用者名稱不是 root,且存在 /etc/nologin 檔案,login 將輸出 nologin 檔案的內容,然後退出。
這通常用來系統維護時防止非root使用者登入。只有/etc/securetty中登記了的終端才允許 root 使用者登入,如果不存在這個檔案,則 root 使用者可以在任何終端上登入。
/etc/usertty檔案用於對使用者作出附加訪問限制,如果不存在這個檔案,則沒有其他限制。
Linux系統的啟動過程
linux的啟動過程 這裡先給乙個簡單的概述,後面再是詳述 a.位於rom的bios首先加電自檢,然後裝載mbr內容到ram,將控制權交給ram中的bootloader 比如grub b.bootloader進行自身的多階段引導,裝載一些檔案系統的驅動等,最後將核心裝載入ram c.核心首先執行,然...
Linux 系統的啟動過程
linux啟動時可以看到很多啟動資訊。linux系統的啟動過程並沒有想象中那麼複雜,可以分為五個階段 核心引導 計算機通電以後,首先bios會進行開機自檢,按照bios中設定的啟動裝置 通常是硬碟 來啟動。作業系統接管硬體以後,首先讀入 boot目錄下的核心檔案。執行init init程式是系統所有...
Linux系統的啟動過程
linux系統的啟動過程大體上可分為五部分 核心的引導 執行init 系統初始化 建立終端 使用者登入系統。當計算機開啟電源後,首先是bios開機自檢,按照bios中設定的啟動裝置 通常是硬碟 來啟動。緊接著由啟動裝置上的grub程式開始引導linux,當引導程式成功完成引導任務後,linux從它們...