在linux中,內(nèi)核移植是指將程序代碼從一種硬件平臺(tái)轉(zhuǎn)移到另一種硬件平臺(tái)上運(yùn)行;移植是根據(jù)用戶自己選擇的硬件平臺(tái)來(lái)重新編譯內(nèi)核支持對(duì)應(yīng)的硬件,使之可以在該硬件平臺(tái)上運(yùn)行,如果缺少相應(yīng)的硬件驅(qū)動(dòng)程序或其他內(nèi)核模塊,可以自己進(jìn)行相應(yīng)的開(kāi)發(fā)加入到內(nèi)核中一起編譯最終實(shí)現(xiàn)對(duì)硬件的支持。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
linux內(nèi)核移植是什么
所謂移植就是把程序代碼從一種運(yùn)行環(huán)境轉(zhuǎn)移到另一種運(yùn)行環(huán)境。對(duì)于內(nèi)核移植來(lái)說(shuō),主要是從一種硬件平臺(tái)轉(zhuǎn)移到另一種硬件平臺(tái)上運(yùn)行。
內(nèi)核移植就是根據(jù)你自己選擇的硬件平臺(tái)來(lái)重新編譯內(nèi)核支持對(duì)應(yīng)的硬件,使之可以在該硬件平臺(tái)上運(yùn)行,如果缺少相應(yīng)的硬件驅(qū)動(dòng)程序或其他內(nèi)核模塊,可以自己進(jìn)行相應(yīng)的開(kāi)發(fā)加入到內(nèi)核中一起編譯最終實(shí)現(xiàn)對(duì)硬件的支持。
內(nèi)核的來(lái)由
linux是一種開(kāi)源的電腦操作系統(tǒng)內(nèi)核。主要是由C語(yǔ)言寫(xiě)成的,既然是開(kāi)源,那參與開(kāi)發(fā)和維護(hù)的人這肯定很多,Linux發(fā)展這么快也是因?yàn)槠溟_(kāi)源的緣故,用的人多,發(fā)現(xiàn)的問(wèn)題多,覺(jué)得不好用就被某個(gè)大神優(yōu)化了。Linux內(nèi)核的主要模塊(或組件)分以下幾個(gè)部分:存儲(chǔ)管理、CPU和進(jìn)程管理、文件系統(tǒng)、設(shè)備管理和驅(qū)動(dòng)、網(wǎng)絡(luò)通信,以及系統(tǒng)的初始化(引導(dǎo))、系統(tǒng)調(diào)用等。
Linux最早是由芬蘭人Linus Torvalds設(shè)計(jì)的。當(dāng)時(shí)由于UNⅨ的商業(yè)化,Andrew Tannebaum教授開(kāi)發(fā)了Minix操作系統(tǒng)以便于不受AT&T許可協(xié)議的約束,為教學(xué)科研提供一個(gè)操作系統(tǒng)。當(dāng)時(shí)發(fā)布在Internet上,免費(fèi)給全世界的學(xué)生使用。話不多說(shuō),我們直接進(jìn)入主題。
如何進(jìn)行內(nèi)核移植
1、版本與下載
linux從1991年開(kāi)始到發(fā)展到現(xiàn)在,版本變成什么樣了?相信大家也都想知道,那么在哪里看以及在哪里下載呢?小編為大家準(zhǔn)備了內(nèi)核的下載網(wǎng)址:https://www.kernel.org/,直接點(diǎn)擊進(jìn)去就可以看到了,界面如下:

現(xiàn)在穩(wěn)定版已經(jīng)到了5.16.12版本了,大家可以把穩(wěn)定版本下載下來(lái),但是不建議下載最新的,因?yàn)椴环€(wěn)定,帶來(lái)的體驗(yàn)肯定不好。版本之間區(qū)別不是很大,可能新版本加入了一些新平臺(tái)或者新的外部驅(qū)動(dòng)罷了。
2、內(nèi)核的移植
在編譯源碼之前先安裝lzop庫(kù),否則編譯失敗:
sudo apt-get install lzop
把下載下來(lái)的內(nèi)核源碼及進(jìn)行解壓,命令如下:
tar jxvf linux-imx-rel_imx_4.1.15_2.1.0_ga.tar.bz2
得出如下文件:

創(chuàng)建shell腳本,并輸入如下編譯命令:

給予腳本權(quán)限,直至腳本變綠,如下:

./mx6ull_nand.sh編譯程序,出現(xiàn)圖形界面可以先不去配置,直接exit退出,繼續(xù)等待編譯完成(內(nèi)核編譯需要的時(shí)間較長(zhǎng),建議大家準(zhǔn)備好瓜子)。編譯完成以后就會(huì)在 arch/arm/boot 這個(gè)目錄下生成一個(gè)叫做 zImage 的文件,zImage 就是我們要用的 Linux 鏡像文件。另外也會(huì)在 arch/arm/boot/dts 下生成很多.dtb 文件,這些.dtb 就是設(shè)備樹(shù)文件。后面做驅(qū)動(dòng)開(kāi)發(fā)的時(shí)候會(huì)經(jīng)常跟這些.dts文件打交道的,編譯之后的文件如下:

3、內(nèi)核的使用
先設(shè)置交叉編譯工具變量,進(jìn)入頂層Makefile中設(shè)置如下:

使用如下命令編譯Linux:
make xxx_defconfig //使用默認(rèn)配置文件配置 Linux make menuconfig //啟動(dòng)圖形化配置界面 make -j2 //編譯 Linux
至此,Linux內(nèi)核部分就給大家分享到這里了,動(dòng)手操作起來(lái)吧。