看到大佬們都寫的這麼好,給大家收集一下:
Linux內核啓動分三個階段
1、解壓縮
2、檢查架構相關
3、start_kernel C 語言環境
關於以下幾篇文章一些名詞(我的理解)
1、鏈接地址 (虛擬地址) 這是一個虛擬地址,對於32位cpu(虛擬地址空間的範圍 0 - 4G)
通過arch/arm/kernel/vmlinux.lds中開始部分就可以看到
. = 0x80000000 + 0x00008000; 代碼段起始地址 這是一個虛擬地址
2、運行地址 (物理地址) 真實存在在DDR中的地址
在沒有開啓MMU之前,我們是不可能運行在虛擬地址空間上的,啓動之前,我們肯定需要在DDR中運行它
1、自解壓階段
ARM Linux啓動流程分析——內核自解壓階段 實例方式講解
ARM linux解析之壓縮內核zImage的啓動過程 這個很厲害
ARM Linux 3.10.61 的啓動 —— (一)解壓縮階段 這個有很多圖的
2、跟架構檢查相關的