|
3.1 本章導(dǎo)讀
Linux 驅(qū)動(dòng)工程師一定要掌握 Linux 內(nèi)核的編譯方法,也就是將 Linux 內(nèi)核源碼,編譯成針對特定硬件的二進(jìn)制鏡像。
在前面入門視頻“01-燒寫、編譯以及基礎(chǔ)知識(shí)視頻”→“實(shí)驗(yàn) 10-搭建編譯環(huán)境uboot_linux_Android”中,簡單的介紹過如何將 Linux 源碼編譯生成二進(jìn)制 zImage在本章中,將更加詳細(xì)的介紹這部分內(nèi)容,然后介紹 Kconfig 配置文件,Kconfig 文件是和編譯的 Makemenuconfig 工具配合使用的。最后還需要掌握“.config”文件的作用。
3.1.1 工具
3.1.1.1 硬件工具
1)PC 機(jī)
3.1.1.2 軟件工具
1)虛擬機(jī) Vmware
2)Ubuntu12.04.2
3)Ubuntu 系統(tǒng)下解壓生成的 Linux 源碼
3.1.2 預(yù)備課程
入門視頻“01-燒寫、編譯以及基礎(chǔ)知識(shí)視頻”→“實(shí)驗(yàn) 10-搭建編譯環(huán)境uboot_linux_Android”或者使用手冊“五 Android 開發(fā)環(huán)境搭建以及編譯”
3.1.3 視頻資源
本節(jié)配套視頻為“視頻 03_Menuconfig_Kconfig”
3.2 學(xué)習(xí)目標(biāo)
本章需要學(xué)習(xí)以下內(nèi)容:
掌握 Menuconfig 的用法
理解 Kconfig 文件并掌握修改 Kconfig 的方法
理解配置文件“.config”
Linux 內(nèi)核配置裁減
3.3 Linux 內(nèi)核配置系統(tǒng)
Linux 內(nèi)核配置系統(tǒng)由三個(gè)部分組成。
Makefile 文件:分布在 Linux 內(nèi)核源碼中的 Makefile 文件,定義了 Linux 內(nèi)核的編譯規(guī)則。
Kconfig 文件:給用戶提供配置選擇的功能。
配置工具:這里使用的是 menuconfig,相比其它工具,這個(gè)工具使用的比較多,也比較
容易上手,無論哪個(gè)機(jī)構(gòu)發(fā)布的 Linux 版本應(yīng)該都是支持 menuconfig 的。
3.4 Menuconfig 的操作
Linux 的裁減配置是通過 menuconfig 工具來實(shí)現(xiàn)的,本節(jié)介紹如何使用這個(gè)工具。
3.4.1 Menuconfig 發(fā)展歷史簡介
在 Linux 發(fā)展過程中,配置內(nèi)核可以使用以下工具。
#make config
這是基于文本的最為傳統(tǒng)的配置界面,不推薦使用
#make menuconfig
基于文本菜單的配置界面,現(xiàn)在大部分都是使用這個(gè)工具來裁減配置內(nèi)核的,本章節(jié)也是
介紹這種方法。
#make xconfig
要求 QT 被安裝,用的比較少。
#make gconfig
要求 GTK,用的比較少。
上面不同的命令代表使用不同的工具,如下圖所示,在源碼目錄下,輸入命令“make
config”。 ![]()
如上圖所示,這是一個(gè)文本類型的配置工具,根據(jù)提示“scripts/kconfig/conf --oldaskconfig Kconfig”可以知道,這種方法是舊的配置方法,雖然 Linux 內(nèi)核可能會(huì)長時(shí)間的支持,但是不人性化的操作方式,會(huì)降低效率,所以現(xiàn)在幾乎淘汰了。
使用“Ctrl+c”可以退出配置界面,退出后,如下圖所示。
![]()
3.4.2 Menuconfig 操作方法
前面實(shí)驗(yàn)提到過 menuconfig 實(shí)現(xiàn)的代碼在源碼“scripts”目錄下,不過這里根本不用關(guān)心它是怎么實(shí)現(xiàn)的,只需要掌握怎么操作即可,就像學(xué)習(xí)開車,要知道怎么打方向盤,而不需要知道方向盤和輪子之間是怎么傳動(dòng)的。
下面介紹 menuconfig 的操作方法。
如下圖所示,在源碼目錄下,輸入命令“make Menuconfig”。
![]()
如下圖所示,進(jìn)入配置界面。這個(gè)功能界面對應(yīng)配置工具,它包含配置命令解釋器,對配置腳本中使用的命令進(jìn)行解釋;還包含了配置用戶界面,用來提供字符界面和圖形界面。這些配置工具都是使用腳本語言編寫的,不過只用關(guān)心怎么使用。
![]()
如下圖所示,“方向按鍵”中的“左右”可以選擇你需要的操作。“
![]()
如下圖所示,“方向按鍵”中的“上下”可以選擇配置的選項(xiàng)。
![]()
如下圖所示,輸入“/”,可以進(jìn)入搜索界面。
![]()
如下圖所示,這里來查找一下“l(fā)eds”的驅(qū)動(dòng),輸入“l(fā)eds”,然后按“回車”。
![]()
如下圖所示,發(fā)現(xiàn)很多配置都是“=n”,通過方向按鍵,控制向下翻頁,然后觀察那個(gè)選項(xiàng)配置成了“=y”。
![]()
如下圖所示,這里可以看到這個(gè) leds 驅(qū)動(dòng)的目錄“Device Drivers”“Characterdevices”。
![]()
然后,根據(jù)查找出來的信息,找到對應(yīng)的 leds 驅(qū)動(dòng)。如下圖,返回配置界面。找到“Device Drivers”目錄。輸入“回車”。
![]()
如下圖所示,進(jìn)入“Device Drivers”對應(yīng)的配置界面。
![]()
然后,如下圖所示,找到“Character devices”,輸入“回車”。
![]()
如下圖所示,進(jìn)入“Character devices”配置界面。
![]()
如下圖所示,“Enable LEDS config”找到對應(yīng)的 leds 驅(qū)動(dòng)配置選項(xiàng)。缺省配置文件里,這個(gè)已經(jīng)選上了。
![]()
單擊“空格”鍵后,去掉 leds 驅(qū)動(dòng)選項(xiàng)。
![]()
再次敲擊“空格”,選上 leds 驅(qū)動(dòng)的選項(xiàng)。
![]()
然后,選上“Exit”,如下圖所示,輸入“回車”。
![]()
如下圖所示,繼續(xù)退出。
![]()
如下圖所示,繼續(xù)退出。
![]()
如下圖所示,因?yàn)樾薷倪^配置選項(xiàng),所以退出的時(shí)候會(huì)提醒“是否保存新的配置”。
![]()
如下圖所示,因?yàn)榈谝淮尾僮鳎瑩?dān)心用戶在無意間動(dòng)了某個(gè)配置選項(xiàng),編譯后無法啟動(dòng),建議選擇“No”,不保存退出。
![]()
到這里,整個(gè) Menuconfig 配置的操作以及流程就完全介紹完了。如果修改了配置文件,如下圖所示的“.config”文件就會(huì)被修改。再次編譯內(nèi)核的時(shí)候,系統(tǒng)會(huì)根據(jù)新的config 文件來編譯整個(gè)內(nèi)核。
內(nèi)核的配置非常多,大家可以看一下使用手冊 9.4 小節(jié),里面有詳細(xì)的介紹。
![]()
iTOP4412開發(fā)板項(xiàng)目實(shí)戰(zhàn):
1.云服務(wù)器只能家居 2.門禁系統(tǒng) 3.WEB服務(wù)及遠(yuǎn)程控制 4.智能網(wǎng)關(guān) 5.手機(jī)遠(yuǎn)程控制開發(fā)板 6.圖像識(shí)別 7.機(jī)車導(dǎo)航項(xiàng)目 8.Zigbee智能家居
學(xué)習(xí)資料:2300頁教程+300期配套視頻教程
|