
Linux開機(jī)引導(dǎo)和啟動過程詳解
你是否曾經(jīng)對操作系統(tǒng)為何能夠執(zhí)行應(yīng)用程序而感到疑惑?那么本文將為你揭開操作系統(tǒng)引導(dǎo)與啟動的面紗。
理解操作系統(tǒng)開機(jī)引導(dǎo)和啟動過程對于配置操作系統(tǒng)和解決相關(guān)啟動問題是至關(guān)重要的。該文章陳述了 GRUB2 引導(dǎo)裝載程序開機(jī)引導(dǎo)裝載內(nèi)核的過程(https://en.wikipedia.org/wiki/GNU_GRUB)和 systemd 初始化系統(tǒng)執(zhí)行開機(jī)啟動操作系統(tǒng)的過程(https://en.wikipedia.org/wiki/Systemd)。
事實(shí)上,操作系統(tǒng)的啟動分為兩個階段:引導(dǎo)和啟動。引導(dǎo)階段開始于打開電源開關(guān),結(jié)束于內(nèi)核初始化完成和 systemd 進(jìn)程成功運(yùn)行。啟動階段接管了剩余工作,直到操作系統(tǒng)進(jìn)入可操作狀態(tài)。
總體來說,Linux 的開機(jī)引導(dǎo)和啟動過程是相當(dāng)容易理解,下文將分節(jié)對于不同步驟進(jìn)行詳細(xì)說明。
BIOS 上電自檢(POST)
引導(dǎo)裝載程序 (GRUB2)
內(nèi)核初始化
啟動 systemd,其是所有進(jìn)程之父。
注意,本文以 GRUB2 和 systemd 為載體講述操作系統(tǒng)的開機(jī)引導(dǎo)和啟動過程,是因?yàn)檫@二者是目前主流的 linux 發(fā)行版本所使用的引導(dǎo)裝載程序和初始化軟件。當(dāng)然另外一些過去使用的相關(guān)軟件仍然在一些 Linux 發(fā)行版本中使用。
?
引導(dǎo)過程
引導(dǎo)過程能以兩種方式之一初始化。其一,如果系統(tǒng)處于關(guān)機(jī)狀態(tài),那么打開電源按鈕將開啟系統(tǒng)引導(dǎo)過程。其二,如果操作系統(tǒng)已經(jīng)運(yùn)行在一個本地用戶(該用戶可以是 root 或其他非特權(quán)用戶),那么用戶可以借助圖形界面或命令行界面通過編程方式發(fā)起一個重啟操作,從而觸發(fā)系統(tǒng)引導(dǎo)過程。重啟包括了一個關(guān)機(jī)和重新開始的操作。
?
BIOS 上電自檢(POST)
上電自檢過程中其實(shí) Linux 沒有什么也沒做,上電自檢主要由硬件的部分來完成,這對于所有操作系統(tǒng)都一樣。當(dāng)電腦接通電源,電腦開始執(zhí)行 BIOS(基本輸入輸出系統(tǒng))的 POST(上電自檢)過程。
在 1981 年,IBM 設(shè)計的第一臺個人電腦中,BIOS 被設(shè)計為用來初始化硬件組件。POST 作為 BIOS 的組成部分,用于檢驗(yàn)電腦硬件基本功能是否正常。如果 POST 失敗,那么這個電腦就不能使用,引導(dǎo)過程也將就此中斷。
BIOS 上電自檢確認(rèn)硬件的基本功能正常,然后產(chǎn)生一個 BIOS 中斷 INT 13H,該中斷指向某個接入的可引導(dǎo)設(shè)備的引導(dǎo)扇區(qū)。它所找到的包含有效的引導(dǎo)記錄的第一個引導(dǎo)扇區(qū)將被裝載到內(nèi)存中,并且控制權(quán)也將從引導(dǎo)扇區(qū)轉(zhuǎn)移到此段代碼。
引導(dǎo)扇區(qū)是引導(dǎo)加載器真正的第一階段。大多數(shù) Linux 發(fā)行版本使用的引導(dǎo)加載器有三種:GRUB、GRUB2 和 LILO。GRUB2 是最新的,也是相對于其他老的同類程序使用最廣泛的。
?
GRUB2
GRUB2 全稱是 GRand Unified BootLoader,Version 2(第二版大一統(tǒng)引導(dǎo)裝載程序)。它是目前流行的大部分 Linux 發(fā)行版本的主要引導(dǎo)加載程序。GRUB2 是一個用于計算機(jī)尋找操作系統(tǒng)內(nèi)核并加載其到內(nèi)存的智能程序。由于 GRUB 這個單詞比 GRUB2 更易于書寫和閱讀,在下文中,除特殊指明以外,GRUB 將代指 GRUB2。
GRUB 被設(shè)計為兼容操作系統(tǒng)多重引導(dǎo)規(guī)范,它能夠用來引導(dǎo)不同版本的 Linux 和其他的開源操作系統(tǒng);它還能鏈?zhǔn)郊虞d專有操作系統(tǒng)的引導(dǎo)記錄。
GRUB 允許用戶從任何給定的 Linux 發(fā)行版本的幾個不同內(nèi)核中選擇一個進(jìn)行引導(dǎo)。這個特性使得操作系統(tǒng),在因?yàn)殛P(guān)鍵軟件不兼容或其它某些原因升級失敗時,具備引導(dǎo)到先前版本的內(nèi)核的能力。GRUB 能夠通過文件 /boot/grub/grub.conf 進(jìn)行配置。(LCTT 譯注:此處指 GRUB1)
GRUB1 現(xiàn)在已經(jīng)逐步被棄用,在大多數(shù)現(xiàn)代發(fā)行版上它已經(jīng)被 GRUB2 所替換,GRUB2 是在 GRUB1 的基礎(chǔ)上重寫完成。基于 Red Hat 的發(fā)行版大約是在 Fedora 15 和 CentOS/RHEL 7 時升級到 GRUB2 的。GRUB2 提供了與 GRUB1 同樣的引導(dǎo)功能,但是 GRUB2 也是一個類似主框架(mainframe)系統(tǒng)上的基于命令行的前置操作系統(tǒng)(Pre-OS)環(huán)境,使得在預(yù)引導(dǎo)階段配置更為方便和易操作。GRUB2 通過 /boot/grub2/grub.cfg 進(jìn)行配置。
兩個 GRUB 的最主要作用都是將內(nèi)核加載到內(nèi)存并運(yùn)行。兩個版本的 GRUB 的基本工作方式一致,其主要階段也保持相同,都可分為 3 個階段。在本文將以 GRUB2 為例進(jìn)行討論其工作過程。GRUB 或 GRUB2 的配置,以及 GRUB2 的命令使用均超過本文范圍,不會在文中進(jìn)行介紹。
雖然 GRUB2 并未在其三個引導(dǎo)階段中正式使用這些階段名詞,但是為了討論方便,我們在本文中使用它們。
?
階段 1
如上文 POST(上電自檢)階段提到的,在 POST 階段結(jié)束時,BIOS 將查找在接入的磁盤中查找引導(dǎo)記錄,其通常位于 MBR(主引導(dǎo)記錄),它加載它找到的第一個引導(dǎo)記錄中到內(nèi)存中,并開始執(zhí)行此代碼。引導(dǎo)代碼(及階段 1 代碼)必須非常小,因?yàn)樗仨氝B同分區(qū)表放到硬盤的第一個 512 字節(jié)的扇區(qū)中。 在傳統(tǒng)的常規(guī) MBR 中,引導(dǎo)代碼實(shí)際所占用的空間大小為 446 字節(jié)。這個階段 1 的 446 字節(jié)的文件通常被叫做引導(dǎo)鏡像(boot.img),其中不包含設(shè)備的分區(qū)信息,分區(qū)是一般單獨(dú)添加到引導(dǎo)記錄中。
由于引導(dǎo)記錄必須非常的小,它不可能非常智能,且不能理解文件系統(tǒng)結(jié)構(gòu)。因此階段 1 的唯一功能就是定位并加載階段 1.5 的代碼。為了完成此任務(wù),階段 1.5 的代碼必須位于引導(dǎo)記錄與設(shè)備第一個分區(qū)之間的位置。在加載階段 1.5 代碼進(jìn)入內(nèi)存后,控制權(quán)將由階段 1 轉(zhuǎn)移到階段 1.5。
?
階段 1.5
如上所述,階段 1.5 的代碼必須位于引導(dǎo)記錄與設(shè)備第一個分區(qū)之間的位置。該空間由于歷史上的技術(shù)原因而空閑。第一個分區(qū)的開始位置在扇區(qū) 63 和 MBR(扇區(qū) 0)之間遺留下 62 個 512 字節(jié)的扇區(qū)(共 31744 字節(jié)),該區(qū)域用于存儲階段 1.5 的代碼鏡像 core.img 文件。該文件大小為 25389 字節(jié),故此區(qū)域有足夠大小的空間用來存儲 core.img。
因?yàn)橛懈蟮拇鎯臻g用于階段 1.5,且該空間足夠容納一些通用的文件系統(tǒng)驅(qū)動程序,如標(biāo)準(zhǔn)的 EXT 和其它的 Linux 文件系統(tǒng),如 FAT 和 NTFS 等。GRUB2 的 core.img 遠(yuǎn)比更老的 GRUB1 階段 1.5 更復(fù)雜且更強(qiáng)大。這意味著 GRUB2 的階段 2 能夠放在標(biāo)準(zhǔn)的 EXT 文件系統(tǒng)內(nèi),但是不能放在邏輯卷內(nèi)。故階段 2 的文件可以存放于 /boot 文件系統(tǒng)中,一般在 /boot/grub2 目錄下。
注意 /boot 目錄必須放在一個 GRUB 所支持的文件系統(tǒng)(并不是所有的文件系統(tǒng)均可)。階段 1.5 的功能是開始執(zhí)行存放階段 2 文件的 /boot 文件系統(tǒng)的驅(qū)動程序,并加載相關(guān)的驅(qū)動程序。
?
階段 2
GRUB 階段 2 所有的文件都已存放于 /boot/grub2 目錄及其幾個子目錄之下。該階段沒有一個類似于階段 1 與階段 1.5 的鏡像文件。相應(yīng)地,該階段主要需要從 /boot/grub2/i386-pc 目錄下加載一些內(nèi)核運(yùn)行時模塊。
GRUB 階段 2 的主要功能是定位和加載 Linux 內(nèi)核到內(nèi)存中,并轉(zhuǎn)移控制權(quán)到內(nèi)核。內(nèi)核的相關(guān)文件位于 /boot 目錄下,這些內(nèi)核文件可以通過其文件名進(jìn)行識別,其文件名均帶有前綴 vmlinuz。你可以列出 /boot 目錄中的內(nèi)容來查看操作系統(tǒng)中當(dāng)前已經(jīng)安裝的內(nèi)核。
GRUB2 跟 GRUB1 類似,支持從 Linux 內(nèi)核選擇之一引導(dǎo)啟動。Red Hat 包管理器(DNF)支持保留多個內(nèi)核版本,以防最新版本內(nèi)核發(fā)生問題而無法啟動時,可以恢復(fù)老版本的內(nèi)核。默認(rèn)情況下,GRUB 提供了一個已安裝內(nèi)核的預(yù)引導(dǎo)菜單,其中包括問題診斷菜單(recuse)以及恢復(fù)菜單(如果配置已經(jīng)設(shè)置恢復(fù)鏡像)。
階段 2 加載選定的內(nèi)核到內(nèi)存中,并轉(zhuǎn)移控制權(quán)到內(nèi)核代碼。
?
內(nèi)核
內(nèi)核文件都是以一種自解壓的壓縮格式存儲以節(jié)省空間,它與一個初始化的內(nèi)存映像和存儲設(shè)備映射表都存儲于 /boot 目錄之下。
在選定的內(nèi)核加載到內(nèi)存中并開始執(zhí)行后,在其進(jìn)行任何工作之前,內(nèi)核文件首先必須從壓縮格式解壓自身。一旦內(nèi)核自解壓完成,則加載 systemd 進(jìn)程(其是老式 System V 系統(tǒng)的 init 程序的替代品),并轉(zhuǎn)移控制權(quán)到 systemd。
這就是引導(dǎo)過程的結(jié)束。此刻,Linux 內(nèi)核和 systemd 處于運(yùn)行狀態(tài),但是由于沒有其他任何程序在執(zhí)行,故其不能執(zhí)行任何有關(guān)用戶的功能性任務(wù)。
?
啟動過程
啟動過程緊隨引導(dǎo)過程之后,啟動過程使 Linux 系統(tǒng)進(jìn)入可操作狀態(tài),并能夠執(zhí)行用戶功能性任務(wù)。
?
systemd
systemd 是所有進(jìn)程的父進(jìn)程。它負(fù)責(zé)將 Linux 主機(jī)帶到一個用戶可操作狀態(tài)(可以執(zhí)行功能任務(wù))。systemd 的一些功能遠(yuǎn)較舊式 init 程序更豐富,可以管理運(yùn)行中的 Linux 主機(jī)的許多方面,包括掛載文件系統(tǒng),以及開啟和管理 Linux 主機(jī)的系統(tǒng)服務(wù)等。但是 systemd 的任何與系統(tǒng)啟動過程無關(guān)的功能均不在此文的討論范圍。
首先,systemd 掛載在 /etc/fstab 中配置的文件系統(tǒng),包括內(nèi)存交換文件或分區(qū)。據(jù)此,systemd 必須能夠訪問位于 /etc 目錄下的配置文件,包括它自己的。systemd 借助其配置文件 /etc/systemd/system/default.target 決定 Linux 系統(tǒng)應(yīng)該啟動達(dá)到哪個狀態(tài)(或目標(biāo)態(tài))。default.target 是一個真實(shí)的 target 文件的符號鏈接。對于桌面系統(tǒng),其鏈接到 graphical.target,該文件相當(dāng)于舊式 systemV init 方式的 runlevel 5。對于一個服務(wù)器操作系統(tǒng)來說,default.target 更多是默認(rèn)鏈接到 multi-user.target, 相當(dāng)于 systemV 系統(tǒng)的 runlevel 3。 emergency.target 相當(dāng)于單用戶模式。
(譯注:“target” 是 systemd 新引入的概念,目前尚未發(fā)現(xiàn)有官方的準(zhǔn)確譯名,考慮到其作用和使用的上下文環(huán)境,我們認(rèn)為翻譯為“目標(biāo)態(tài)”比較貼切。以及,“unit” 是指 systemd 中服務(wù)和目標(biāo)態(tài)等各個對象/文件,在此依照語境譯作“單元”。)
注意,所有的目標(biāo)態(tài)和服務(wù)均是 systemd 的單元。
如下表 1 是 systemd 啟動的目標(biāo)態(tài)和老版 systemV init 啟動運(yùn)行級別的對比。這個 systemd 目標(biāo)態(tài)別名 是為了 systemd 向前兼容 systemV 而提供。這個目標(biāo)態(tài)別名允許系統(tǒng)管理員(包括我自己)用 systemV 命令(例如 init 3)改變運(yùn)行級別。當(dāng)然,該 systemV 命令是被轉(zhuǎn)發(fā)到 systemd 進(jìn)行解釋和執(zhí)行的。
SystemV 運(yùn)行級別systemd 目標(biāo)態(tài)systemd 目標(biāo)態(tài)別名描述?halt.target?停止系統(tǒng)運(yùn)行但不切斷電源。0poweroff.targetrunlevel0.target停止系統(tǒng)運(yùn)行并切斷電源.Semergency.target?單用戶模式,沒有服務(wù)進(jìn)程運(yùn)行,文件系統(tǒng)也沒掛載。這是一個最基本的運(yùn)行級別,僅在主控制臺上提供一個 shell 用于用戶與系統(tǒng)進(jìn)行交互。1rescue.targetrunlevel1.target掛載了文件系統(tǒng),僅運(yùn)行了最基本的服務(wù)進(jìn)程的基本系統(tǒng),并在主控制臺啟動了一個 shell 訪問入口用于診斷。2?runlevel2.target多用戶,沒有掛載 NFS 文件系統(tǒng),但是所有的非圖形界面的服務(wù)進(jìn)程已經(jīng)運(yùn)行。3multi-user.targetrunlevel3.target所有服務(wù)都已運(yùn)行,但只支持命令行接口訪問。4?runlevel4.target未使用。5graphical.targetrunlevel5.target多用戶,且支持圖形界面接口。6reboot.targetrunlevel6.target重啟。?default.target?這個目標(biāo)態(tài)是總是?multi-user.target?或?graphical.target?的一個符號鏈接的別名。systemd 總是通過?default.target?啟動系統(tǒng)。default.target?絕不應(yīng)該指向?halt.target、?poweroff.target?或?reboot.target。
表 1 老版本 systemV 的 運(yùn)行級別與 systemd 與目標(biāo)態(tài)或目標(biāo)態(tài)別名的比較
每個目標(biāo)態(tài)有一個在其配置文件中描述的依賴集,systemd 需要首先啟動其所需依賴,這些依賴服務(wù)是 Linux 主機(jī)運(yùn)行在特定的功能級別所要求的服務(wù)。當(dāng)配置文件中所有的依賴服務(wù)都加載并運(yùn)行后,即說明系統(tǒng)運(yùn)行于該目標(biāo)級別。
systemd 也會查看老式的 systemV init 目錄中是否存在相關(guān)啟動文件,若存在,則 systemd 根據(jù)這些配置文件的內(nèi)容啟動對應(yīng)的服務(wù)。在 Fedora 系統(tǒng)中,過時的網(wǎng)絡(luò)服務(wù)就是通過該方式啟動的一個實(shí)例。
如下圖 1 是直接從 bootup 的 man 頁面拷貝而來。它展示了在 systemd 啟動過程中一般的事件序列和確保成功的啟動的基本的順序要求。
sysinit.target 和 basic.target 目標(biāo)態(tài)可以被視作啟動過程中的狀態(tài)檢查點(diǎn)。盡管 systemd 的設(shè)計初衷是并行啟動系統(tǒng)服務(wù),但是部分服務(wù)或功能目標(biāo)態(tài)是其它服務(wù)或目標(biāo)態(tài)的啟動的前提。系統(tǒng)將暫停于檢查點(diǎn)直到其所要求的服務(wù)和目標(biāo)態(tài)都滿足為止。
sysinit.target 狀態(tài)的到達(dá)是以其所依賴的所有資源模塊都正常啟動為前提的,所有其它的單元,如文件系統(tǒng)掛載、交換文件設(shè)置、設(shè)備管理器的啟動、隨機(jī)數(shù)生成器種子設(shè)置、低級別系統(tǒng)服務(wù)初始化、加解密服務(wù)啟動(如果一個或者多個文件系統(tǒng)加密的話)等都必須完成,但是在 sysinit.target 中這些服務(wù)與模塊是可以并行啟動的。
sysinit.target 啟動所有的低級別服務(wù)和系統(tǒng)初具功能所需的單元,這些都是進(jìn)入下一階段 basic.target 的必要前提。

