啓動第一步--加載BIOS
當你打開計算機電源,計算機會首先加載BIOS信息,BIOS信息是如此的重要,以致於計算機必須在最開始就找到它。這是由於BIOS中包含了CPU的相關信息、設備啓動順序信息、硬盤信息、內存信息、時鐘信息、PnP特性等等。在此以後,計算機內心就有譜了,知道應該去讀取哪一個硬件設備了。
啓動第二步--讀取MBR
衆所周知,硬盤上
第0磁道第一個扇區被稱爲MBR,也就是Master Boot Record,即主引導記錄,它的大小是512字節,別看地方不大,可裏面卻存放了預啓動信息、分區表信息。
系統找到BIOS所指定的硬盤的MBR後,就會將其複製到0×7c00地址所在的物理內存中。其實被複制到物理內存的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。
啓動第三步--Boot Loader
Boot Loader 就是在操做系統內核運行以前運行的一段小程序。經過這段小程序,咱們能夠
初始化硬件設備、創建內存空間的映射圖,從而將
系統的軟硬件環境帶到一個合適的狀態,以便
爲最終調用操做系統內核作好一切準備。
Boot Loader有若干種,其中Grub、Lilo和spfdisk是常見的Loader。
咱們以Grub爲例來說解吧,畢竟用lilo和spfdisk的人並很少。
系統讀取內存中的grub配置信息(通常爲menu.lst或grub.lst),並依照此配置信息來啓動不一樣的操做系統。
啓動第四步--加載內核
根據grub設定的內核映像所在路徑,系統讀取內存映像,並進行解壓縮操做。此時,屏幕通常會輸出「Uncompressing Linux」的提示。當解壓縮內核完成後,屏幕輸出「OK, booting the kernel」。
系統將解壓後的內核
放置在內存之中,並
調用start_kernel()函數來啓動一系列的初始化函數並初始化各類設備,完成Linux核心環境的創建。至此,Linux內核已經創建起來了,基於Linux的程序應該能夠正常運行了。
啓動第五步--用戶層init依據inittab文件來設定運行等級
內核被加載後,
第一個運行的程序即是
/sbin/init,該文件會
讀取/etc/inittab文件,並依據此文件來進行初始化工做。
其實/etc/inittab文件最主要的做用就是
設定Linux的運行等級,其設定形式是「:id:5:initdefault:」,這就代表Linux須要運行在等級5上。Linux的運行等級設定以下:
0:關機
1:單用戶模式
2:無網絡支持的多用戶模式
3:有網絡支持的多用戶模式
4:保留,未使用
5:有網絡支持有X-Window支持的多用戶模式
6:從新引導系統,即重啓
關於/etc/inittab文件的學問,其實還有不少
啓動第六步--init進程執行rc.sysinit
在設定了運行等級後,Linux系統執行的
第一個用戶層文件就是
/etc/rc.d/rc.sysinit腳本程序,它作的工做很是多,包括設定PATH、設定網絡配置(/etc/sysconfig/network)、啓動swap分區、設定/proc等等。若是你有興趣,能夠到/etc/rc.d中查看一下rc.sysinit文件,裏面的腳本夠你看幾天的
啓動第七步--啓動內核模塊
具體是依據
/etc/modules.conf文件或
/etc/modules.d目錄下的文件來裝載內核模塊。
啓動第八步--執行不一樣運行級別的腳本程序
根據運行級別的不一樣,系統會運行rc0.d到rc6.d中的相應的腳本程序,來完成相應的初始化工做和啓動相應的服務。
啓動第九步--執行/etc/rc.d/rc.local
你若是打開了此文件,裏面有一句話,讀過以後,你就會對此命令的做用一目瞭然:
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don’t
# want to do the full Sys V style init stuff.
rc.local就是在一切初始化工做後,Linux留給用戶進行個性化的地方。你能夠把你想設置和啓動的東西放到這裏。
啓動第十步--執行/bin/login程序,進入登陸狀態
此時,系統已經進入到了等待用戶輸入username和password的時候了,你已經能夠用本身的賬號登入系統了。:)
===
漫長的啓動過程結束了,一切都清靜了…
其實在這背後,還有着更加複雜的底層函數調用,等待着你去研究…本文就算拋磚引玉了:)
本文參考了以下文章,精煉薈萃而成:
http://bbs.chinaunix.net/thread-835918-1-1.html
http://hi.baidu.com/fembed/blog/item/b9f0881f51145866f624e4be.html
http://baike.baidu.com/view/9485.htm
root 提示符爲#
普通用戶提示符爲$網絡
第三部分,註銷函數
1.exit(Linux窗口註銷使用)ui
2.logout(secureCRT窗口註銷使用)spa
第四部分,重啓操作系統
1.reboot.net
-f 強制重啓3d
reboot 能夠不接參數(經常使用)
2.shutdown(不能單獨用,至少2個參數)
shutdown -r 延時分鐘數
shutdown -r now
第五部分,關機
1.halt(能夠不接參數)
-f 強制關機
-p 關機後,關閉電源
2.poweroff
3.init 0
4.shutdown (不能單獨用,至少2個參數)
shutdown -h 延時分鐘數
shutdown -h now