Linux的核心移植

語言: CN / TW / HK

移植目標

1.獲取Linux核心原始碼; 2修改核心,使核心啟動能正確掛載根檔案系統rootfs(即選擇核心支援的檔案系統格式); 3修改驅動,裁剪核心; 4編譯生成uImage,下載體驗。

設定環境變數

配置或編譯核心之前,首先要確定目標CPU架構,以及編譯時採用什麼工具鏈。 方法一:通過修改根目錄下的Makefile中ARCH和CROSS_COMPILE值。 方法二:修改環境變數。修改/etc/profile檔案,對所有使用者生效,執行source /etc/profile後立刻生效;或修改~/.bashrc,對當前使用者有效(推薦此方法),修改過後執行source ~/.bashrc立刻生效。 例如:vim ~/.bashrc,在檔案最後新增, export ARCH=arm export CROSS_COMPILE=/usr/local/arm-linux-gcc/bin/arm-linux- 執行指令:source ~/.bashrc 檢視環境變數:echo $ARCH 在這裡插入圖片描述

下載解壓核心

Linux 官網為 https://www.kernel.org,一般晶片廠商會從官網下載某個版本Linux核心移植到自己的CPU上。所以也可以從廠商提供的Linux核心移植到自己的產品中,比如Atmel的AT91系列kernel可以在https://github.com/linux4sam地址下載。 下載解壓,ubuntu下的zip軟體有問題,編譯時可能會彈出:File name too long錯誤。可以執行“sudo apt-get install p7zip-full”和“7za x xxxx.zip”進行解壓。

配置並編譯核心

1.核心配置,配置支援檔案系統的格式。將核心檔案/arch/arm/configs目錄下的sama5_defconfig配置檔案拷貝到核心檔案第一級目錄下。開啟命令列終端,輸入“make sama5_defconfig”命令對其進行編譯。 在這裡插入圖片描述

2.執行make menuconfig指令進入配置介面,我們使用檔案系統為ramdisk格式,需要修改核心支援該檔案系統。進入“General setup”目錄下,選中“Initial RAM filesystem and RAM disk (initramfs/initrd) support”選項(按空格鍵選中),如下所示: 在這裡插入圖片描述

3.修改kernel的版本資訊。進入“General setup”目錄下,選中“Local version –append tp kernel release”選項,輸入版本資訊。 在這裡插入圖片描述

4設定ramdisks編譯格式為bzip2:選中“General setup”->” Support initial ramdisks compressed using bzip2”。

5設定ramdisk的數量為1和大小為128M。 在這裡插入圖片描述

6根目錄下執行make uImage(生成uboot專用的映象檔案,現在新的uboot已經支援zImage了);在arch/arm/boot目錄下生成uImage檔案,即為kernel映象檔案。

在這裡插入圖片描述

編譯下載過後,可以看到uboot已正確啟動kernel 在這裡插入圖片描述

                                            想要了解更多技術知識掃碼關注我。
                                             我也為大家準備了20G的學習禮包

在這裡插入圖片描述