想要更好的了解linux系統的執行原理,了解系統啟動的流程是非常有必要的。
通常,我們按過開機電源之後,會聽到機箱內發出「滴」的一聲,接著螢幕上開始列印出一些字元,然後開始顯示出圖形介面,最後螢幕上會顯示需要輸入使用者名稱和密碼的登陸介面。其實不管是linux還是windows,從使用者感官的體驗來說,啟動順序都是大同小異的。下面我會詳細描述一下linux系統的啟動流程。
gnu grub(grand unified bootloader簡稱「grub」)是乙個來自gnu專案的多作業系統啟動程式。grub是多啟動規範的實現,它允許使用者可以在計算機內同時擁有多個作業系統,並在計算機啟動時選擇希望執行的作業系統。grub可用於選擇作業系統分割槽上的不同核心,也可用於向這些核心傳遞啟動引數。
linux中預設又7個執行級別,從0到6每個執行級別的含義如下:
任何時候linux只能在一張runlevel下執行。
當我們按過開機按鈕之後,計算機會載入bios,這是計算機上最接近硬體的軟體。每家主機板製作商都會開發適合自家主機板的bios,而bios的一項很重要的功能就是對自身的硬體做一次健康檢查,只有硬體沒有問題才會執行軟體。
ps: 作業系統也是一種軟體這種通電後開始的自檢過程被稱做「加電自檢(power on self test)」簡稱post,如果所有的硬體設施自檢通過,一般都會發出一聲「滴」的短音提示,說明硬體一切正常。
在bios的設定中,機器自檢通過之後,接著就要執行引導程式了。bios缺省會從硬碟上的第0柱面,第0磁軌,第乙個扇區中讀取被稱為mbr的東西,即主引導記錄。
乙個扇區的大小是512位元組,存放的內容是一段引導程式和分割槽資訊。其中引導程式占用446位元組,另外64位元組是磁碟分割槽表dpt,最後兩位元組是mbr的結束位。
這512位元組的空間內容是由專門的分割槽程式產生的,比如說windows下的fdisk.exe檔案,或者linux下的fdisk命令,它不依賴任何作業系統,而mbr中的引導程式也是可以修改的,所以可以利用這個特性實現多作業系統的共存。
redhat和centos缺省會使用grub作為其引導作業系統的程式,但是grub本身又比較大,所以常見的方式是在mbr中寫入grub的位址,這樣系統實際會載入grub作為系統程式的引導程式。
經過上面兩步的準備,接下來就是順利成章的執行grub了。grub最重要的功能就是根據它的配置檔案載入kernel映象,並執行核心載入後的第乙個程式/sbin/init,這個程式會根據/etc/inittab 來進行初始化工作。
其實這裡最重要的是根據檔案中設定的值來確定系統將會執行的runlevel,預設的runlevel定義在「id:3:initdefault:」中,其中數字3說明目前的執行級別定義為3
linux根據/etc/inittab中定義的系統初始化配置,si::sysinit:/etc/rc.d/rc.sysinit執行/etc/rc/sysinit指令碼,該指令碼會設定系統變數,網路配置,並啟動swap、設定/proc、載入使用者自定義模組、載入核心設定等。
這一步是根據之前讀到的runlevel的值來啟動對應的服務,如果值為3,就會執行/etc/rc3.d下的所有指令碼,如果runlevel=5,就會執行/etc/rc5.d下的所有指令碼。
最終將執行/etc/rc.local並生成終端或者x windows等待使用者登陸。至此linux啟動過程執行結束。
擴充套件閱讀
大型web系統架構詳解
阿里**雙十一秒殺系統設計詳解
讓面試官顫抖的tomcat系統架構系列!
【底層原理】linux程序及其排程策略
linux常用命令全拼
Linux系統啟動過程剖析
想要更好的了解linux系統的執行原理,了解系統啟動的流程是非常有必要的。通常,我們按過開機電源之後,會聽到機箱內發出 滴 的一聲,接著螢幕上開始列印出一些字元,然後開始顯示出圖形介面,最後螢幕上會顯示需要輸入使用者名稱和密碼的登陸介面。其實不管是linux還是windows,從使用者感官的體驗來說...
rhel系統啟動過程 Linux 系統啟動過程
按下系統的電源開關,過一會就可以看到linux的登入介面了。你是否曾經想過,從按下電源開關到登入介面出現,這後面到底發生了什麼?linux 系統在啟動過程中,首先是韌體 pc 上大多是 cmos bios 的物理檢測,諸如檢測系統的顯示卡 cpu 和硬碟等,可從系統按下電源後看到此檢測資訊 檢測無問...
rhel系統啟動過程 Linux系統啟動過程簡介
1 bios加電自檢 計算機啟動後,首先會進行韌體bios的自檢,即所謂的post,然後把保持在mbr主引導記錄中的主引導引導程式到記憶體中 2 載入主引導引導程式 mbr 主引導引導程式通過分割槽表查詢活動分割槽,然後將活動分割槽的次引導引導程式從裝置讀入記憶體並執行 3 載入次引導引導程式 gr...