- 第一步:加載BIOS
- 當你打開ia計算機的電源,計算機會首先加載計算機主板的BIOS信息,因為它包含了CPU的相關信息,設備啟動順序[安裝系統的U盤啟動順序],內存信息,時鐘信息,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 , botting the kernel " ,也就是內核加載完畢的意思,系統將解壓好的內核放置到內存之中,并調用start_kernel()函數 來啟動一系列的初始化函數并初始化各種設備,完成Linux核心環境的建立,至此,Linux內核已經初始化完畢了,基于Linux 的程序 應該可以正常運行了。
- 第五步:用戶層init依據inittab文件來設定運行等級
- 內核被加載后,第一個運行的程序是/sbin/init ,該文件會讀取/etc/inittab 文件,并根據次文件進行初始化的工作。/etc/inittab文件就死設定linux的運行等級,其設定形式如下:
# inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM. # # Ctrl-Alt-Delete is handled by /usr/lib/systemd/system/ctrl-alt-del.target # # systemd uses 'targets' instead of runlevels. By default, there are two main targets: # # multi-user.target: analogous to runlevel 3 # graphical.target: analogous to runlevel 5 # # To view current default target, run: # systemctl get-default # # To set a default target, run: # systemctl set-default TARGET.target #
0 :關機
? ? ? ?1 :單用戶
? ? ? ?2 :無網絡支持的多用戶模式
? ? ? ?3 :用網絡支持的多用戶模式
? ? ? 4? :保留,暫未使用
? ? ? 等等
? ? 不同的linux 發行版本,對于啟動的控制不一樣
- 第六步 :
- ? ? ? ?設定了運行等級之后,Linux執行的地一個用戶層文件就是 /etc/rc.d/rc.sysinit腳本程序,里面會進行設定 PATH,設定網絡配置[/etc/sysconfig/network],啟動swap分區,設定/proc等等
- 第七步:啟動內核模塊
- 具體是根據/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程序,進入登錄狀態
- 就是linux的登錄界面,等待用戶輸入用戶名和密碼了。
- 備注:以上可以參照centos7以上的版本,相關的文件都比較容易查看的。
- 文章參考地址:http://m.blog.chinaunix.net/uid-26495963-id-3066282.html?winzoom=1.375