1. 程式人生 > 其它 >瞭解linux 啟動流程

瞭解linux 啟動流程

1.vmlinux.lds 簡介

從arch/arm/kernel/vmlinux.lds分析Linux核心第一行啟動程式碼,入口函式在ENTRY(stext),

在arch/arm/kernel/head.S。入口函式是setex,image和zLmage是經過壓縮的,linux會先進行解壓縮,解壓縮完成以後就要執行linux核心,要求:
1.mmu關閉。2.D cache關閉。3.I cache無所謂。4.r0 = 0。 5.r1 machine nr。 6.r2 = atags or dtb pointer

2.start kernel函式

linux核心第二階段

  ->rest init

    ->kernel thread(kernel_init, NULL, CLOSE_FS) 建立kernel_init 執行緒, PID = 1。

     ->kernel_thread(kthreadadd, NULL,CLOSE_FS | CLOSE_FILES) 建立kthread程序,程序PID = 2。

    -> cpu_startup_entry 進入空閒程序,也就是主程序退化為空閒程序

燒寫到開發板 ps -A檢視程序 

3.kernel init程序

  ->kernel_init_freeable

    ->設定標準輸入,標準輸出,標準錯誤使用console,比如ttymxc0

    ->ramdisk_execute_command = "/init"

  ->檢查/init是否存在,存在的話就執行

 可以看出引出根檔案系統