内核配置与裁剪_第1页
内核配置与裁剪_第2页
内核配置与裁剪_第3页
内核配置与裁剪_第4页
内核配置与裁剪_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、内核配置与裁剪1. Linux内核配置 内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig等等,它们的功能都是一样的。这里用的是make menuconfig。 过去基于2.x的内核为用户提供了四种基本的内核设置编辑器: ² . config 服务于内核设置的一个冗长的命令行界面; ² . oldconfig 一个文本模式的界面,主要包含一个已有设置文件,对用户所发现的内核资源中的设置变量进行排序; ² . menuconfig 一个基于光标控制库的终端导向编辑器,可提供文本模式的图形

2、用户界面; ² . xconfig 一个图形内核设置编辑器,需要安装XWindow系统。 前三种编辑器在设置2.6内核时仍可使用,在运行“make xconfig”后,原有的界面被两个新的图形设置编辑器所代替。这需要具体的图形库和XWindow系统的支持。另外,用户还可以通过“make defconfig”命令,利用所有内核设置变量的缺省值自动建立一个内核设置文件。 下面具体介绍Linux内核配置选项: . 代码成熟度选项 Code maturity level options -> * Prompt for development and/or incomplete code

3、/drivers * Select only drivers expected to compile cleanly 在内核中包含了一些不成熟的代码和功能,如果我们想使用这些功能,想打开相关的配置选项,就必需打开这一选项。 . 通用设置选项 General setup -> () Local version - append to kernel release * Automatically append version information to the version string * Support for paging of anonymous memory (swap) *

4、System V IPC * POSIX Message Queues * BSD Process Accounting * BSD Process Accounting version 3 file format * Sysctl support Auditing support * Support for hot-pluggable devices * Kernel Userspace Events * Kernel .config support * Enable access to .config through /proc/config.gz () Initramfs source

5、file(s) * Configure standard kernel features (for small systems) -> - Configure standard kernel features (for small systems) Load all symbols for debugging/kksymoops Do an extra kallsyms pass Enable support for prinlk BUG()support Enable full-sinzed data structures for core * Enable futex support

6、 * Enable eventpoll support * Optimize for size * Use full shmem filesystem (0) Function alignment (0) Label alignment (0) Loop alignment (0) Jump alignment Local version - append to kernel release:这里填入的是64字符以内的字符串,在这里填上的字符串可以用uname -a命令看到。 Support for paging of anonymous memory(swap):这是使用交换分区或者交换文件

7、来做为虚拟内存的,当然要选上。 System V IPC:表示系统5的Inter Process Communication,它用于处理器在程序之间同步和交换信息,如果不选这项,很多程序运行不起来的。 POSIX Message Queues:这是POSIX的消息队列,它同样是一种IPC。建议最好将它选上。 BSD Process Accounting:这是允许用户进程访问内核将账户信息写入文件中的。建议最好将它选上。 Sysctl support:这个选项能不重新编译内核修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核的参数或变量。建议最好将它

8、选上。 Auditing support:审记支持,用于和内核的某些子模块同时工作,例如SELinux。只有选择此项及它的子项,才能调用有关审记的系统调用。 Support for hot-pluggable devices:是否支持热插拔的选项,肯定要选上。不然USB、PCMCIA等这些设备都用不了。 Kernel Userspace Events:内核中分为系统区和用户区,这里是系统区和用户区进行通讯的一种方式,选上。 Kernel .config support:将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc中得到内核的配置。 Configure sta

9、ndard kernel features(for small systems):这是为了编译某些特殊的内核使用的,通常你可以不选择这一选项,你也不用对它下面的子项操心了。 Load all symbols for debugging/kksymoops:是否装载所有的调试符号表信息,如果你不需要对内核调试,不需要选择此项。 Enable futex support:不选这个内核不一定能正确的运行使用glibc的程序,当然要选上。 Enable eventpoll support:不选这个内核将不支持事件轮循的系统调用,最好选上。 Optimize for size:这个选项使gcc使用-Os

10、的参数而不是-O2的参数来优化编译,以获得更小尺寸的内核,建议选上。 Use full shmem filesystem:除非你在很少的内存且不使用交换内存时,才不要选择这项。 后面的这四项都是在编译时内存中的对齐方式,0表示编译器的默认方式。使用内存对齐能提高程序的运行速度,但是会增加程序对内存的使用量。 (0) Function alignment (0) Label alignment (0) Loop alignment (0) Jump alignment . 可加载模块 Loadable module support -> * Enable loadable module s

