1. 程式人生 > >ARM版Linux核心編譯與裁剪

ARM版Linux核心編譯與裁剪

Win7下使用Oracle VM VirtualBox搭建的Ubuntu11.10虛擬機器

1、建立交叉編譯環境:

      下載交叉編譯器arm-linux-gcc-3.4.1.tar.bz2

            tar jxvf arm-linux-gcc-3.4.1.tar.bz2

這樣就會在當前目錄產生一個./usr/local/arm/3.4.1目錄,我進入local目錄,將arm目錄複製到/usr/local目錄:

       cd ./usr/local

cp –rf ./arm /usr/local

這裡複製路徑沒有固定要求,主要在下面設定環境變數時相對應就行:

使用sudo vim /etc/profile在/etc/profile檔案的最後加上

export PATH=$PATH:/usr/local/arm/3.4.1/bin/(如果已經存在PATH則只需將/usr/local/arm/3.4.1/bin/新增在後面即可,用”:”與其他變數分割)

然後使用source /etc/profile命令使我們對/etc/profile檔案的修改立即生效,而不用重新登入,這樣在編譯核心時系統就可以找到我們所指定的編譯器了

2、下載Linux核心原始碼

www.kernel.org上下載linux-2.6.30.4.tar.bz2原始碼包,在當前使用者目錄(我的是:/home/billxiang/)下新建資料夾linux,複製linux-2.6.30.4.tar.bz2到linux資料夾中並解壓:

              mkdirlinux

cp ./linux-2.6.30.4.tar.bz2 ./linux

cd ./linux

tar jxvf linux-2.6.30.4.tar.bz2

              這樣會在我們新建的linux資料夾中產生一個linux-2.6.30.4資料夾

檢查linux-2.6.30.4資料夾中Makefile,找到ARCH和CROSS_COMPILE的定義,改為:

     ARCH ?= arm

     CROSS_COMPILE ?= arm-linux-

       這是指定我們所編譯核心所支援的cpu是ARM架構的,所使用的交叉編譯器字首是arm-linux-(這可以在我們所設定的環境變數所指定的目錄下看到)

3、編譯核心

       下面就可以開始編譯linux核心了,在linux-2.6.30.4資料夾下直接執行make:

make

卻出現

cc1: error: invalid option ‘abi=aapcs-linux’

錯誤

這裡通過make menuconfig命令,在配置選單中將Kernel Features中的EABI項去掉即可:

make menuconfig

通過上下鍵選中Kernel Features,再回車進入

通過上下鍵選中EABI項後,按’n’鍵取消該項(使方括號中的’*’號消失),然後通過左右鍵選擇Exit退出,並儲存設定,再次make(需要等待一段時間):

make


編譯成功後可以在./arch/arm/boot目錄下看到生成的zImage檔案,這裡沒有進行裁剪,大小為1.9MB

4、裁剪核心

核心裁剪我還是使用圖形介面進行選擇操作,還是使用上面用到的makemenuconfig命令:

              make menuconfig

      

       在圖形選單介面中通過上下鍵選中Networking suport後按’n’鍵取消對網路的支援,退出、儲存設定後再次make:

              make

       等待一段時間編譯完成後,再次檢視生成的zImage檔案發現只有1.5MB了,說明裁剪成功。