linux系統從軟體的角度分為4部分
1.引導引導程式
2.linux核心
3.檔案系統
4.應用程式
其中bootloader是系統啟動或復位以後執行的第一段**。主要用於初始化處理器及外設然後呼叫linux核心。
bootloader的概念和作用
bootloader是嵌入式系統的引導引導程式,它是系統上電後執行的第一段程式。
完成對系統的初始化任務之後,它會將非易失性儲存器中的linux 核心拷貝到ram中去,然後跳轉到核心的第一條指令處繼續執行,從而啟動 linux 核心。
bootloader的執行過程
由於儲存bootloader的儲存器不同,因而bootloader的執行過程並不相同。
嵌入式系統中廣泛採用的非易失性儲存器通常是flash,而flash又分為nor flash和nand flash兩種。nor flash支援晶元內執行(xip,execute in place)。而nand flash並不支援xip,所以要執行nand flash上的**,必須將其拷貝到ram中去,然後跳到ram中去執行。
bootloader的功能
所有的bootloader都具備以下功能:
1.初始化ram
2.初始化串列埠
3.檢測處理器型別
4.設定linux啟動引數
5.呼叫linux核心映像
linux啟動過程
在bootloader將linux核心映像拷貝到ram以後,可以通過下例**啟動linux 核心:
call_linux(0, machine_type, kernel_params_base)
其中machine_tpye 是bootloader檢測出來的處理器型別,kernel_params_base 是啟動引數在 ram的位址。通過這種方式將 linux啟動。需要的引數從 bootloader傳遞到核心。
linux核心有兩種映像,一種是非壓縮核心,叫image,另一種是他的壓縮版本,zimage。
對於arm系列的處理器來說,zimage的入口程式即為arch/arm/boot/compressed/head.s。它依次完成以下工作:
開啟 mmu 和 cache
呼叫 decompress_kernel()解壓核心
通過呼叫 call_kernel()進入非壓縮核心image的啟動
linux核心入口
linux 非壓縮核心的入口位於檔案/arch/arm/kernel/head-armv.s 中的stext 段
start_kernel函式
start_kernel是所有linux平台進入系統核心初始化後的入口函式。它主要完成剩餘的與硬體平台相關的初始化工作。在進行一系列與核心相關的初始化後,呼叫第乙個使用者程序-init 程序並等待使用者程序的執行,這樣整個 linux 核心便啟動完畢。
根檔案系統預備知識
bin :存放所有使用者都可以使用的基本命令
sbin :存放的是基本的系統命令,用於啟動系統修復系統
usr :存放的是共享、唯讀的程式和資料
proc:空目錄,常作為proc檔案系統的掛載點
dev:該目錄存放裝置檔案和其它特殊檔案
etc:存放系統配置檔案包括啟動檔案
lib:存放共享庫和可載入塊,共享庫用於啟動系統、執行根檔案系統中的可執行程式
boot:引導架子啊程式所使用的靜態檔案
home:使用者主目錄
mnt:用於臨時掛載某個檔案系統的掛接點,通常是空目錄。也可以在裡面建立空的子目錄。
opt:給主機額外安裝軟體做擺放的目錄
root:root使用者的主目錄
tmp:存放臨時檔案,通常是空目錄
var:存放可變的資料
linux系統啟動
本文簡單介紹一下從我們按開機鍵到可以登入系統,這段時間系統和電腦硬體是怎麼一起工作的。既做為對自己知識的乙個總結整理,也可以給linux初級使用者做乙個入門介紹,高手請略過。一般來說linux的啟動可以分成三個階段 bios階段,系統引導階段,系統啟動階段。一 bios階段 bios 基本輸入輸出系...
linux系統啟動
本文簡單介紹一下從我們按開機鍵到可以登入系統,這段時間系統和電腦硬體是怎麼一起工作的。既做為對自己知識的乙個總結整理,也可以給linux初級使用者做乙個入門介紹,高手請略過。一般來說linux的啟動可以分成三個階段 bios階段,系統引導階段,系統啟動階段。一 bios階段 bios 基本輸入輸出系...
Linux系統啟動
1.系統啟動流程大概 1 啟動bios 2 mbr中的引導 bootcode 3 執行引導程式 linux中用的最多的是grub 引導程式的主要作用是用來載入核心 4 載入系統核心 5 執行init 6 runlevel init根據當前預設的執行級別來啟動相關的程式及裝置 2.bios basic...