11、upport * Module unloading Forced module unloading * Module versioning support (EXPERIMENTAL) Source checksum for all modules * Automatic kernel module loading Enable loadable module support:支持模块加载。 Module unloading:不选这个功能,加载的模块就不能卸载。Forced module unloading:这个选项能强行卸载模块,即使内核认为这样并不安全,也就是说你可以把正在使用中的模块卸载

12、掉。如果你不是内核开发人员,不要选择这个选项。 Module versioning support(EXPERIMENTAL):这个功能可以让你使用其它版本的内核模块,不过建议你不要选择这个选项。 Source checksum for all modules:这个功能是为了防止更改了内核模块的代码但忘记更改版本号而造成版本冲突。如果你不是自己写内核模块,那就不需要这一选项了。 Automatic kernel module loading:这个选项能让内核自动的加载部份模块,建议你最好选上。举个例子说明一下,如模块eth1394依赖于模块ieee1394。如果选择了这个选项,可以直接加载模块

13、eth1394;如果没有选择这个选项,必需先加载模块ieee1394,再加载模块eth1394,否则将出错。 . 总线支持配置 Bus support -> PCCARD (PCMCIA/CardBus) support -> Enable PCCARD debugging 16-bit PCMCIA support (NEW) Load CIS updates from userspace (EXPERIMENTAL)(NEW) PCMCIA control ioctl (obsolete) (NEW) - PC-card bridges PCCard(PCMCIA/CardBu

14、s)support:你的计算机是否支持PCMCIA卡 Enable PCCARD debugging:通常不需要选择调试PCMCIA设备,除非你是设备驱动的开发人员。 16-bit PCMCIA support:16位的PCMCIA总线支持。 . 支持的可执行文件格式 Userspace binary formats -à * Kernel support for ELF binaries * Kernel support for a.out and ECOFF binaries * Kernel support for MISC binaries * RISC OS persona

15、lity Kernel support for ELF binaries:ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台。 Kernel support for a.out and ECOFF binaries:这是早期UNIX系统的可执行文件格式,目前已经被ELF格式取代。 Kernel support for MISC binaries:此选项允许插入二进制的封装层到内核中,当使用Java、.NET、Python、Lisp等语言编写的程序时非常有用。 . 文件系统 File systems <*> Second extended fs support * Ext2

16、extended attributes * Ext2 POSIX Access Control Lists * Ext2 Security Labels <*> Ext3 journalling file system support * Ext3 extended attributes * Ext3 POSIX Access Control Lists * Ext3 Security Labels JBD (ext3) debugging support <*> Reiserfs support Enable reiserfs debug mode Stats in

17、/proc/fs/reiserfs * ReiserFS extended attributes * ReiserFS Security Labels JFS filesystem support * JFS POSIX Access Control Lists JFS debugging JFS statistics XFS filesystem support * Realtime support (EXPERIMENTAL) * Quota support * Security Label support * POSIX ACL support < > Minix fs su

18、pport < > ROM file system support * Quota support < > Old quota format support Quota format v2 support * Dnotify support < > Kernel automounter support < > Kernel automounter version 4 support (also supports v3) CD-ROM/DVD Filesystems -> DOS/FAT/NT Filesystems -> Pseudo

19、 filesystems -> Miscellaneous filesystems -> Network File Systems -> Partition Types -> Native Language Support -> Second extended fs support:标准的Linux文件系统,建议将这种文件系统编译进内核。 Ext2 extended attributes:Ext2文件系统的结点名称、属性的扩展支持。 Ext2 POSIX Access Control Lists:POSIX系统的访问权限列表支持。也就是Owner/Group/Ot

20、hers的Read/Write/Execute权限。 Ext2 Security Labels:扩展的安全标签,例如SElinux之类的安全系统会使用到这样的扩展安全属性。 Ext3 journalling file system support:如果你熟悉Redhat Linux,你一定会习惯Ext3文件系统。 Ext3 extended attributes:Ext3文件系统的结点名称、属性的扩展支持。 Ext3 POSIX Access Control Lists:POSIX系统的访问权限列表支持。 Ext3 Security Labels:扩展的安全标签支持。 JBD (ext3) d

21、ebugging support:Ext3的调试。除非你是文件系统的开发者,否则不要选上这一项。 Reiser fs support:如果你熟悉Suse Linux,你一定会习惯Reiser fs文件系统。 Enable reiserfs debug mode:Reiserfs的调试。除非你是文件系统的开发者,否则不要选上这一项。 Stats in /proc/fs/reiserfs:在/proc/fs/reiserfs文件中显示Reiserfs文件系统的状态。一般来说不需要选择这一项。 ReiserFS extended attributes:Reiserfs,文件系统的结点名称、属性的扩展

