- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.2嵌入式linux_内核移植
学习目标 学员需要掌握如下内容: linux内核裁剪与配置编译 编译内核模块 Linux内核源代码结构 Linux 内核源代码的结构 Linux内核源代码位于/usr/src/目录下 /include子目录包含了建立内核代码时所需的大部分包含文件 /init 子目录包含了内核的初始化代码 /arch子目录包含了所有硬件结构特定的内核代码 /drivers子目录包含了内核中所有的设备驱动程序 /fs子目录包含了所有的文件系统的代码 /net子目录包含了内核的网络连接代码 /mm子目录包含了所有内存管理代码 /ipc子目录包含了进程间通信代码 /kernel子目录包含了主内核代码 Linux内核配置编译 编译内核的需要 Linux作为一个自由软件,不断增加许多新的特性。想要使用这些新特性,或想根据自己的系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。 更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等。 Linux内核配置编译 编译内核的需要 自己定制编译的内核运行更快 系统将拥有更多的内存 不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些 Linux内核配置编译 内核配置系统 Linux内核有上千个配置选项,配置复杂。通过配置系统简化内核配置。 内核配置系统可生成内核配置菜单。 配置系统包含: Makefile Kconfig 配置工具 Linux内核配置编译 获取源码或补丁 工具准备 安装gcc、make等编译工具 sudo apt-get install build-essential 安装make menuconfig所需库 sudo apt-get install libncurses-dev 安装系统生成kernel-image所需的工具 sudo apt-get install uboot-mkimage Linux内核配置编译 内核配置系统 Makefile 分布在 Linux 内核源代码中的 Makefile,定义 Linux 内核的编译规则; 顶层目录的Makefile管理整个Linux内核的配置编译。 配置工具 不同的内核配置方式,通过不同的配置工具完成。script目录下提供了这些配置工具。如menuconfig目标使用mconf。 Kconfig文件(config.in) 2.6内核引入的配置文件,是内核配置选项的源文件。 arch/$(ARCH)/Kconfig文件是主Kconfig文件,主Kconfig文件调用其他目录的Kconfig文件。 这些Kconfig文件形成树状关系--树状菜单。 Linux内核配置编译 内核配置系统—Kconfig文件 菜单项 menu File systems 配置选项 Config开头,后面给出选项开关变量 后面几行定义这个配置选项的属性,包括选项类型、依赖关系、帮助等等。 Linux内核配置编译 准备工作: #tar xvf kernel120806.tgz Linux内核配置编译 内核配置命令: #make config(基于文本的最为传统的配置界面,不推荐使用) #make menuconfig(基于文本菜单的配置界面,字符终端下推荐使用) #make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用) #make gconfig(基于gtk的图形配置界面) Linux内核配置编译 选择相应的配置时,有三种选择,它们分别代表的含义如下: Y--将该功能编译进内核 N--不将该功能编译进内核 M--将该功能编译成模块,可以在需要时动态插入到内核中 make xconfig,使用鼠标就可以选择对应的选项。 make menuconfig,则需要使用空格键进行选取。 如果有不明白的地方,寻则Help查看说明 Linux内核配置编译 配置的原则 大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。 将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块。 有利于减小内核的长度,减小内核消耗的内存; 不需要的功能就不要选; 与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。 Linux内核配置编译 配置的注意选项 Code maturity level options --- 应该选择 [*] Prompt for development and/or incomplete code/drivers 这将会在设置界面中显示还在开发或者还没有完成的代码与驱动. 因为有许多设备可能必需选择这个选项才能进行配置,实际上它是安全的。
文档评论(0)