Linux内核裁剪的具体过程和方法

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Linux内核裁剪的具体过程和方法

根据部分网摘资料和实际烧录结果进行整理:

内核功能:

在能够实现AT91SAM9260开发板基本功能的基础上,通过串口连接上读卡器后能进行一系列的操作和控制功能等,将读卡器的相应数据进行存储或者通过网络传输到远程的PC 机上。远程PC机能够通过网络方式在开发板上对所连接的读卡器参数进行更新配置,如设置天线接口、设置读卡方式等。(待与读卡器配套使用后再对内核的功能描述进行补充和完善。)

编译环境:

源代码解压完成后,进入linux 2.6.19目录下,使用VI命令编辑Makefile。确定编译环境为arm交叉编译工具与本机的安装路径一致ARCH = arm

CROSS_COMPILE = /opt/timesys/toolchains/armv5l-linux/bin/armv5l-linux-

内核版本是linux 2.6.19 ,开发板的版本是AT91SAM9260 BOARD V1.01 ,主机系统是ubuntu11.10

内核配置:

内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig 等等,它们的功能都是一样的,区别应该从名字上就能看出来,只有make oldconfig是指用系统当前的设置(./.config)作为缺省值。这里用的是make menuconfig。需要牢记:不必要的驱动越多,内核就越大,不仅运行速度慢、占用内存多,在少数情况下、还会引发其他问题。具体步骤如下:首先确定shell是bash。然后$make menuconfig。有一些默认的符号其含义如下:"[ ]"表示该选项有两种选择方式;[*] 直接编译进内核;[] 不编译;"<>"表示该选项有三种选择方式; <*>直接编译进内核; 编译成模块形式,但不编译进内核;<> 不编译。

在menuconfig中配置:(详细介绍内核配置选项及删改情况)

第一部分:

Code maturity level options ---> 代码成熟等级选项

[]Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动。当内核中含有不成熟的代码或驱动,需要选上,主要用在测试阶段。(产品成熟后,再去掉此选项)这里选上

第二部分:

General setup ---> 通用的一些选项

2.1 () Local version - append to kernel release 在内核版本后追加的字符串,字符串不得超过64字节

2.2 [ ] Automatically append version information to the version string 自动在内核版本后追加的字符串,这个选项是与git库相关的,通常可以不选这里不选

2.3 [ ] Support for paging of anonymous memory (swap) 支持交换内存,没有特殊要求请选择这里不选

2.4 [*] System V IPC 进程间通信(IPC)支持,许多程序需要这个功能.必选,

除非有自己的其他要求这里选上

2.5 [ ] IPC Namespaces IPC命名空间支持,不确定可以不选这里不选

2.6 [*] POSIX Message Queues POSIX消息队列,通常需要配置这里选上

2.7 [ ] BSD Process Accounting 可以将行程资料记录下来,通常建议配置《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

2.8 [ ] Export task/process statistics through netlink (EXPERIMENTAL) 通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的《在读卡器项目中没用到此项功能,其后选项以后再进行相关说明》这里不选

2.9 [ ] UTS Namespaces UTS名字空间支持,不确定可以不选这里不选

2.10 [*] Auditing support 审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计这里选上

2.11 <*> Kernel .config support 把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息这里选上

2.12 [*] Enable access to .config through /proc/config.gz 允许通过/proc/config.gz访问内核的配置信息这里选上

2.13 [ ] Kernel->user space relay support (formerly relayfs) 在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口这里不选

2.14 () Initramfs source file(s) initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白这里不选

2.15 [*] Optimize for size (Look out for broken compilers!) 编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码这里选上

2.16 Configure standard kernel features (for small systems) --->配置标准的内核特性(为小型系统)

2.16.1 --- Configure standard kernel features (for small systems) 配置标准的内核特性(为小型系统)

2.16.2 --- Load all symbols for debugging/kksymoops 装载所有的调试符号表信息,仅供调试时选择

2.16.3 [ ] Do an extra kallsyms pass 除非你在kallsyms中发现了bug并需要报告这个bug才打开该选项这里不选

第三部分:

Loadable module support --->提供系统模块的选择配置

3.1 [*] Enable loadable module support 启用模块支持这个选项可以让你的

相关文档
最新文档