
Linux编译选项详解.docx
17页linux 内核编译选项详解 (一):General setup空间中有一些有关编译出错的信息[*]Prompt for development and/or incomplete code/drivers显示尚在开发中或尚未完成的代码与驱动.你应该选择它,因为有许多设备可能必需选择这个选项才能进行配置,实际上它是安全的这个选项同样会让一些老的驱动的可用如果你选了 Y,你将会得到更多的阿尔法版本的驱动和代码的配置菜单Local version – append to kernel release在内核版本后面加上自定义的版本字符串(小于 64 字符),可以用”uname -a”命令看到[ ]Automatically append version information to the version string自动生成版本信息这个选项会自动探测你的内核并且生成相应的版本,使之不会和原先的重复这需要 Perl 的支持由于在编译的命令 make-kpkg 中我们会加入- – append-to-version 选项来生成自定义版本,所以这里选 NKernel compression mode (Gzip)内核压缩模式选 baip2 gzip 用于 UNIX 系统的文件压缩。
后缀为.gz 的文件现今已经成为 Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件格式HTTP 协议上的GZIP 编码是一种用来改进 WEB 应用程序性能的技术大流量的 WEB 站点常常 使用 GZIP 压缩技术来让用户感受更快的速度 bzip2 是一个基于 Burrows- Wheeler 变换的无损压缩软件,压缩效果比传统的LZ77/LZ78 压缩算法来得好它是一款免费软件bzip2 能够进行高质量的数据压缩它利用先进的压缩技 术,能够把普通的数据文件压缩 10%至 15%,压缩的速度和解压的效率都非常高!支持现在大多数压缩格式,包括 tar、gzip 等等 lzma 是一个 Deflate 和 LZ77 算法改良和优化后的压缩算法,开发者是 Igor Pavlov,2001 年被首次应用于 7-Zip 压缩工具中,是 2001 年以来得到发展的一个数据压缩算法它使用类似于 LZ77 的字典编码机制,在一般的情况 [*] Support for paging of anonymous memory (swap)将使你的内核支持虚拟内存这个虚拟内存在 LINUX 中就是 SWAP 分区。
除非你不想要SWAP 分区,否则这里必选 Y[*] System V IPCSystem V 进程间通信(IPC)支持 ,于处理器在程序之间同步和交换信息,如果不选这项,很多程序运行不起来,特别地,你想在 LINUX 下运行 DOS 仿真程序,你必须要选 Y[*] POSIX Message QueuesPOSIX 消息队列,这是 POSIX IPC 中的一部分建议你最好将它选上 POSIX 表示可移植操作系统接口[*] BSD Process Accounting这是允许用户进程访问内核,将账户信息写入文件中这通常被认为是个好主意,建议你最好将它选上将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/内存占用等信息 [ ]BSD Process Accounting version 3 file format选 Y,统计信息将会以新的格式( V3)写入,这格式包含进程 ID 和父进程注意这个格式和以前的 v0/v1/v2 格式不兼容,所以你需要 升级相关工具来使用它 [*] Export task/process statistics through netlink (EXPERIMENTAL)处于实验阶段的功能。
通过通用的网络输出工作/进程的相应数据,和 BSD 不同的是,这些数据在进程运行的时候就可以通过相关命令访问和 BSD 类似,数据将在进程结束时送入用户空间如果不清楚,选 N [*] Enable per-task delay accounting (EXPERIMENTAL)在统计信息中包含进程等候系统资源(cpu,IO 同步, 内存交换等)所花费的时间 [*] Enable extended accounting over taskstats (EXPERIMENTAL)在统计信息中包含扩展进程所花费的时间 o [*] Enable per-task storage I/O accounting (EXPERIMENTAL)在统计信息中包含 I/O 存储进程所花费的时间 [*] Auditing support审计支持,用于和内核的某些子模块同时工作, (例如 SELinux)需要它,只有同时选择其子项才能对系统调用进行审计允许审计的下层能够被其他内核子系统使用,比如 SE- Linux,它需要这个来进行登录时的声音和视频输出没有 CONFIG_AUDITSYSCALL 时(即下一个选项)无法进行系统调用。
[*] Enable system-call auditing support支持对系统调用的审计允许系统独立地或者通过其他内核的子系统,调用审计支持,比如 SE-Linux要使用这种审计的文件系统来查看特性,请确保 INOTIFY 已经被设置 RCU Subsystem —> 一个高性能的锁机制 RCU 子系统RCU(Read-Copy Update),顾名思义为读取-复制更新对于被 RCU 保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然 后对副本进行修改,最后使用一个回调(callback )机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据这个时机就是所有引用该数据的 CPU 都退出对共享数据的操作 RCU Implementation (Tree-based hierarchical RCU) —>RCU 实现机制 o (X) Tree-based hierarchical RCU基本数按等级划分 [ ] Enable tracing for RCU激活跟踪 (32) Tree-based hierarchical RCU fanout value基本数按等级划分分列值 [ ] Disable tree-based hierarchical RCU auto-balancing Kernel .config support这个选项允许.config 文件(即编译 LINUX 时的配置文件)保存在内核当中。
它提供正在运行中的或者还在硬盘中的内核的相关配置选项可以通过内核 镜像文件 kernel image file 用命令 script scripts/extract-ikconfig 来提取出来,作为当前内核重编译或者另一个内核编译的参考如果你的内核在运行中,可以通过/proc/config.gz 文件来读取下一个选项提供这 项支持看起来好像是一个不错的功能,可以把编译时的 .config 文件保存在内核中,以供今后参考调用用来重编译和编译其他的内核的时候可以用上你是一个编译内核的狂人的话,这项要选上 [ ] Enable access to .config through /proc/config.gz (NEW)上一项的子项,可 以通过/proc/config.gz 访问当前内核的.config 新功能,上一项选的话这个就选上吧 (18) Kernel log buffer size (16 => 64KB, 17 => 128KB)内核日志缓存的大小,12 => 4 KB,13 => 8 KB,14 => 16 KB 单处理器,15 => 32 KB多处理器,16 => 64 KB for x86 NUMAQ or IA-64,17 => 128 KB for S/390[*] Control Group support —>cgroup 支持,如 cpusets 那样来使用 cgroup 子 系统进程(不确定可以不选) [ ] Example debug cgroup subsystemcgroup子系统调试例子 [*] Namespace cgroup subsystem cgroup子系统命名空间 [*] Freezer cgroup subsystem [*] Cpuset support只有含有大量 CPU(大于 16 个)的 SMP 系统或 NUMA(非一致内存访问 )系统才需要它 o [*] Include legacy /proc//cpuset file [*] Simple CPU accounting cgroup subsystem简单 cgroup 子系统 cpu 所花费的时间 o [ ] Memory Resource Controller for Control Groupscgroup 内存资源控制器 [ ] enable deprecated sysfs features which may confuse old userspce tools在某些文件系统上(比如 debugfs)提供从内核空间向用户空间传递大量数据的接口-*- Kernel->user space relay support (formerly relayfs)内核系统区和用户区进行传递通讯的支持。
这个选项在特定的文 件系统中提供数据传递接口支持,它可以提供从内核空间到用户空间的大批量的数据传递工具和设施如果不清楚,选 N Namespaces support命名空间支持,允许服务器为不同的用户信息提供不 同的用户名空间服务[*] UTS namespace通用终端系统的命名空间它允许容器,比如 Vservers 利用 UTS 命名空间来为不同的服务器提供不同 的 UTS如果不清楚,选 N[*] IPC namespaceIPC 命名空间,不确定可以不选[*] Initial RAM filesystem and RAM disk (initramfs/initrd) suppor初始 RAM 的文件和 RAM 磁盘( initramfs /initrd)支持(如果要采用 initrd 启动则要选择,否则可以不选) () Initramfs source file(s)initrd 已经被 initramfs 取代, 如果你不明白这是什么 意思 ,请保持空白 [*] Optimize for size这个选项将在 GCC 命令后用 “-Os” 代替 “-O2″参数,这样可以得到更小的内核。
没必要选一个编译好的内核才 7-10 多 M,大家不会少这么点空间吧选上了可能会出一些问题最好不选有时会产生错误的二进制代码[ ] Configure standard kernel features (for small systems) —>配置标准的内核特性(为小型系统 )这个选项可以让内核的基本选项和设置无效或者扭曲这是用于特定环境中的,它允许“非标准” 内核你要是选它,你一定要明白自己在干什么这是为了编译某些特殊用途的内核使用的,例如引导盘系统 -*- Load all symbols for debugging/ksymoops装载所有的调试符号表信息,仅供调试时选择 o [*] Include all symbols in kallsyms在 kallsyms 中包含内核知道的所有符号,内核将会 增大 300K o [*] Do an extra kallsyms pass除非你在 ka。
