由于嵌入式系統(tǒng)是針對(duì)特定應(yīng)用的,而且資源有限,所以標(biāo)準(zhǔn)Linux無(wú)法應(yīng)用到嵌入式系統(tǒng)中,因此必須根據(jù)實(shí)際情況對(duì)Linux進(jìn)行裁剪、配置,從而產(chǎn)生一個(gè)適用的嵌入式Linux操作系統(tǒng)。下面粵嵌重慶Linux學(xué)習(xí)分享一下Linux內(nèi)核移植的方法到底有哪些?
Linux內(nèi)核編譯。內(nèi)核,是一個(gè)操作系統(tǒng)的核心。它負(fù)責(zé)管理系統(tǒng)的進(jìn)程、內(nèi)存、設(shè)備驅(qū)動(dòng)程序、文件和網(wǎng)絡(luò)系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性。Linux作為一個(gè)自由軟件,在廣大愛(ài)好者的支持下,內(nèi)核版本不斷更新。新的內(nèi)核修訂了舊內(nèi)核的bug,并增加了許多新的特性。如果用戶想要使用這些新特性,或想根據(jù)自己的系統(tǒng)度身定制一個(gè)更高效,更穩(wěn)定的內(nèi)核,就需要重新編譯內(nèi)核。簡(jiǎn)單的說(shuō)一下,咱們?cè)谶@里的移植是屬于板級(jí)的移植,一般來(lái)說(shuō)移植操作系統(tǒng)分為:體系結(jié)構(gòu)級(jí)的移植、soc級(jí)的移植和板級(jí)的移植。板級(jí)的移植是簡(jiǎn)單的,往往是在芯片制作廠商提供的樣板的基礎(chǔ)上做移植。
下載新內(nèi)核的源代碼。目前,在Internet上提供Linux源代碼的站點(diǎn)有很多,讀者可以選擇一個(gè)速度較快的站點(diǎn)下載;釋放內(nèi)核源代碼。由于源代碼放在一個(gè)壓縮文件中,因此在配置內(nèi)核之前,要先將源代碼釋放到指定的目錄下;燒寫(xiě)啟動(dòng)文件。要移植操作系統(tǒng),肯定是需要啟動(dòng)代碼了,也就是u-boot了。首先把.bin文件拷貝到Linux系統(tǒng)中,隨便在一個(gè)文件夾下就行。下來(lái)就是往sd里燒寫(xiě)了,當(dāng)然了sd是必須的嘛。這里給個(gè)插曲,把sd插到電腦后,windows下發(fā)現(xiàn)了,但虛擬里的Linux系統(tǒng)發(fā)現(xiàn)不了,后來(lái)是通過(guò)這么解決的。當(dāng)然這是在發(fā)現(xiàn)不了sd的情況下才這樣滴,而且可能跟虛擬機(jī)和主機(jī)上的Linux系統(tǒng)有關(guān),環(huán)境不一樣可能會(huì)不同。
當(dāng)然Linux內(nèi)核的移植包括獲取源代碼、修改設(shè)置、裁減配置和編譯。一方面,獲取源代碼。Linux內(nèi)核源代碼一般都有專門(mén)的機(jī)構(gòu)負(fù)責(zé)維護(hù),我們可以從這些機(jī)構(gòu)的網(wǎng)站上下載下來(lái)使用。嵌入式系統(tǒng)的應(yīng)用的針對(duì)性很強(qiáng),從站點(diǎn)上下載下來(lái)的內(nèi)核不可能包含針對(duì)所有嵌入式系統(tǒng)的代碼,因此需要對(duì)代碼進(jìn)行修改設(shè)置,從而適合目標(biāo)平臺(tái)。一般包含下面幾步。編寫(xiě)與處理器相關(guān)的代碼。主要包括時(shí)鐘設(shè)置、中斷設(shè)置、存儲(chǔ)器分配及其他一些寄存器的設(shè)置等等。
另一方面,裁減配置及編譯。修改完內(nèi)核設(shè)置后,就可以對(duì)內(nèi)核進(jìn)行裁減配置及編譯了,在配置中剪裁掉冗余的部分,使編譯生成的終的內(nèi)核的映像文件代碼量盡可能小。
對(duì)于粵嵌重慶Linux學(xué)習(xí)為你分享的Linux內(nèi)核移植的方法,希望能幫助到大家學(xué)習(xí)Linux。總之,在我們的學(xué)習(xí)中,邁出一小步之后稍停片刻看看學(xué)到了什么,不要盲目學(xué)習(xí),而要善于總結(jié)反思。