培训的第四阶段:通过编写驱动,从应用层,内核层,再到底层硬件之间的关系。明白内核驱动的意义。现在开始才是重头戏,前面的都是铺垫。   

  正式编写驱动前,要先了解linux内核代码的组成。linux主要是由五个子系统组成:进程调度,内存管理,文件系统,网络接口以及进程间通信。linux源代码用来实现这些功能,linux源码包在source_code目录下的linux-3.5-20131028.tgz,将其解压,进入目录下,在下面是linux源码截图:

  

  这里面最重要的是Makefile,这个文件中包含了许多linux内核配置的信息,我们Linux内核要编译的平台,交叉编译器的选择,编译链接Linux内核的参数,等等。

  arch目录中包含于体系结构有关的子目录和文件,arm的相关平台信息在arch/arm目录下。

  scripts目录中存放着对核心配置的脚本文件。

  crypto目录中包含着常见的加密算法。

  drivers目录包含各种各样的驱动,包括字符型,快型,网络设备驱动程序。

  fs目录中包括了linux系统所支持的文件系统类型,比如ext4 nfs

  init目录中存放着与linux内核相关的启动代码。

  kernel目录中包含许多linux进程调度子系统相关的源代码。

  lib目录存放linux内核所用的库文件。

  mm目录存放linux内存管理的源代码。

  net目录存放有关网络协议的源代码。

  linux源码数量庞大,需要一个工具来管理,方便我们来查找,这个工具就是ctags 。

执行上面一条命令后,会生成tags的文件。使用vim 任意打开一个文件。在命令模式下 输入 ta + 要查找的函数。

下面是使用内核裁剪的步骤:

  首先是编译内核:

   (1): 先把原先编译的删除

   

   (2) : 继续删除配置文件

    

(3) :将平台的配置文件拷贝到源码目录下的 .config  ,  .config文件是在进行内核配置的时候,经过配置后生成的内核编译参考文件。

   原本是要执行  cp arch/arm/configs/exynos4_defconfig .config

   因为友善之臂在源码目录下提供了他们更改过的,这时候我们就用这个

  

  (4):编译

  

  经过漫长的等待,linux内核镜像就会出现在arch/arm/boot/ 目录下,其中Image是就是linux内核镜像,zImage是压缩过的linux内核镜像。

    现在编译的是没有裁剪过得内核,使用 make menuconfig 就可以通过图形界面来裁剪内核。把不需要的模块前面的*去掉,就能实现内核的裁剪。相当的方便。

  

  选择保存退出后 再次执行 make 就能生成编译过后的镜像文件了。

     Linux 内核源码树的每个目录下都有两个文档Kconfig和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个 Kconfig分别描述了所属目录源文档相关的内核配置菜单。在执行内核配置make menuconfig时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文档中。在内核编译时,主Makefile调用这 个.config,就知道了用户的选择。这个内容说明了,Kconfig就是对应着内核的每级配置菜单。

  

    

