Hi!大家好,我是CrazyCatJack。今天給大家?guī)?lái)的是Linux內(nèi)核啟動(dòng)過(guò)程概述。希望能夠幫助大家更好的理解Linux內(nèi)核的啟動(dòng),并且創(chuàng)造出自己的內(nèi)核^_^
Linux的啟動(dòng)代碼真的挺大,從匯編到C,從Makefile到LDS文件,需要理解的東西很多。畢竟Linux內(nèi)核是由很多人,花費(fèi)了巨大的時(shí)間和精力寫(xiě)出來(lái)的。而且直到現(xiàn)在,這個(gè)世界上仍然有成千上萬(wàn)的程序員在不斷完善Linux內(nèi)核的代碼。今天我們主要講解的是Linux-2.6.22.6這個(gè)內(nèi)核版本。說(shuō)句實(shí)話(huà),博主也不確定自己能夠講好今天這個(gè)題目,因?yàn)檫@個(gè)題目太大太難。但是博主有信心,將自己學(xué)會(huì)的內(nèi)容清楚地告訴大家,希望大家也能夠有所收獲。
1.啟動(dòng)文件head.S和head-common.S
首先,我們必須明確“我們?yōu)槭裁匆獑?dòng)Linux內(nèi)核”。沒(méi)錯(cuò),當(dāng)然是因?yàn)槲覀兿胍褂肔inux系統(tǒng),要明確我們的最終目的是使用Linux上的應(yīng)用程序。這些應(yīng)用程序可以是純軟件的,也可以是硬件相關(guān)的。博主是做嵌入式開(kāi)發(fā)的,那么我想要的當(dāng)然就是用Linux內(nèi)核來(lái)更好的控制我的硬件。無(wú)論是做機(jī)器人、無(wú)人機(jī)或者其他智能硬件這都是必然趨勢(shì)。首先我們來(lái)看內(nèi)核的啟動(dòng)文件head.S。
.section ".text.head", "ax" .type stext, %function ENTRY(stext) msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MODE @ ensure svc mode