2.1 Linux內核鏡像構建 筆記

1.內核、補丁文件下載,解壓縮,打補丁

patch -px < xx.patch

2.配置

2.1配置文件

  1. 如果.config不存在,運行make config(字符型)/menuconfig(菜單型)時的缺省設置由固化在各個Kconfig文件中各項目的缺省值決定。
  2. 如果.config存在,運行make config/menuconfig時的缺省設置即是當前.config的設置,若對設置進行了修改,.config將被更新。
  3. arch/arm/defconfig是一個缺省的配置文件,make defconfig時會根據這個文件生成當前的.config。
  4. arch/arm/configs文件夾中有許多命名爲xxx_defconfig的配置文件,如果運行make xxx_defconfig,當前.config文件會由xxx_defconfig文件生成。
  5. make oldconfig的作用是備份當前.config文件爲.config.old,如若make config/menuconfig設置不當可用於恢復先前的.config。

2.2配置過程

1.在2.1節中,若內核目錄中不存在.config文件 make config/menuconfig稱爲直接配置,生成.config文件。信息量較大,不推薦。
2.使用make defconfigmake 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.編譯

  1. 在內核目錄執行make開始構建內核,生成vmlinux內核文件。
    vmlinuz是可引導的、可壓縮的內核鏡像,vm代表Virtual Memory.Linux支持虛擬內存,因此得名vm.它是由用戶對內核源碼編譯得到,實質是elf格式的文件.也就是說,vmlinux是編譯出來的最原始的內核文件,未壓縮.這種格式的鏡像文件多存放在PC機上。

  2. 在內核目錄執行make uImage開始構建u-boot能引導的內核,生成uImage內核文件。uImage文件位於kernel dir/arch/arm/boot/uImage.

  3. 其他
    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的壓縮率更高。

引用

https://blog.csdn.net/pi408637535/article/details/38438309

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章