前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >S3C2440移植linux3.4.2内核之内核裁剪

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

作者头像
嵌入式与Linux那些事
发布2021-05-20 10:37:22
2K0
发布2021-05-20 10:37:22
举报

为什么要裁剪内核?

  因为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,去掉:

代码语言:javascript
复制
< > Second extended fs support               //ext2
< > Ext3 journalling file system support 
< > The Extended 4 (ext4) filesystem

裁剪光盘文件系统CD-ROM

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

代码语言:javascript
复制
< > ISO 9660 CDROM file system support    

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

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

代码语言:javascript
复制
< >   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,去掉:

代码语言:javascript
复制
[ ]     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

代码语言:javascript
复制
-> 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

代码语言:javascript
复制
-> 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文件 步骤如下:

代码语言:javascript
复制
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
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要裁剪内核?
  • 首先裁剪内核里无关的CPU/单板文件
  • 裁剪无关的文件系统ext2、ext3、ext4
  • 裁剪光盘文件系统CD-ROM
  • 裁剪不常用的杂项文件系统
  • 通过内核启动信息来裁剪
  • 通过.config文件的内容来裁剪
  • 最后通过上节查找的裁剪内容,来make menuconfig
  • 给内核制作补丁
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档