乐趣区

关于c:S3C2440移植linux342内核之内核裁剪

上一节 S3C2440 移植 linux3.4.2 内核之反对 YAFFS 文件系统咱们批改了内核反对了 yaffs2 文件系统,这节咱们裁剪内核。
@[TOC]
移植 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

如遇到排版错乱的问题,能够通过以下链接拜访我的 CSDN。

**CSDN:[CSDN 搜寻“嵌入式与 Linux 那些事”]

退出移动版