上一节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

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

S3C2440移植linux3.4.2内核之内核裁剪的更多相关文章

  1. 移植Linux-3.4.2内核到S3C2440

    一.BootLoader引导内核过程     1.Bootloader的工作     1.1.将内核读入内存     2.2.保存内核启动参数到指定位置,内核启动时去这个位置解析参数     3.3. ...

  2. 1.移植3.4内核-分析内核启动过程,重新分区,烧写jffs2文件系统

    1.在上章-移植uboot里.我们来分析下uboot是如何进入到内核的 首先,uboot启动内核是通过bootcmd命令行实现的,在我们之前移植的bootcmd命令行如下所示: bootcmd=nan ...

  3. 在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

    实验环境:Ubnuntu 64位(推荐使用14.04)+Xshell 阿里云现在提供的云服务器很好用的,用来编译内核性能也不错.本文介绍最基本的内核编译方法,为了方便,所有操作均在root用户下进行. ...

  4. 【转】.NET多种WebKit内核/Blink内核浏览器初步测评报告

    第1篇:.NET多种WebKit内核/Blink内核浏览器初步测评报告 本文转自“吾乐吧软件站”,原文链接:http://www.wuleba.com/?p=23590 报告研究时间:2013-10- ...

  5. Linux 内核开发—内核简单介绍

    内核简单介绍 Linux 构成 Linux 为什么被划分为系统空间和内核空间 隔离核心程序和应用程序,实现对核心程序和数据的保护. 什么内核空间,用户空间 内核空间和用户空间是程序执行的两种不同的状态 ...

  6. Linux设备驱动开发详解-Note(5)---Linux 内核及内核编程(1)

    Linux 内核及内核编程(1) 成于坚持,败于止步 Linux 2.6 内核的特点 Linux 2.6 相对于 Linux 2.4 有相当大的改进,主要体现在如下几个方面. 1.新的调度器 2.6 ...

  7. Linux 内核开发 - 内核定时器

    时间差的度量 系统的定时器硬件以固定的频率产生时钟中断,产生始终中断的间隔以HZ 常量来决定,通常在50~1200之间,x86默认是1000.HZ能够依据不同的内核来配置. Linux 採用jiffi ...

  8. Linux内核(5) - 内核学习的相关资源

    “世界上最缺的不是金钱,而是资源.”当我在一份报纸上看到这句大大标题时,我的第一反应是——作者一定是个自然环保主义者,然后我在羞愧得反省自身的同时油然生出一股对这样的无产主义理想者无比崇敬的情绪来. ...

  9. [转帖]天津飞腾回应处理器造假 没有采用ARM的内核,内核自主设计

    天津飞腾回应处理器造假没有采用ARM的内核,内核自主设计 ... https://www.expreview.com/63233.html 看了下 同意孟宪瑞老师的关系 飞腾 的确改动了 ARM的架构 ...

  10. S3C2440 移植最新5.2linux内核

    基于 移植uboot后. 1. 移植linux内核 1.1 下载源码 打开 https://www.kernel.org/ 直接肝最新的 5.2.8 下载完后,在ubuntu里解压备用. 1.2 搭建 ...

随机推荐

  1. 使用CompletableFuture实现多个异步任务并行完成后合并结果

    业务场景 需要同时从多个副本数据库中查询数据,并对查询结果进行合并去重处理后返回前端. 实现过程涉及多数据源切换,这里不作过多讨论. 编码实现 实现过程: 1.定义异步查询数据方法: 2.通过Comp ...

  2. 系统监控:使用日志文件 journalctl的使用

    journalctl 显示最近登录的: 上面有最近登录的时间,和系统操作 几十年来,Linux日志记录一直由syslogd守护进程管理.Syslogd将收集系统处理和应用程序发送到/dev/log伪设 ...

  3. vue-test -------style绑定

    <template> <p :style="{color:activeColor,fontSize:fontsize+'px'}"></p> & ...

  4. 浅谈数字孪生和GIS融合的必要性

    随着科技的不断发展和应用的不断深入,数字孪生和GIS在各自领域中展现出巨大的潜力.然而,更引人注目的是,数字孪生和GIS的融合将为许多行业带来全新的机遇和变革.在本文中,我们将探讨数字孪生和GIS融合 ...

  5. ASR项目实战-任务队列在文件转写特性中的应用

    转写时长超出60秒的语音文件,业界的竞品通常会使用创建异步转写任务的方式来提供支持. 一个简单.直接的实现方案,即: 网关服务接收到来自客户的转写请求时,将任务信息持久化至任务队列中. 由算法服务的实 ...

  6. springboot整合apollo配置中心

    springboot整合apollo配置中心 springboot整合apollo配置中心官网文档说明得比较清楚,但还是有一些坑注意的. 官网文档:https://www.apolloconfig.c ...

  7. 为什么maven配置完Tomcat且运行之后页面内容没有显示出来?

    1.如何在maven项目中配置一个webapp项目? 首先新建一个maven项目 项目目录 <?xml version="1.0" encoding="UTF-8& ...

  8. JavaImprove--Lesson04--LocalDateTime,ZoneId,Instant,DateTimeFormatter

    一.LocalDateTime LocalDateTime是JDK8的新时间特性,它解决了Date类和Calender类的很多不足,如使用不方便,线程不安全,以及获取时间戳只能拿到毫秒而不能拿到纳秒等 ...

  9. Dio和http库是Flutter中两种常用的网络请求库

    Dio Dio 的优点: 强大的功能:Dio提供了丰富的功能,支持拦截器.文件下载和上传.超时设置等高级特性,满足了大多数网络请求的需求. 支持并发请求:Dio具有良好的并发性能,可以同时处理多个网络 ...

  10. java常用正则表达式工具

    public class RegexUtils { /** * 是否是无效手机格式 * @param phone 要校验的手机号 * @return true:符合,false:不符合 */ publ ...