· 1: 啓動電源後,主機第一步先做的就是查詢BIOS(全稱:basic input/output system 基本輸入輸出系統)信息。瞭解整個系統的硬件狀態,如CPU,內存,顯卡,網卡等。嗯,這一步windows算和它是一家。不分彼此。
· 2: 接下來,就是主機讀取MBR(硬盤的第一個扇區)裏的boot loader了。這個可是重點哦,據說troubleshooting裏就會考這點,給個壞了的loader,叫你修正。windows不支持linux 的分區格式。所以,用windows的boot。ini是查不到linux的系統的。一般我裝系統都是先裝windows再裝linux,然後用grub 來做boot loader。兩個字:省心!因爲linux不像windows那麼小氣。grub可是支持windows分區格式的哦。
· 3: 接上一步,主機讀取boot loader後,會讀取裏面的信息,知道誰跟誰是待在哪,假如主機想進入linux系統,讀取到linux核心是在/boot文件目錄中後,將此核心加載到內存中。開始了接下來的分析啓動之旅。
· 4: OK,第一個運行程序是誰?就是/sbin/init程序。不信,就用top程序看下,是不是PID爲1的就是這個東東,它,可是萬物之祖啊,我簡稱它是女媧娘娘(不喜歡亞當夏娃)。
· 5: init首先查找啓動等級(run-level)。因爲啓動等級不同,其運行腳本(也就是服務)會不同。默認的等級有以下幾項:
0 - halt (系統直接關機)
1 - single user mode (單人模式,用於系統維護時使用)
2 - Multi-user, without NFS (類似3模式,不過少了NFS服務)
3 - Full multi-user mode (完整模式,不過,是文本模式)
4 - unused (系統保留功能)
5 - X11 (與3模式類似,不過,是X終端顯示)
6 - reboot (重新開機)
(不要選擇0或4,6 否則,進步了系統的)
· 6: OK。系統知道自己的啓動等級後,接下來,不是去啓動服務,而是,先設置好主機運行環境。讀取的文件是/etc/rc.d/rc.sysinit文件。那究竟要設置哪些環境呢?
· 設置網絡環境/etc/sysconfig/network,如主機名,網關,IP,DNS等。
· 掛載/proc。此文件是個特殊文件,大小爲0,因爲它是在內存當中。裏面東東最好別刪。
· 根據內核在開機時的結果/proc/sys/kernel/modprobe。開始進行周邊設備的偵測。
· 載入用戶自定義的模塊/etc/sysconfig/modules/*.modules
· 讀取/etc/sysctl。conf文件對內核進行設定。
· 設定時間,終端字體,硬盤LVM或RAID功能,以fsck進行磁盤檢測。
· 將開機狀況記錄到/var/log/dmesg中。(可以用命令dmesg查看結果)
· 7: OK,接下來,就是啓動系統服務了,不同的run-level會有不同的服務啓動。到/etc/rc.d目錄中,不同的level會有不同的目錄。如啓動 3模式,會有個rc3.d目錄,裏面就保存着服務。其中,S(start)開頭的表明開機啓動,K(kill)開頭的表明開機不啓動。數字表示啓動順序。 數字越小,啓動越早。
注意,他們都是連接到etc/rc.d/init.d/目錄中的相關文件。所以,想手工啓動某一服務,可以用"/etc/rc.d/init。 d/某個服務 start"啓動哦。相反,我們也可以把某個服務ln(鏈接命令)到不同run-level的目錄中。記得打上S或者K+數字哦。
· 8: 讀取服務後,主機會讀取/etc/rc.d/rc.local文件。所以,如果需要什麼開機啓動的話,可以寫個腳本或命令到這裏面來。就不用像上面那麼麻煩。以後刪除也方便。