linux系統的啟動過程大體上可分為五部分:核心的引導、執行init、系統初始化、建立終端、使用者登入系統。
當計算機開啟電源後,首先是bios開機自檢,按照bios中設定的啟動裝置(通常是硬碟)來啟動。緊接著由啟動裝置上的grub程式開始引導linux,當引導程式成功完成引導任務後,linux從它們手中接管了cpu的控制權,然後cpu就開始執行linux的核心映象**,開始了linux啟動過程。也就是所謂的核心引導開始了,在核心引導過程中其實是很複雜的,我們就當它是乙個黑匣子,反正是linux核心做了一系列工作,最後核心呼叫載入了init程式,至此核心引導的工作就完成了。交給了下乙個主角init.
init 程序是系統所有程序的起點,你可以把它比擬成系統所有程序的老祖宗,沒有這個程序,系統中任何程序都不會啟動。init最主要的功能就是準備軟體執行的環境,包括系統的主機名、網路設定、語言、檔案系統格式及其他服務的啟動等。 而所有的動作都會通過init的配置檔案/etc/inittab來規劃,而inittab 內還有乙個很重要的設定內容,那就是預設的 runlevel (開機執行級別)。先來看看執行級別run level,linux就是通過設定runlevel來規定系統使用不同的服務來啟動,讓linux的使用環境不同。
系統初始化,就是去執行/etc/init/下的各個配置檔案。inittab配置檔案中有這麼一行 「system initialization is started by /etc/init/rcs.conf」 也就是說系統初始化會先執行/etc/init/rcs.conf而該配置檔案中又有一行 「exec /etc/rc.d/rc.sysinit」 所以,重心又轉移到了這個rc.sysinit檔案上,它會做如下工作:啟用交換分割槽,檢查磁碟,載入硬體模組以及其它一些需要優先執行任務。當rc.sysinit程式執行完畢後,將返回init繼續下一步,又到了/etc/init/rc.conf,在這個配置檔案裡,最關鍵的一行為 「exec /etc/rc.d/rc runlev
el」而ru
nlev
el」而
runlevel是在/etc/inittab中定義的(最下面的那一行),以阿銘的/etc/inittab為例,表示$runleve=3,所以此時會執行 「/etc/rc.d/rc 3」 此時實際上是把/etc/rc.d/rc3.d/下的指令碼都給執行了,隨後/etc/rc.d/rc.local也會被執行,通常我們會把開機啟動執行的命令放到這個指令碼下。服務執行完,系統初始化也就完成了。接下來該建立終端了。
建立終端是由配置檔案/etc/init/tty.conf, /etc/init/serial.conf和/etc/sysconfig/init等配置檔案來完成的。在2、3、4、5的執行級別中都將以respawn方式執行mingetty程式,mingetty程式能開啟終端、設定模式。同時它會顯示乙個文字登入介面,這個介面就是我們經常看到的登入介面,在這個登入介面中會提示使用者輸入使用者名稱,而使用者輸入的使用者將作為引數傳給login程式來驗證使用者身份。
對於執行級別為5的圖形方式使用者來說,他們的登入是通過乙個圖形化的登入介面。登入成功後可以直接進入kde、gnome等視窗管理器。而本文主要講的還是文字方式登入的情況:當我們看到mingetty的登入介面時,我們就可以輸入使用者名稱和密碼來登入系統了。
Linux系統的啟動過程
linux的啟動過程 這裡先給乙個簡單的概述,後面再是詳述 a.位於rom的bios首先加電自檢,然後裝載mbr內容到ram,將控制權交給ram中的bootloader 比如grub b.bootloader進行自身的多階段引導,裝載一些檔案系統的驅動等,最後將核心裝載入ram c.核心首先執行,然...
Linux 系統的啟動過程
linux啟動時可以看到很多啟動資訊。linux系統的啟動過程並沒有想象中那麼複雜,可以分為五個階段 核心引導 計算機通電以後,首先bios會進行開機自檢,按照bios中設定的啟動裝置 通常是硬碟 來啟動。作業系統接管硬體以後,首先讀入 boot目錄下的核心檔案。執行init init程式是系統所有...
Linux系統的啟動過程
linux系統的啟動過程 bios自檢 grub引導程式 載入核心 執行init 啟動shell login登陸系統 系統啟動各個階段的詳細介紹 計算機在接通電源之後首先由bios進行post自檢,然後依據bios內設定的引導順序從硬碟 軟盤或cdrom中讀入引導塊。linux系統是人bios中的位...