第三十九天:linux内核裁剪相关推荐

  1. Linux内核裁剪及编译

    Linux内核裁剪及编译可加载模块 一 Linux基础知识 linux内核组要由五个子系统组成: 进程调度 内存管理 文件系统 网络接口 进程间通信 Linux源码目录 arch    目录中包含于体 ...

  2. [转载]基于ARM的linux内核裁剪与移植

    基于ARM的linux内核裁剪与移植 http://bbs.elecfans.com/forum.php?mod=viewthread&tid=185020  wutaimin( 楼主 ) 2 ...

  3. ARM在嵌入式linux内核裁剪与移植的应用

    微处理器用一片或少数几片大规模集成电路组成的中央处理器.这些电路执行控制部件和算术逻辑部件的功能.微处理器与传统的中央处理器相比,具有体积小,重量轻和容易模块化等优点.微处理器的基本组成部分有:寄存器 ...

  4. linux 内核裁剪的具体过程和方法,Linux内核裁剪的具体过程和方法

    Linux内核裁剪的具体过程和方法 这是我前段时间自己整的一份,内核功能: 能够完成系统的基本功能,上网,收发邮件等,支持xwindows图形界面. 在menuconfig中配置: 详细介绍内核配置选 ...

  5. 【正点原子Linux连载】第三十七章 Linux内核移植 -摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.0

    1)实验平台:正点原子阿尔法Linux开发板 2)平台购买地址:https://item.taobao.com/item.htm?id=603672744434 2)全套实验源码+手册+视频下载地址: ...

  6. linux 脚本裁剪内核,Linux 内核裁剪的自动化方法

    Linux 内核裁剪的自动化方法 随着广泛地获得使用并被移植到不同的平台,Linux 内核源代码正在越来越大,比如, Linux 2.6.28 中, 文件数有 25282 个,大小有350M. 对于某 ...

  7. 孤荷凌寒自学python第三十九天python 的线程锁Lock

    孤荷凌寒自学python第三十九天python的线程锁Lock (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 当多个线程同时操作一个文件等需要同时操作某一对象的情况发生时,很有可能发生冲突, ...

  8. linux内核裁剪的具体过程和方法

      sqs570408(流氓总督) ( ) 信誉:100    Blog 2006-12-29 14:48:06 得分: 0       这是我前段时间自己整的一份,内核功能: 能够完成系统的基本功能 ...

  9. linux裁剪内核和移植,嵌入式Linux内核裁剪及移植的研究与实现

    摘要: 嵌入式操作系统是嵌入式系统的软件核心,它管理系统中所有的软件和硬件资源,并且满足嵌入式系统的专用性和可裁剪性.嵌入式Linux以其开源,可裁剪以及模块化设计等特点,吸引了国内外众多研发人员的青 ...

最新文章

  1. 前端新手学习记录1 -使用vscode编辑html
  2. wordpress page显示未找到页面_通过Avada主题了解网页基本结构和页面布局
  3. 50万买只波士顿动力机器狗,只为训练它“尿”啤酒,还让女朋友尝尝
  4. ResNeXt——与 ResNet 相比,相同的参数个数,结果更好:一个 101 层的 ResNeXt 网络,和 200 层的 ResNet 准确度差不多,但是计算量只有后者的一半...
  5. Apache Kafka:下一代分布式消息系统
  6. 洛谷 P2904 [USACO08MAR]跨河River Crossing
  7. 在docker容器里创建ubuntu系统
  8. php redis 设置,php设置redis扩展,你值得拥有
  9. pt-query-digest查询日志分析工具
  10. Modules Of YoloV5 Architecture
  11. VirtualBox6.0安装及配置
  12. PetShop 4.0学习笔记:消息队列MSMQ
  13. C# Winform开发教程
  14. 五十九、备战蓝桥杯 - Java算法 (基础练习一)
  15. 计算机硬盘驱动器可以删吗,有关删除存储驱动器上的数据的注意事项
  16. vue 饿了么ui如何修改内联样式:element.style
  17. React子组件给父组件传值
  18. SIMCOM AT指令大全
  19. 张赐荣 | PHP 获取喜马拉雅音频直链地址
  20. python多线程下载小姐姐图片

热门文章

  1. 打造爆款产品需要注意什么
  2. IBM 成立 | 历史上的今天
  3. 随机过程 Brown 运动(上)
  4. 海神号机器人潜艇_美深海机器人意外殉职 在10公里水下被水压挤碎(图)
  5. 【实验】MPEG-1 Audio Layer II编码原理及编码器调试
  6. 距离全球边缘计算大会还有1400小时!
  7. 驻留内存 虚拟内存 共享内存
  8. Dijkstra,A*,DWA,TEB
  9. PHP苹果支付以及事件通知-周期订阅实现
  10. 画洗碗机器人的思维导图_怎样用思维导图来协助家务整理?