Linux系統啟動筆記

2021-07-02 12:23:03 字數 1834 閱讀 3642

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...