廈門IT培訓
美國上市IT培訓機構

13429669395

熱門課程

嵌入式linux內核是怎樣編譯出來的?

  • 時間:2020-07-08 11:07
  • 發布:廈門達內IT培訓
  • 來源:疑難解答

Linux內核模塊是一種可被動態加載和卸載的可執行程序。通過內核模塊可以擴展內核功能,內核模塊通常用于設備驅動、文件系統等。如果沒有內核模塊,需要向內核添加功能就需要自發代碼、重新編譯內核、安裝新內核等步驟。

1、在編譯內核時的工作路徑

可以在任何路徑下編譯內核,如$HOME,但是絕對不推薦在/usr/local/linux下

2、內核版本

首先決定你要采用的內核的版本。大部分人都會選擇最新的穩定版內核,內核的開發者釋出的內核版本可按說明方式進行辨別確認。

3、下載內核維護者維護的特定補丁

(僅適用于采用早于2.6.0-test2的內核,之后版本的內核不再需要打arm的補丁)你應該選擇下載最新的補丁,因為它可以修正更多的Bug并且包含最多的特性。

4、下載內核源文件

下載自己所需的內核文件。

5、解壓并且安裝補丁

到Linux內核文件Linux-2.*.*.tar.gz和補丁文件patch-2.*.*.gz所在路徑$HOME

tar xzvf Linux-2.*.*.tar.gz 生成linux-2.*.* 的目錄

cd linux-2.*.*

zcat ../patch-2.*.*.gz | patch -p1即可

6、配置內核的編譯環境

通常情況下,內核編譯系統會按宿主機架構編譯生成內核。但這在交叉編譯時是不使用的,所以我們需要在Makefile里的修改兩行內容:

ARCH ?=$(SUBARCH)

CROSS_COMPILE ?=

改為:

ARCH= ?=arm

CROSS_COMPILE ?=/usr/local/bin/arm-linux-

或者把/usr/local/bin/arm-linux-替換為你的ARM工具鏈所在的路徑。

到此完成內核Makefile的配置。下一步將進行內核的配置并選擇你的平臺所需要的驅動。

7、配置內核

輸入命令:make menuconfig或make xconfig進行配置,選擇你的相應的硬件驅動,或者你可以選者裝載別的已經作好的配置文件。配置完成后保存配置文件退出。

8、編譯內核

輸入命令:

make clean

make zImage

make modules

后兩步用來編譯內核和內核模塊,在2.6的內核中,不必再make dep;編譯成功后將在$HOME/linux2.*.*/arch/arm/boot/下生成zImage內核景象文件,在當前目錄下生成System.map

接下來的步驟取決于你是否采用交叉編譯,如果是,你可以跳到第10步--“安裝交叉編譯的內核”,如果你是為宿主機編譯內核繼續看第9步。

9、安裝本地內核

此步需要root權限。在安裝內核時強烈建議先備份你目前的內核和模塊。

cd /lib/modules

mv 2.*.*.rmk* 2.*.*.rmk*.old

cd /boot

mv vmlinuz vmlinuz.bak

mv System.map System.map.bak

完成備份后即可進行安裝,到你編譯內核的工作路徑下

make modules_install

將會把模塊復制到/lib/modules/x.y.z路徑下。

接下來安裝可執行的Linux內核鏡象(一般是安裝在/boot下)cat ./arch/arm/boot/zImage > /boot/vmlinuz或者cp ./arch/arm/boot/zImage > /boot/vmlinuz?;蛘呖梢宰鲆粋€符號連接亦可:

cp System.map /boot

注:之所以用 cat ./arch/arm/boot/zImage > /boot/vmlinuz是因為傳統上Unix不會為包含0數據的文件段在文件系統里分配空間,而是采用在文件里產生“孔”的方式。有些內核裝載工具并不明白含有孔的文件,所以用cat可以避免此類意外發生。

10、安裝交叉編譯的內核

內核模塊是被安裝到目標系統的/lib/modules/x.y.z目錄下的,通常情況下和宿主機上的目錄不同。這個安裝目錄在哪里取決于你的設置,但是可統稱為$TARGETDIR

安裝模塊到$TARGETDIR的命令如下:

make modules_isntall INSTALL_MOD_PATH=$TARGETDIR

此步將會把模塊安裝到宿主機的$TARGETDIR/lib/modules/x.y.z目錄上,將來可以再裝到合適的文件系統上?;蛘弑灰浦驳侥繕藱C上。

注:一定不要把這些模塊安裝到你主機的根文件系統上,(比如省略INSTALL—MOD—PATH,或者把$TARGET改為/)。因為如果這些為目標平臺編譯的模塊和你的主機內核是兼容的,因此將可能造成系統不能啟動。

最后,達內嵌入式培訓機構提醒每一個it愛好者:如果你想要在短時間內快速入門,順利掌握一門技術,建議還是認真學習視頻。多練習,多動手。

預約申請免費試聽課

怕錢不夠?就業掙錢后再付學費!    怕學不會?從入學起,達內定制課程!     擔心就業?達內多家實踐企業供你挑選!

上一篇:想學好嵌入式都要學習哪些基礎?
下一篇:沒有下一篇了

想學好嵌入式都要學習哪些基礎?

如何理解嵌入式系統開發

DSP是什么?跟嵌入式有什么關系?

嵌入式軟件開發主要學什么?推薦路線

選擇城市和中心
江西省

貴州省

廣西省

海南省

深夜办公室完整版在线观看