系統:ubuntu10.10
1、首先建立arm-linux-gcc交叉編譯環境:
下載arm-linux-gcc-3.4.1.tar.bz2
複製,解壓
#cd /
複製arm-linux-gcc-3.4.1.tar.bz2到當根目錄
#tar jxvf arm-linux-gcc-3.4.1.tar.bz2
這樣就會產生一個/usr/local/arm目錄了。
2、到www.kernel.org上下載linux-2.6.30.4.tar.bz2源碼包,並在主目錄解壓縮。
檢查頂級Makefile,找到ARCH和CROSS_COMPILE的定義,改為:
ARCH?= arm
CROSS_COMPILE?= arm-linux-
然後需要修改PATH:
在主目錄的.profile檔案的最後加上export PATH=$PATH:/usr/local/arm/3.4.1/bin/
3、指定啟動時初始化
kernel 啟動時依據我們對分區的設定進行初始配置
修改arch/arm/machs3c2410/machsmdk2410.c
檔案
vi arch/arm/machs3c2410/machsmdk2410.c
修改smdk2410_devices[].指明初始化時包括我們在前面所設定的flash
分區資訊
static struct platform_device *smdk2410_devices[] __initdata ={
&s3c_device_usb,
&s3c_device_lcd,
&s3c_device_wdt,
&s3c_device_i2c,
&s3c_device_iis,
/* 添加如下語句即可*/
&s3c_device_nand,
};
儲存,退出。
1.4 配置核心
支援啟動時掛載devfs
為了我們的核心支援devfs
以及在啟動時並在/sbin/init
運行之前能自動掛載/dev為 devfs
檔案系統,
修改
fs/Kconfig
檔案
vi fs/Kconfig
找到menu "Pseudo filesystems"
添加如下語句:
config DEVFS_FS
bool "/dev file system support (OBSOLETE)"
default y
config DEVFS_MOUNT
bool "Automatically mount at boot"
default y
depends on DEVFS_FS
4、
配置核心產生.config檔案
cp arch/arm/configs/s3c2410_defconfig .config
make menuconfig
此時會提示缺少libncurses,執行:
sudo apt-get install libncurses5-dev
又提示缺少,執行:
sudo apt-get install -f
然後:
sudo apt-get install libncurses5-dev
然後makemenuconfig
就行了。
彈出:
這是選擇模組的介面,我先沒做修改,直接退出,然後執行:
make zImage
編譯核心:
編譯完成:
可以看到,zImage大小為1.8M:
然後再次配置,去掉loadable module support
和networksupport,再次編譯:
但是這次產生的zImage大小變為2.5M了。