瞭解linux 啟動流程
阿新 • • 發佈:2021-10-01
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是否存在,存在的話就執行
可以看出引出根檔案系統