linux啟動過程

2021-10-07 04:40:08 字數 1222 閱讀 9008

systemv vs upstart vs systemd

bios 到 boot loader

核心初始化

首先計算機開機加電,自檢硬體有沒有問題

執行bios中的引導程式

載入啟動盤mbr中的**

通過mbr的資訊載入磁碟的啟動分割槽(放有/boot目錄,專門用於linux系統啟動)

將作業系統的核心**載入到記憶體並加壓縮

執行核心的各種初始化工作,如程序管理,記憶體管理,檔案系統功能

前面的過程都偏底層,其實不必過於糾結,我也只是知道乙個大概的流程。學習要考慮「投入產出比」。

啟動1號程序,它是所有使用者態程序的祖先。這個過程會執行乙個程式檔案,不同的linux系統這個檔案不同。如/sbin/init,/etc/init,/bin/init,/bin/sh等。只要有乙個執行了就不再執行後面的啟動程式。

if (ramdisk_execute_command) 

......

if (!try_to_run_init_process("/sbin/init") ||

!try_to_run_init_process("/etc/init") ||

!try_to_run_init_process("/bin/init") ||

!try_to_run_init_process("/bin/sh"))

return 0;

上面是一段linux的核心**,我是從《趣談linux作業系統》專欄裡拷貝出來的。

上述的啟動程式內部會執行一系列的指令碼,做一些系統的初始化操作,把使用者帶入可操作的環境中。如啟動一些系統服務,nginx,mysql等,以及登入shell,ssh程序與使用者互動。

這一步驟的啟動過程是可以「配置」的。不同的執行級別,會啟動不同的初始化程序。

也就是**/etc/rcx.d**下的啟動指令碼(程式)。所以我們可以直接或間接地新增自己的指令碼在系統初始化時所一些事情。

比如註明的chkconfig命令就可以間接的在rcx.d下建立乙個啟動指令碼。

一號程序啟動前的過程我們只需要大致了解。對於開發人員,還是應用視角下的sbin啟動的初始化工程。

Linux啟動過程

1 開啟 pc電源 pc加電後,乙個特殊的硬體電路會觸發 cpu 的 reset 腳的邏輯值,然後一些 cpu 暫存器,如 cs eip 等被給定乙個值,接著 cpu 跳轉到乙個固定位址開始執行 bios 2 bios 自檢,按設定的裝置啟動 bios 對硬體進行一系列徹底的檢查,如 cpu 型別 ...

Linux 啟動過程

fae 將porting 好的linux 提供,幾乎都在寫應用 空閒時間整理一下 b1202 系統啟動的過程 通過 boot vm 進行啟動 vmlinuz init 程序會讀取 etc inittab etc inittab 先 etc rc.d rc.sysinit 再 etc rc.d rc3...

Linux啟動過程

1.加電時由硬體將bios載入到記憶體末尾.這時是實模式,定址空間為1m.2.由硬體將cs段暫存器強制設定為0xffff,ip指令暫存器設定為0x0000.這樣cs ip指向了oxffff0的位址位置.這個位置就是bios程式的入口位址.3.執行bios程式.在記憶體起始位址0x00000設定1k大...