22、支持。 ReiserFS POSIX Access Control Lists:POSIX系统的访问权限列表支持。 ReiserFS Security Labels:扩展的安全标签支持。 JFS filesystem support:JFS是IBM公司设计用于AIX系统上的文件系统。后来这一文件系统也能应用于Linux系统。 JFS POSIX Access Control Lists:POSIX系统的访问权限列表支持。 JFS debugging:JFS的调试。除非你是文件系统的开发者,否则不要选上这一项。 JFS statistics:在/proc/fs/jfs文件中显示Reiserfs文

23、件系统的状态。一般来说不需要选择这一项。 XFS filesystem support:XFS是SGI公司为其图形工作站设计的一种文件系统,后来这一文件系统也能应用于Linux系统。 Realtime support (EXPERIMENTAL):实时卷的支持,能大幅提高大文件的读写速度。不过并不太安全,建议暂时不要选择这一选项。 Quota support:XFS文件系统的配额支持。 Security Label support:扩展的安全标签支持。 POSIX ACL support:POSIX系统的访问权限列表支持。 Minix fs support:Minix可能是最早的Linux系统

24、所使用的文件系统。后来被Ext2文件系统所取代。 ROM file system support:内存文件系统的支持。除非你是嵌入式系统的开发者,明确知道你要干什么,否则不要选这一项。 Quota support:配额支持。也就是说限制某个用户或者某组用户的磁盘占用空间。 Old quota format support:旧版本的配额支持。 Quota format v2 support:新版本(第二版)的配额支持。 Dnotify support:基于目录的文件变化的通知机制。 Kernel automounter support:内核自动加载远程文件系统的支持。 Kernel automo

25、unter version 4 support (also supports v3):新的内核自动加载远程文件系统的支持,也支持第三版。 2. Linux内核裁剪 嵌入式LINUX内核裁剪主要有以下三种方法。 (1) 使用LINUX自身的配置工具,编译定制内核。LINUX内核能够很好的支持模块化,内核有许多可以独立增加删除的功能模块可以设置为内核配置选项。嵌入式LINUX内核支持很多的硬件,如果在编译的时候把这些选上,编译出来的内核会很大,编译时应根据系统平台特点和应用需求配置内核,添加需要的功能、删除不必要的功能,这样可以显著减小内核的大小。但这种裁剪方法的缺点是内核裁剪的粒度较大,精度较小

26、。 (2) 修改内核源代码进行系统裁剪。通过分析系统平台和应用需求,结合对内核代码的理解,在内核源代码的适当位置加入一些条件编译语句,使用CML(菜单定制语言)定制内核选项。基于内核源码的方法裁剪粒度更小,裁剪出来的内核体积更小,更适合嵌入式系统的需求。 (3) 基于系统调用关系进行内核裁剪。内核是操作系统运行的核心,内核函数在系统调用、异常产生和中断发生时被调用。 Kconfig与Makefile文件 2.6版本内核源码树的目录下都有两个文档Kconfig(2.4版本是Config.in)和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别

27、描述了所属目录源文档相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文档中。在内核编译时,主Makefile调用这个.config,就知道了用户的选择。上面的内容说明了,Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中,能够修改Kconfig,这样就能够选择这个驱动,假如想使这个驱动被编译,要修改Makefile。 因此添加新的驱动时需要修改的文档有两种: . Kconfig . Makefile 要想知道怎么修改这两种文档,就要知道两种文档的语法结构,下面作简介

28、: . Kconfig 每个菜单都有一个关键字标识,最常见的就是config 语法: config symboloptionssymbol是个新的标记的菜单项,options是在这个新的菜单项下的属性和选项 其中options部分有: 1、类型定义: 每个config菜单项都要有类型定义,bool布尔类型、 tristate三态:内建、模块、移除 string字符串、 hex十六进制、 integer整型。 例如config HELLO_MODULE bool "hello test module" bool类型的只能选中或不选中,tristate类型的菜单项多了编译成内核

29、模块的选项,假如选择编译成内核模块,则会在.config中生成一个CONFIG_HELLO_MODULE=m的配置,假如选择内建,就是直接编译成内核映像,就会在.config中生成一个CONFIG_HELLO_MODULE=y的配置。 2、依赖型定义depends on或requires 指此菜单的出现是否依赖于另一个定义。 config HELLO_MODULE bool "hello test module" depends on ARCH_PXA 这个例子表明HELLO_MODULE这个菜单项只对XScale处理器有效。 3、帮助性定义 只是增加帮助用关键字help或-help-。 . 内核的Makefil

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论