• S3C2440移植linux3.4.2内核之内核裁剪


    上一节S3C2440移植linux3.4.2内核之支持YAFFS文件系统我们修改了内核支持了yaffs2文件系统,这节我们裁剪内核。


    移植Linux3.4.2内核其他文章链接:

    S3C2440移植linux3.4.2内核之内核框架介绍及简单修改

    S3C2440移植linux3.4.2内核之修改分区以及制作根文件系统

    S3C2440移植linux3.4.2内核之支持YAFFS文件系统

    S3C2440移植linux3.4.2内核之内核裁剪

    为什么要裁剪内核?

      因为mtd的kernel分区只有2M大,而实际内核有2.37MB,所以需要裁剪到小于2M(或者修改mtd分区值)

    首先裁剪内核里无关的CPU/单板文件

      通过vi .config,然后搜索2440,如下图所示:
    在这里插入图片描述
      然后参考上图,make menuconfig

      进入System Type ---> SAMSUNG S3C24XX SoCs Support:
    在这里插入图片描述
      如上图所示,CPU下只选择2440,单板文件下只选择SMDK2440以及MINI2440相关

    裁剪无关的文件系统ext2、ext3、ext4

      重新make menuconfig,进入File systems,去掉:

    < > Second extended fs support               //ext2
    < > Ext3 journalling file system support 
    < > The Extended 4 (ext4) filesystem
    

    裁剪光盘文件系统CD-ROM

    进入File systems---> CD-ROM/DVD Filesystems,去掉:

    < > ISO 9660 CDROM file system support    
    

    裁剪不常用的杂项文件系统

    进入File systems---> Miscellaneous filesystems,去掉:

    < >   Compressed ROM file system support (cramfs)    // cramfs压缩文件系统
    [ ]     Include support for ZLIB compressed file systems //zlib压缩文件系统
    < >   ROM file system support                            // Romfs
    

    通过内核启动信息来裁剪

      如下图所示,内核启动时,看到初始化了PS2鼠标驱动
    在这里插入图片描述
      由于,我们2440板子只有USB接口,所以需要裁剪掉PS2鼠标驱动:

    重新make menuconfig,进入Device Drivers-> Input device support,去掉:

    [ ]     Provide legacy /dev/psaux device    //PS2鼠标鼠标指向的鼠标设备文件
    [ ]   Mice  --->                   //其它各种鼠标驱动,包括PS2鼠标、I2C鼠标、触摸板等
    			        [ ]   PS/2mouse
    

    通过.config文件的内容来裁剪

      通过vi .config,找到如下图所示,由于CONFIG_TOUCHSCREEN_USB(USB触摸板)很少见到,所以去掉
    在这里插入图片描述
      USB-based Watchdog Cards(基于usb的看门狗卡)

      如下图所示,这个看门狗卡很少用到,所以去掉CONFIG_SSB_POSSIBLE
    在这里插入图片描述
      USB-based Watchdog Cards(基于usb的看门狗卡)
      Sonics Silicon Backplane (Sonics公司下的Silicon底板)
      如下图所示,这个公司的产品没有用到,所以去掉CONFIG_BCMA_POSSIBLE
    在这里插入图片描述
      找到如下图所示,由于CONFIG_SND_USB (USB声卡)没用到,所以去掉
    在这里插入图片描述
      去掉CONFIG_USB_LIBUSUAL,没用到
    在这里插入图片描述

    最后通过上节查找的裁剪内容,来make menuconfig

      去掉CONFIG_TOUCHSCREEN_USB

    -> Device Drivers                                                                    
    
      -> Input device support
    
        -> Generic input layer
    
        -> Touchscreens
    
    <*>   Samsung S3C2410/generic touchscreen input driver   //加上自带的触摸屏驱动
    
    < >   USB Touchscreen Driver                                              //去掉USB触摸屏驱动 
    

      去掉CONFIG_SSB_POSSIBLE
    搜索如下图所示,该宏是被别的选项设置,所以去掉不了:
    在这里插入图片描述

      去掉CONFIG_BCMA_POSSIBLE。该宏也没找到,所以去掉不了
      去掉CONFIG_SND_USB

    -> Device Drivers
    
    -> Sound card support
    
      -> Advanced Linux Sound Architecture
    
    [ ]   USB sound devices              //去掉USB声卡驱动
    
    5)去掉CONFIG_USB_LIBUSUAL
    
    -> Device Drivers 
    
    -> USB support
    
    [ ]   The shared table of common (or usual) storage devices       
    

    裁剪后大小如下所示
    在这里插入图片描述

    给内核制作补丁

      制作补丁之前,首先需要make distclean清除所有的配置文件,也包括了menuconfig菜单。而menuconfig菜单是通过读取.config文件来生成的.
    所以我们需要保存.config文件
    步骤如下:

    cp .config  config_ok            //保存到config_ok文件
    make distclean                  
    cd ../
    
    mv linux-3.4.2  linux-3.4.2_new  //更改文件名
    tar -xjf linux-3.4.2.tar.bz2             //解压需要比较的源文件
    
    diff -urN linux-3.4.2 linux-3.4.2_new > linux-3.4.2_new.patch    //生成补丁文件linux-3.4.2_new.patch
    

    有任何问题,均可通过公告中的二维码联系我

  • 相关阅读:
    csp-s模拟110
    csp-s模拟109
    留念
    csp-s 2019 游记
    HEOI2020
    CSP-S2019记
    堆积的$TIPS$
    低错复习
    倍增并查集
    4.26
  • 原文地址:https://www.cnblogs.com/dongxb/p/14207424.html
Copyright © 2020-2023  润新知