<strike id="xh1ss"><address id="xh1ss"></address></strike>
  1. <legend id="xh1ss"></legend>
  2. 更多課程 選擇中心

    嵌入式培訓
    達內IT學院

    400-111-8989

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

    • 發布:嵌入式培訓
    • 來源:嵌入式資訊
    • 時間:2020-06-19 14:45

    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目錄上,將來可以再裝到合適的文件系統上。或者被移植到目標機上。

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

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

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:嵌入式linux開發運行基本流程
    下一篇:想學好嵌入式都要學習哪些基礎?

    單片機:寫1清零,寫0清零,有什么區別?

    嵌入式工程師一定不要亂用全局變量

    嵌入式培訓靠譜嗎?就業怎么樣?

    新手如何學習單片機?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    黄色一级全祼,欧美一级aa片,一级毛卡片,一级特黄大片,三级片视频 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>