圖 1:systemd 的啟動流程
在 sysinit.target 的條件滿足以后,systemd 接下來啟動 basic.target,啟動其所要求的所有單元。 basic.target 通過啟動下一目標(biāo)態(tài)所需的單元而提供了更多的功能,這包括各種可執(zhí)行文件的目錄路徑、通信 sockets,以及定時器等。
最后,用戶級目標(biāo)態(tài)(multi-user.target 或 graphical.target) 可以初始化了,應(yīng)該注意的是 multi-user.target 必須在滿足圖形化目標(biāo)態(tài) graphical.target 的依賴項(xiàng)之前先達(dá)成。
圖 1 中,以 * 開頭的目標(biāo)態(tài)是通用的啟動狀態(tài)。當(dāng)?shù)竭_(dá)其中的某一目標(biāo)態(tài),則說明系統(tǒng)已經(jīng)啟動完成了。如果 multi-user.target 是默認(rèn)的目標(biāo)態(tài),則成功啟動的系統(tǒng)將以命令行登錄界面呈現(xiàn)于用戶。如果 graphical.target 是默認(rèn)的目標(biāo)態(tài),則成功啟動的系統(tǒng)將以圖形登錄界面呈現(xiàn)于用戶,界面的具體樣式將根據(jù)系統(tǒng)所配置的顯示管理器而定。
?
故障討論
最近我需要改變一臺使用 GRUB2 的 Linux 電腦的默認(rèn)引導(dǎo)內(nèi)核。我發(fā)現(xiàn)一些 GRUB2 的命令在我的系統(tǒng)上不能用,也可能是我使用方法不正確。至今,我仍然不知道是何原因?qū)е?,此問題需要進(jìn)一步探究。
grub2-set-default 命令沒能在配置文件 /etc/default/grub 中成功地設(shè)置默認(rèn)內(nèi)核索引,以至于期望的替代內(nèi)核并沒有被引導(dǎo)啟動。故在該配置文件中我手動更改 GRUB_DEFAULT=saved 為 GRUB_DEFAULT=2,2 是我需要引導(dǎo)的安裝好的內(nèi)核文件的索引。然后我執(zhí)行命令 grub2-mkconfig > /boot/grub2/grub.cfg 創(chuàng)建了新的 GRUB 配置文件,該方法如預(yù)期的規(guī)避了問題,并成功引導(dǎo)了替代的內(nèi)核。
?
結(jié)論
GRUB2、systemd 初始化系統(tǒng)是大多數(shù)現(xiàn)代 Linux 發(fā)行版引導(dǎo)和啟動的關(guān)鍵組件。盡管在實(shí)際中,systemd 的使用還存在一些爭議,但是 GRUB2 與 systemd 可以密切地配合先加載內(nèi)核,然后啟動一個業(yè)務(wù)系統(tǒng)所需要的系統(tǒng)服務(wù)。
盡管 GRUB2 和 systemd 都比其前任要更加復(fù)雜,但是它們更加容易學(xué)習(xí)和管理。在 man 頁面有大量關(guān)于 systemd 的幫助說明,freedesktop.org 也在線收錄了完整的此幫助說明(https://www.freedesktop.org/software/systemd/man/index.html)。下面有更多相關(guān)信息鏈接。
?
附加資源
GNU GRUB(https://en.wikipedia.org/wiki/GNU_GRUB) (Wikipedia)
GNU GRUB Manual(https://www.gnu.org/software/grub/manual/grub.html) (GNU.org)
Master Boot Record(https://en.wikipedia.org/wiki/Master_boot_record) (Wikipedia)
Multiboot specification(https://en.wikipedia.org/wiki/Multiboot_Specification) (Wikipedia)
systemd(https://en.wikipedia.org/wiki/Systemd) (Wikipedia)
systemd bootup process(https://www.freedesktop.org/software/systemd/man/bootup.html) (Freedesktop.org)
systemd index of man pages(https://www.freedesktop.org/software/systemd/man/index.html) (Freedesktop.org)
?
相關(guān)推薦
以s3c2440為例講解arm芯片的啟動過程
arm 嵌入式芯片的啟動過程對于嵌入式菜鳥來說其實(shí)是很復(fù)雜的,很多人都是一知半解,存在很多誤區(qū)。在筆者看來,要想真正了解這一啟動過程必須要首先了解存儲器的區(qū)別與聯(lián)系,參考文章:各種主流半導(dǎo)體存儲器
2020-11-12 15:03:36
3489


以s3c2440為例的arm芯片的啟動過程
本文將以s3c2440為例詳細(xì)講述 arm 芯片的啟動過程。s3c2440支持兩種啟動模式:NAND FLASH 啟動和非 NAND FLASH 啟動(一般是NOR FLASH 啟動,并且可以配置數(shù)據(jù)寬度),通過 OM1、OM0 兩個管腳來控制。
2020-12-02 14:13:44
3154


STM32H7的啟動過程分析
本章教程主要跟大家講STM32H7的啟動過程,這里的啟動過程是指從CPU上電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。
2022-10-17 14:42:52
1494

ARM Cortex-M0 DesignStart系列--4啟動過程分析
書接上文《ARM_Cortex-M0 DesignStart系列--3rtl仿真過程的詳細(xì)分析》,本文基于hello這個case,對Cortex M0的啟動過程做一個詳細(xì)的分析,其實(shí)整個ARM Cortex M系列的啟動的過程都是很相似的,這對我們理解SoC的啟動過程會很有幫助。
2022-11-10 09:05:25
2120


詳解STM32啟動過程
本章教程主要跟大家講STM32H7的啟動過程,這里的啟動過程是指從CPU上電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。
2022-11-14 11:24:11
1580

linux內(nèi)核啟動的原理 linux項(xiàng)目的存儲方案
不例外,也是先將代碼加載到內(nèi)存中,然后從RAM啟動,不過它需要U-boot,也就是我們常說的bootloader來引導(dǎo),將外掛存儲介質(zhì)中的代碼拷貝內(nèi)存RAM中,然后再開始運(yùn)行,linux啟動過程如圖1。
2022-11-23 15:51:24
445


專家揭秘:STM32啟動過程全解
電子發(fā)燒友網(wǎng)核心提示: 本文主要闡述了STM32啟動過程全面解析,包括啟動過程的介紹、啟動代碼的陳列以及深入解析。 相對于ARM上一代的主流ARM7/ARM9內(nèi)核架構(gòu),新一代Cortex內(nèi)核架構(gòu)的
2012-09-10 08:50:17
52640


Linux啟動過程詳解
1、Linux 基礎(chǔ)安裝Linux操作系統(tǒng) Linux文件系統(tǒng) Linux常用命令 Linux啟動過程詳解 熟悉Linux服務(wù)能夠獨(dú)立安裝Linux操作系統(tǒng) 能夠熟練使用Linux系統(tǒng)的基本命
2021-11-02 07:01:06
Linux內(nèi)核啟動過程和Bootloader(總述)
精簡講述linux內(nèi)核啟動過程。[轉(zhuǎn)]1.Linux內(nèi)核啟動過程概述 一個嵌入式 Linux 系統(tǒng)從軟件角度看可以分為四個部分:引導(dǎo)加載程序(Bootloader),Linux 內(nèi)核,文件系統(tǒng)
2012-08-18 17:35:24
Linux和Windows系統(tǒng)啟動過程的簡單分析
AT PPC.....bootloader特性:以命令為基礎(chǔ)。一旦引導(dǎo)啟動系統(tǒng)后,bootloader就不存在。Linux和Windows啟動過程中,基本的原理都差不多,都先加載一個bootloader來初始化硬件設(shè)備,為系統(tǒng)運(yùn)行做好準(zhǔn)備;對于硬盤的識別,Windows是以盤來識別,而Linux是采用根文件系統(tǒng) 。最后才是啟動一個應(yīng)用程序。
2017-08-28 11:27:47
Linux的開機(jī)啟動程序?qū)崿F(xiàn)方法
我們假設(shè)大家已經(jīng)熟悉其它操作系統(tǒng)的引導(dǎo)過程,了解硬件的自檢引導(dǎo)步驟,就只從Linux操作系統(tǒng)的引導(dǎo)加載程序(對個人電腦而言通常是LILO)開始,介紹Linux開機(jī)引導(dǎo)的步驟。
2019-07-26 06:14:08
linux開機(jī)到登陸的啟動過程描述
簡述:1.開機(jī)BIOS自檢2.MBR引導(dǎo)3.grub引導(dǎo)菜單4.加載內(nèi)核kernel5.啟動init進(jìn)程6.讀取inittab文件,執(zhí)行rc.sysinit,rc等腳本7.啟動mingetty,進(jìn)入系統(tǒng)登陸界面來個簡圖:
2018-11-16 10:41:40
詳解 ARM Linux啟動過程分析
詳解 ARM Linux啟動過程分析要做ARM linux的開發(fā)就必須搭建開發(fā)環(huán)境,那么需要什么樣的開發(fā)環(huán)境才能比較方便我們的開發(fā)和調(diào)試呢?我這里搭好了開發(fā)環(huán)境,把這些環(huán)境是那些,及怎么去搭建一一為
2017-11-05 11:36:24
詳解 ARM Linux啟動過程分析
要做ARM linux的開發(fā)就必須搭建開發(fā)環(huán)境,那么需要什么樣的開發(fā)環(huán)境才能比較方便我們的開發(fā)和調(diào)試呢?我這里搭好了開發(fā)環(huán)境,把這些環(huán)境是那些,及怎么去搭建一一為大家做了過程步驟。我搭的開發(fā)環(huán)境主機(jī)
2017-09-24 15:23:40
詳解 ARM Linux啟動過程分析
要做ARM linux的開發(fā)就必須搭建開發(fā)環(huán)境,那么需要什么樣的開發(fā)環(huán)境才能比較方便我們的開發(fā)和調(diào)試呢?我這里搭好了開發(fā)環(huán)境,把這些環(huán)境是那些,及怎么去搭建一一為大家做了過程步驟。我搭的開發(fā)環(huán)境主機(jī)
2017-11-11 09:32:33
BootLoader啟動過程分為哪幾個階段呢
BootLoarder是什么?BootLoader的操作模式有哪幾種呢?BootLoader啟動過程分為哪幾個階段呢?
2021-11-30 07:02:07
CentOS6/7系統(tǒng)引導(dǎo)過程 精選資料推薦
CentOS6和CentOS7啟動過程詳解修改GRUB引導(dǎo)的啟動背景、啟動菜單、啟動條名稱、grub加密
2021-07-28 07:43:32
STM32啟動過程
一、STM32 啟動過程通過Boot引腳設(shè)定,尋找初始地址初始化棧指針 __initial_sp指向復(fù)位程序 Reset_Hander設(shè)置異常中斷 HardFault_Handler設(shè)置系統(tǒng)時鐘
2021-08-11 06:02:55
STM32F429啟動過程詳解
第13章 STM32F429啟動過程詳解本章教程主要跟大家講STM32F429的啟動過程,這里的啟動過程是指從CPU上電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分
2021-08-03 06:15:08
STM32H7啟動過程詳解
第13章 STM32H7啟動過程詳解本章教程主要跟大家講STM32H7的啟動過程,這里的啟動過程是指從CPU上電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。啟動過程相對來說還是比較重要的,理解...
2021-08-03 06:41:52
U-Boot啟動過程--詳細(xì)版的完全分析
Boot Record,主引導(dǎo)記錄)中的Bootloader(例如LILO或GRUB),并進(jìn)一步引導(dǎo)操作系統(tǒng)的啟動。然而在嵌入式系統(tǒng)中通常沒有像BIOS那樣的固件程序,因此整個系統(tǒng)的加載啟動就完全由bootloader來完成。它主要的功能是加載與引導(dǎo)內(nèi)核映像 ,具體U-Boot啟動過程見附件資料。
2015-12-12 22:50:12
uCLinux內(nèi)核啟動過程是怎樣實(shí)現(xiàn)的?
什么是uCLinux操作系統(tǒng)?uCLinux內(nèi)核啟動過程是怎樣實(shí)現(xiàn)的?
2021-04-23 06:09:30
uboot啟動過程中延時修改
uboot啟動過程中延時修改uboot啟動過程中如何延時修改,許多人都會有這樣的問題,下面來學(xué)習(xí)一下如何解決這個問題,以下是我的步驟,大家可以借鑒,希望對你們有所幫助哦!平臺:sail-imx6系統(tǒng)
2019-11-01 16:29:48
【Intel Edison試用體驗(yàn)】[硬件] 底層硬件探索 and 啟動過程分析(小k - NO.02)
是對MCU進(jìn)行下載程序和調(diào)試都得經(jīng)過Atom處理器。Atom運(yùn)行的 yocto Linux 是基于RAM運(yùn)行的,Quark的RTOS是基于ROM運(yùn)行的。兩者有什么區(qū)別呢?基于RAM的就是在系統(tǒng)啟動過程
2016-07-25 16:34:27
【干貨】STM32啟動過程全解
本帖最后由 張飛電子學(xué)院張角 于 2021-2-27 13:56 編輯
只有了解了啟動過程,才能算是對stm32單片機(jī)有相對較深入的理解。
2021-02-27 12:51:53
一次性搞定stm32啟動模式與啟動過程
三個不同作用的空間在單片機(jī)里面占了三個空間,單片機(jī)引導(dǎo)哪個空間資源啟動,由BOOT1和BOOT0決定!正常來說一般是從flash啟動!??!二、從flash啟動過程2.1 數(shù)據(jù)在堆棧中存儲方式啟動的程序是在sram上運(yùn)行?。∮幸粋€很關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的知識點(diǎn),運(yùn)行時sarm會分成以下五個部分例如:#
2022-02-15 06:53:44
單片機(jī)的啟動過程是怎樣的
啟動過程簡介單片機(jī)的啟動過程是加電后,先運(yùn)行芯片內(nèi)部固有程序(這個程序是用戶訪問不到也改寫不了的),即啟動代碼。啟動代碼程序建立完運(yùn)行環(huán)境后,會去讀串口狀態(tài),就是用戶下載程序用到的各個端口,判斷用戶
2021-11-29 06:47:25
在Linux啟動過程中, 想將PC13 pin配置為輸出/拉起,如何修改設(shè)備樹?
在 Linux 啟動過程中, 我想將 PC13 pin 配置為輸出/ 拉起 。 我該如何修改設(shè)備樹 。
2023-11-13 06:21:04
嵌入式Linux的引導(dǎo)過程是怎樣的?
歡迎關(guān)注公眾號,文章會同步發(fā)布在嵌入式客棧引言:本文簡明扼要的介紹了嵌入式Linux的引導(dǎo)過程,X86體系的引導(dǎo)過程以及幾種常見嵌入式處理器的引導(dǎo)過程,U-Boot的移植的基本步驟、常用命令
2021-12-17 07:25:05
嵌入式Linux系統(tǒng)的構(gòu)成和啟動過程
文章目錄一、嵌入式Linux系統(tǒng)構(gòu)成二、嵌入式Linux系統(tǒng)啟動過程在我們的周圍,大量的嵌入式設(shè)備都是基于Linux系統(tǒng)來構(gòu)建的,嵌入式Linux與主機(jī)Linux相比有著自己的一些特點(diǎn),本文就嵌入式
2021-12-16 06:20:24
求大佬分享關(guān)于N32926啟動過程
大家好,最近在使用n32926做網(wǎng)絡(luò)攝像頭功能,查閱了一下新塘的SDK發(fā)現(xiàn)沒有**介紹n32926的詳細(xì)啟動過程。之前用6410都是由uboot來引導(dǎo)linux 內(nèi)核,現(xiàn)在先想自己實(shí)現(xiàn)一個uboot類似功能的bootloader但是由于不了解n32926的啟動流程無從下手,請大神們援助。
2023-06-25 06:29:59
玩轉(zhuǎn)Zynq連載1——Zynq的linux啟動過程
`玩轉(zhuǎn)Zynq連載1——Zynq的linux啟動過程更多資料共享 鏈接:https://share.weiyun.com/5s6bA0s1概述 簡單的,以ug585中的一張圖來看,從大的方面說
2019-04-16 06:56:32
計算機(jī)開機(jī)啟動過程詳解 精選資料分享
計算機(jī)的開機(jī)啟動過程(1) 啟動過程總攬(二)詳細(xì)說明1、CPU 供電按下主機(jī)的電源鍵后,計算機(jī)開始啟動,為主板部分芯片和CPU進(jìn)行供電。主板上電后開始初始化其固件。固件是一些固化在芯片組上的程序
2021-07-23 09:18:14
講STM32H7的啟動過程
第13章 STM32H7啟動過程詳解本章教程主要跟大家講STM32H7的啟動過程,這里的啟動過程是指從CPU上電復(fù)位執(zhí)行第1條指令開始(匯編文件)到進(jìn)入C程序main()函數(shù)入口之間的部分。啟動過程相對來說還是比較重要的,理解了這個過程,...
2021-08-03 06:15:04
PXA272啟動引導(dǎo)程序的實(shí)現(xiàn)和功能擴(kuò)展
本文首先描述Linux 啟動引導(dǎo)程序的原理和基本功能。以PXA272 的開發(fā)板開發(fā)和調(diào)試過程中所實(shí)現(xiàn)的啟動引導(dǎo)程序?yàn)榛A(chǔ),詳細(xì)介紹基于PXA272 的啟動引導(dǎo)程序的結(jié)構(gòu)設(shè)計。最后介紹
2009-08-14 12:05:43
12

at91rm9200啟動過程教程
at91rm9200啟動過程教程
系統(tǒng)上電,檢測BMS,選擇系統(tǒng)的啟動方式,如果BMS為高電平,則系統(tǒng)從片內(nèi)ROM啟動。AT91RM9200的ROM上電后被映射到了0x0和0x100000處,在這兩
2010-03-08 15:57:14
44

Linux自啟動設(shè)置詳解
關(guān)于linux的啟動
2. 關(guān)于rc.d
3. 啟動腳本示例
4. 關(guān)于rc.local
5. 關(guān)于bash啟動腳本
6. 關(guān)于開機(jī)程序的自動啟動
2010-09-14 15:56:37
34

系統(tǒng)啟動過程
系統(tǒng)啟動過程系統(tǒng)啟動過程主要由一下幾步組成(以硬盤啟動為例):1. 開機(jī)2. BIOS 加電自檢 ( Power On Self Test -- POST ),內(nèi)存地址為 0ffff:00003. 將硬盤第一個
2009-10-11 12:17:26
2102

嵌入式uCLinux內(nèi)核啟動過程分析
分析uCLinux的啟動過程,可以加快系統(tǒng)啟動速度、正確建立應(yīng)用環(huán)境。本文要研究的就是uCLinux操作系統(tǒng)內(nèi)核的啟動過程。
2011-08-15 16:51:42
727

IC啟動過程及Vcc電壓波形的認(rèn)知
IC啟動過程及Vcc電壓波形的認(rèn)知IC啟動過程及Vcc電壓波形的認(rèn)知IC啟動過程及Vcc電壓波形的認(rèn)知IC啟動過程及Vcc電壓波形的認(rèn)知
2015-12-22 14:46:55
10

Windows XP 啟動過程詳解
我們每天都在和 Windows 打交道,很多人可能每天都要面對多次 Windows 的啟動過程,可是您知道在 Windows 的啟動過程背后,隱藏著什么秘密嗎?在這一系列過程中都用到了哪些重要的系統(tǒng)文件?系統(tǒng)的啟動分為幾個步驟?在這些步驟中計算機(jī)中發(fā)生了什么事情?這些就是本文告訴您的。
2016-11-10 18:24:15
11

國產(chǎn)300MW機(jī)組中壓缸啟動的特點(diǎn)及啟動過程
機(jī)組采用合理啟動方式對減小啟動過程中的壽命損耗、縮短機(jī)組啟動時間尤為重要。介紹了國產(chǎn)300 MW機(jī)組中壓缸啟動的特點(diǎn)及啟動過程,并提出了中壓缸啟動存在的一些問題。
2017-10-14 10:40:30
18

Linux基礎(chǔ)命令之Linux啟動過程詳解
2.2 Linux啟動過程詳解 在了解了Linux的常見命令之后,下面詳細(xì)講解Linux的啟動過程。Linux的啟動過程包含了Linux工作原理的精髓,而且在嵌入式開發(fā)過程中非常需要這方面的知識
2017-10-18 14:17:06
2

達(dá)芬奇數(shù)字媒體片上系統(tǒng)的架構(gòu)和Linux啟動過程
達(dá)芬奇數(shù)字媒體片上系統(tǒng)的架構(gòu)和Linux啟動過程
2017-10-21 09:53:18
6

linux內(nèi)核無法啟動
Linux在啟動過程中會出現(xiàn)一些故障,導(dǎo)致系統(tǒng)無法正常啟動,本文列舉了幾個應(yīng)用單用戶模式、GRUB命令操作、Linux救援模式的典型故障修復(fù)案例幫助讀者了解此類問題的解決。
2017-11-14 17:26:03
2600


pxe遠(yuǎn)程啟動過程分析
PXE是由Intel公司開發(fā)的最新技術(shù),工作于Client/Server的網(wǎng)絡(luò)模式,支持工作站通過網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器下載映像,并由此支持通過網(wǎng)絡(luò)啟動操作系統(tǒng),在啟動過程中,終端要求服務(wù)器分配IP地址,再用TFTP或MTFTP協(xié)議下載一個啟動軟件包到本機(jī)內(nèi)存中執(zhí)行
2017-11-20 16:25:57
7444


詳解bootloader的執(zhí)行流程與ARM Linux啟動過程分析
RM Linux啟動過程分析是本文要介紹的內(nèi)容,嵌入式 Linux 的可移植性使得我們可以在各種電子產(chǎn)品上看到它的身影。對于不同體系結(jié)構(gòu)的處理器來說Linux的啟動過程也有所不同。
本文
2017-12-21 09:24:53
10115


openwrt啟動過程詳細(xì)分析
OpenWrt是一個開放的linux平臺,主要用于帶wifi的無線路由上。類似于Ubuntu、Red Hat、之類的linux發(fā)行版本,它也有一套自己的啟動流程。本文主要介紹了openwrt啟動過程及詳細(xì)分析。
2017-12-27 09:17:39
12397


Linux系統(tǒng)開機(jī)和啟動過程
分別為iOS操作系統(tǒng),Android操作系統(tǒng)。而今天小編就給大家著重講講Linux系統(tǒng)開機(jī)和啟動過程。 內(nèi)核引導(dǎo) 當(dāng)計算機(jī)打開電源后,首先是BIOS開機(jī)自檢,按照BIOS中設(shè)置的啟動設(shè)備(通常是硬盤)來啟動。 操作系統(tǒng)接管硬件以后,首先讀入 /boot 目錄下的內(nèi)核
2018-07-09 11:53:15
1681

linux入門教程之簡單快速的了解linux
Linux的啟動其實(shí)和windows的啟動過程很類似,不過windows我們是無法看到啟動信息的,而linux啟動時我們會看到許多啟動信息,例如某個服務(wù)是否啟動。
Linux系統(tǒng)的啟動過程大體上可分為五部分:內(nèi)核的引導(dǎo);運(yùn)行init;系統(tǒng)初始化;建立終端 ;用戶登錄系統(tǒng)。
2018-10-19 17:46:32
15

Linux基礎(chǔ)教程之linux開機(jī)啟動oracle詳細(xì)程序資料說明
本文檔的主要內(nèi)容詳細(xì)介紹的是Linux基礎(chǔ)教程之linux開機(jī)啟動oracle詳細(xì)程序資料說明。
2018-10-26 15:12:03
12

走進(jìn)Linux之systemd啟動過程
Linux系統(tǒng)的啟動方式有點(diǎn)復(fù)雜,而且總是有需要優(yōu)化的地方。傳統(tǒng)的Linux系統(tǒng)啟動過程主要由著名的init進(jìn)程(也被稱為SysV init啟動系統(tǒng))處理,而基于init的啟動系統(tǒng)被認(rèn)為有效率不足
2019-04-27 19:14:00
2917

了解Linux系統(tǒng)的啟動過程
經(jīng)過對Linux系統(tǒng)有了一定了解和熟悉后,想對其更深層次的東西做進(jìn)一步探究。這當(dāng)中就包括系統(tǒng)的啟動流程、文件系統(tǒng)的組成結(jié)構(gòu)、基于動態(tài)庫和靜態(tài)庫的程序在執(zhí)行時的異同、協(xié)議棧的架構(gòu)和原理、驅(qū)動程序的機(jī)制等等。
2019-05-15 10:17:02
527

Linux 系統(tǒng)啟動過程分析
,有些地方分析不妥之處還請各位高手不吝賜教。OK,我們言歸正傳。對于一臺安裝了Linux系統(tǒng)的主機(jī)來說,當(dāng)用戶按下開機(jī)按鈕時,一共要經(jīng)歷以下幾個過程,如圖:其中,每個過程都執(zhí)行了自己該做的初始化部分
2019-04-02 14:32:33
295

一文知道MCU上電復(fù)位啟動過程
MCU上電(復(fù)位)時,從固定的地址啟動,一般是地址0x00000000,如ARM7;個別特殊的如STM32默認(rèn)啟動地址為0x8000000(flash區(qū)啟動)。啟動過程主要完成兩部分工作,一個是硬件執(zhí)行環(huán)境,如中斷向量表、寄存器、看門狗等,另一個是軟件環(huán)境,如C庫環(huán)境、ZI(未初始化的內(nèi)存變量)等。
2019-10-08 10:37:18
12073

分析STM32的三種上電啟動過程
上一篇文章我寫了STM32的RAM和Flash,文章最后我建議大家來深入研究一下STM32上電啟動過程。同時有小伙伴留言說想讓我講一下IAP(在線升級程序)。其實(shí)如果搞懂STM32的上電啟動過程,那么IAP就可以信手拈來了。下面我們一起來研究研究。
2020-05-03 18:03:00
7207

STM32的啟動過程是怎么樣的?
下好程序后,重啟芯片時,SYSCLK的第4個上升沿,BOOT引腳的值將被鎖存,這就是所謂的啟動過程。 STM32上電或者復(fù)位后,代碼區(qū)始終從0x00000000開始,其實(shí)就是將存儲空間的地址映射到0x00000000中。三種啟動模式如下: 從主閃存存儲器啟動,將主Flash地
2020-11-27 16:36:44
3309


BootLoader與MCU啟動過程
ARM之Cortex M3的啟動過程目前,多數(shù)MCU廠商都提供一個啟動文件。當(dāng)然,編程者也可以自己編寫啟動文件,具體編寫要求ARM的網(wǎng)站上都有相關(guān)文檔進(jìn)行說明。下面分析一下STM32啟動文件
2021-10-25 16:36:03
10

MCU和SOC啟動過程對比
:電源->Bootloader(引導(dǎo)操作系統(tǒng)啟動)->Linux內(nèi)核->文件系統(tǒng)(根據(jù)功能劃分,如div中是硬件,home是工作目錄,帶訪問權(quán)限)x86Intel 如winsows OS啟動過程:電源 ->BIOS-》windows內(nèi)核-》C、D盤->程序啟動(如Q
2021-10-25 19:21:06
7

嵌入式Linux操作系統(tǒng)引導(dǎo)加載程序BootLoarder
嵌入式Linux操作系統(tǒng)引導(dǎo)加載程序BootLoarderBootLoarder是什么Linux操作系統(tǒng)分層BootLoarderBootLoader操作模式BootLoader啟動過程
2021-11-01 17:05:50
8

單片機(jī)的啟動過程
啟動過程簡介單片機(jī)的啟動過程是加電后,先運(yùn)行芯片內(nèi)部固有程序(這個程序是用戶訪問不到也改寫不了的),即啟動代碼。啟動代碼程序建立完運(yùn)行環(huán)境后,會去讀串口狀態(tài),就是用戶下載程序用到的各個端口,判斷用戶
2021-11-17 10:21:03
8

單片機(jī)的啟動過程
啟動過程簡介單片機(jī)的啟動過程是加電后,先運(yùn)行芯片內(nèi)部固有程序(這個程序是用戶訪問不到也改寫不了的),即啟動代碼。啟動代碼程序建立完運(yùn)行環(huán)境后,會去讀串口狀態(tài),就是用戶下載程序用到的各個端口,判斷用戶
2021-11-19 12:06:07
54

【STM32F429開發(fā)板用戶手冊】第13章 STM32F429啟動過程詳解
【STM32F429開發(fā)板用戶手冊】第13章 STM32F429啟動過程詳解
2021-11-23 18:06:28
35

【STM32F407開發(fā)板用戶手冊】第13章 STM32F407啟動過程詳解
【STM32F407開發(fā)板用戶手冊】第13章 STM32F407啟動過程詳解
2021-11-23 18:06:29
70

stm32啟動過程
三個不同作用的空間在單片機(jī)里面占了三個空間,單片機(jī)引導(dǎo)哪個空間資源啟動,由BOOT1和BOOT0決定!正常來說一般是從flash啟動?。?!二、從flash啟動過程2.1 數(shù)據(jù)在堆棧中存儲方式啟動的程序是在sram上運(yùn)行?。∮幸粋€很關(guān)鍵數(shù)據(jù)結(jié)構(gòu)的知識點(diǎn),運(yùn)行時sarm會分成以下五個部分例如:#
2021-12-16 16:57:05
8

STM32啟動過程分析
1. 程序和數(shù)據(jù)在Flash和SRAM上的存儲結(jié)構(gòu)在講解 STM32 啟動過程之前,我們先來了解一下 STM32 的程序和數(shù)據(jù)在 Flash 和 SRAM 上到底是如何存儲的,因?yàn)橛辛诉@方面的知識
2021-12-23 19:55:45
11

linux內(nèi)核啟動過程會執(zhí)行用戶空間的init進(jìn)程
linux內(nèi)核啟動過程的后期,在kernel_init()函數(shù)代表的init線程中,會嘗試執(zhí)行用戶空間的init進(jìn)程
2022-10-14 09:12:28
711

美信cortex-m3內(nèi)核芯片的啟動過程及連接文件介紹
本文以美信cortex-m3內(nèi)核某型號芯片以及eclipse開發(fā)環(huán)境介紹芯片啟動過程以及連接文件。
2023-03-01 11:39:01
963


分析ARM Cortex-M內(nèi)核復(fù)位啟動過程
ARM Cortex-M內(nèi)核的復(fù)位啟動過程也被稱為復(fù)位序列(Reset sequence),下面就來簡要總結(jié)分析下這一過程。
2023-03-20 09:58:43
1567

ARMv7安全引導(dǎo)的過程
一樣使用BootLoader來引導(dǎo)Linux內(nèi)核和TEE OS。安全引導(dǎo)的啟動流程如圖下所示。 安全引導(dǎo)的啟動流程 系統(tǒng)啟動過程使用鏈?zhǔn)津?yàn)簽的方式進(jìn)行引導(dǎo),其中任何一環(huán)驗(yàn)簽失敗都會導(dǎo)致系統(tǒng)啟動失敗,為防止通過替換ramdisk來修改根文件系統(tǒng)中的內(nèi)容,一般將
2023-11-07 15:25:53
235


ATF的啟動過程介紹
ATF的啟動過程根據(jù)ARMv8的運(yùn)行模式(AArch32/AArch64)會有所不同,但基本一致。 在AArch32中是不會去加載bl31而是將EL3或者M(jìn)onitor模式的運(yùn)行代碼保存在bl32
2023-11-07 15:48:31
382


logd的啟動過程和內(nèi)容
logd作為native service,系統(tǒng)啟動過程通過讀取rc文件來啟動,相關(guān)的屬性定義在如下logd.rc文件中。 2.2.1 logd啟動過程 logd啟動后會存在三個用來服務(wù)日志系統(tǒng)
2023-11-23 16:54:44
279


stm32啟動過程詳解
STM32啟動過程詳解 近年來,STM32微控制器在嵌入式系統(tǒng)中的應(yīng)用越來越廣泛。STM32微控制器具有高性能、低功耗、易擴(kuò)展和豐富的外設(shè)接口等優(yōu)勢。而要讓STM32微控制器正常工作,首先要
2023-12-08 15:47:03
544

評論