Linux内核编译与裁剪(ARM版)

系统: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,找到ARCHCROSS_COMPILE的定义,改为:

      ARCH?= arm

      CROSS_COMPILE?= arm-linux-

       然后需要修改PATH

       在主目录的.profile文件的最后加上export PATH=$PATH:/usr/local/arm/3.4.1/bin/

      

3、指定启动时初始化

 

       kernel 启动时依据我们对分区的设置进行初始配置

 

       修改arch/arm/mach­s3c2410/mach­smdk2410.c 文件

 

        vi arch/arm/mach­s3c2410/mach­smdk2410.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了。

 

你可能感兴趣的:(Linux,linux内核,filesystems,makefile,path,c,ubuntu)