1.內核、補丁文件下載,解壓縮,打補丁
patch -px < xx.patch
2.配置
2.1配置文件
- 如果.config不存在,運行make config(字符型)/menuconfig(菜單型)時的缺省設置由固化在各個Kconfig文件中各項目的缺省值決定。
- 如果.config存在,運行make config/menuconfig時的缺省設置即是當前.config的設置,若對設置進行了修改,.config將被更新。
- arch/arm/defconfig是一個缺省的配置文件,make defconfig時會根據這個文件生成當前的.config。
- arch/arm/configs文件夾中有許多命名爲xxx_defconfig的配置文件,如果運行make xxx_defconfig,當前.config文件會由xxx_defconfig文件生成。
- make oldconfig的作用是備份當前.config文件爲.config.old,如若make config/menuconfig設置不當可用於恢復先前的.config。
2.2配置過程
1.在2.1節中,若內核目錄中不存在.config文件 make config/menuconfig
稱爲直接配置,生成.config文件。信息量較大,不推薦。
2.使用make defconfig
或make xxx_defconfig
方法,會將defconfig或xxx_defconfig中的默認配置生成.config文件。(這是make 產生的.config文件,不可用defconfig或xxx_defconfig直接重命名得到)
3.使用廠家提供的配置文件,重命名爲.config。(這是修改文件名產生.config文件)
3.如果內核目錄中已經存在.config文件,則 make config/menuconfig
會在.config文件的基礎上修改,生成新的.config文件。
2.3配置方法
通常我們使用make menuconfig
命令,打開內核的菜單配置界面。
1. 箭頭,用來到導航菜單項。
2. enter,進入子菜單。
3. 菜單中高亮的字母是hotkey。
4. Y 表示編譯進內核。此時圖標爲[*]
5. N 表示不編譯進內核。此時圖標爲[]
6. M 表示編譯成模塊,需要使用時再插入內核。此時圖標爲,<>表示可以被編譯成模塊。
7. 輸入?,顯示菜單項的幫助文件。
8. 輸入/,用於查找。
9. exit,退出。
3.編譯
在內核目錄執行
make
開始構建內核,生成vmlinux內核文件。
vmlinuz是可引導的、可壓縮的內核鏡像,vm代表Virtual Memory.Linux支持虛擬內存,因此得名vm.它是由用戶對內核源碼編譯得到,實質是elf格式的文件.也就是說,vmlinux是編譯出來的最原始的內核文件,未壓縮.這種格式的鏡像文件多存放在PC機上。在內核目錄執行
make uImage
開始構建u-boot能引導的內核,生成uImage內核文件。uImage文件位於kernel dir/arch/arm/boot/uImage
.其他
elf格式文件 ELF,Executable and Linkable Format,可執行可鏈接格式,是UNIX實驗室作爲應用程序二進制接口而發佈的,擴展名爲elf.可以簡單的認爲,在elf格式的文件中,除二進制代 碼外,還包括該可執行文件的某些信息,比如符號表等.objcopy 是GNU使用工具程序objcopy作用是拷貝一個目標文件的內容到另一個目標文件中,也就是說,可以將一種格式的目標文件轉換成另一種格式的目標文件. 通過使用binary作爲輸出目標(-o binary),可產生一個原始的二進制文件,實質上是將所有的符號和重定位信息都將被拋棄,只剩下二進制數據.
Image Image是kernel鏡像格式,它是經過objcopy處理的只包含二進制數據的內核代碼,它已經不是elf格式了,但這種格式的內核鏡像還沒有經過壓縮。
bzImage bz表示big zImage,其格式與zImage類似,但採用了不同的壓縮算法,注意,bzImage的壓縮率更高。