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

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

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

給予腳本權限,直至腳本變綠,如下:

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

3、內核的使用
先設置交叉編譯工具變量,進入頂層Makefile中設置如下:

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