1 解壓縮、打補丁操作 1.1 打開ubuntu,通過FTP將windows相應文件夾下的linux-2.6.22.6.tar.bz2和補丁文件linux-2.6.22.6-jz2440.patch上傳到伺服器/work/hardware目錄下 1.2 輸入cd /work/hardware 進入壓 ...
1 解壓縮、打補丁操作
1.1 打開ubuntu,通過FTP將windows相應文件夾下的linux-2.6.22.6.tar.bz2和補丁文件linux-2.6.22.6-jz2440.patch上傳到伺服器/work/hardware目錄下
1.2 輸入cd /work/hardware 進入壓縮包所在目錄,再使用 tar xjf linux-2.6.22.6tar.bz2 命令對linux內核源碼壓縮包進行解壓縮
1.3 輸入cd /linux-2.6.22.6 進入解壓縮後內核的源碼目錄,執行 patch -p1 < ../linux-2.6.22.6-jz2440.patch 命令對內核進行打補丁操作
2 內核的配置(3種方法)
在進行介紹三種內核配置方法之前先說明在我電腦編譯環境下,執行meke menuconfig命令遇到的問題。我使用的虛擬機版本是Ubuntu-16.04.2,GNU Make的版本是4.1(在linux環境下輸入make -v可以查看GNU Make版本信息),遇到編譯問題如下圖:
網上搜索找到了報錯原因,因為所編譯linux-2.6.22.6內核版本比較舊,而我使用的GNU Make版本較新,新版本可能對於make的規則可能做出了一些修改,所以出現了上面的錯誤提示,因此需要對內核頂層的Makefile文件做出如下修改:
linux-2.6.22.6內核根目錄下,輸入 vi Makefile 命令,輸入 416gg 快速定位到416行,看到如下代碼:
這裡需要修改為
然後是提示的1449行
這裡需要修改為
完成後繼續執行 make menuconfig 命令即可看到配置順利進行。
2.1 直接執行 make menuconfig 命令,從頭到尾每一項都自己去配置
執行make menuconfig命令後,裡面有成千上萬種配置選項,需要一個一個去配置,顯然操作十分複雜。
2.2 使用預設配置,在預設配置基礎上進行修改
先用cd命令切換到linux-2.3.22.6內核存放根目錄下,再進行預設配置文件的查找。這裡我們可以通過 find -name "*defconfig*" 命令實現查找操作,這條命令查找所有帶"defconfig"字元串的文件夾路徑。查找結果如下,可以看到帶"def_config"字元串的配置文件都在arch架構目錄下存放。
我們的開發板使用的晶元屬於arm架構,所以通過cd ./arch/arm/configs 進入configs目錄尋找和開發板使用晶元相似的配置文件。進入目標文件夾後使用 ls 命令來列出該文價夾下包含的配置文件,該目錄下包含的配置文件如下圖所示:
通過上面查找結果可以看到,與2440相似的配置只有s3c2410_defconfig文件了,這裡我們先返回存放linux-2.6.22.6內核的根目錄,然後運行 make s3c2410_defconfig 命令來進行配置,配置結果如下圖所示:
配置完後列印結果"configuration written to .config",表示所有的配置信息都寫入到了.config文件中,執行make menuconfig 命令就是回去讀取.config文件內容。
2.3 使用廠家提供的配置文件
jz2440出廠時,廠家提供了相應的配置文件config_ok,在打補丁時已經存放到內核的目錄下。由上面的介紹,我們知道執行make menuconfig 命令就是去讀取.config內容,若想使用廠家提供配置文件,只需要把廠家提供配置文件內容複製到.config文件中。使用cd命令切換到linux-2.3.22.6內核存放目錄下,使用 cp config_ok .config 命令就能把實現前面所敘述操作。
2.4 執行make menuconfig 配置菜單
菜單操作命令如下表所述:
Arrow keys navigate the menu | 鍵盤上下鍵可以控制菜單上下移動,左右鍵可以控制水平三個菜單移動 |
<Enter> selects submenus ---> | 按下鍵盤Enter(回車鍵)可以進入該項菜單子目錄 |
Highlighted letters are hotkeys | 開頭為粗體字母代表是該項菜單熱鍵,在鍵盤上按下相應字母,游標定位到該處 |
Pressing <Y> includes | Y鍵,編譯到內核中 |
<N> excludes | N鍵,不編譯到內核中 |
<M> modularizes features | M鍵,進行模塊化 |
Press <Esc><Esc> to exit | Esc鍵退出 |
<?> for Help | ?鍵幫助 |
</> for Search | /鍵收索 |
Legend: | 顯示 |
[*] built-in | 已經內置到內核中 |
[ ] excluded | 不編譯到內核中 |
<M> module | 已經模塊化 |
< > module capable | 表示該選項可以模塊化 |
3 編譯
3.1 輸入 make 命令直接進行編譯
3.2 輸入 make uImage命令生成uImage形式內核文件,uImage文件包含頭部和真正內核部分,可以燒寫進去讓uboot直接使用。編譯uImage文件時必須把編譯uboot得到的mkimage工具複製到/user/bin目錄中。
3.3 運行uboot,按下命令鍵k可以通過dnw軟體把uImage文件傳給uboot,uboot再清除flash,把uImage文件寫入到flash中。
4 啟動內核
4.1 通過uboot燒寫uImage形式內核文件完成後,可以通過菜單鍵中b鍵重啟內核,註意flash中存儲有完整文件系統時內核才能啟動成功,否則內核啟動會卡在某一位置。