Linux3.10内核编译选项
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux-3.10-x86_64 内核配置选项简介
64-bit kernel CONFIG_64BIT
编译64位内核.本文仅讲述x86_64(AMD64)平台的内核编译,所以这个是必选项.
General setup
常规设置
Cross-compiler tool prefix CONFIG_CROSS_COMPILE
交叉编译工具前缀(比如"arm-linux-"相当于使用"make CROSS_COMPILE=arm-linux-"进行编译).除非你想配置后默认自动进行交叉编译,否则不要使用此选项.
Local version - append to kernel release CONFIG_LOCALVERSION
在内核版本后面加上自定义的版本字符串(最大64字符),可以用"uname -a"命令看到Automatically append version information to the version string CONFIG_LOCALVERSION_AUTO
自动在版本字符串(CONFIG_LOCALVERSION)后面添加版本信息(类似"-gxxxxxxxx"格式),需要有perl以及git仓库支持
Kernel compression mode
内核镜像的压缩格式,可选Gzip/Bzip2/LZMA/XZ/LZO格式之一,推荐使用XZ格式.你的系统中需要有相应的压缩工具.
Default hostname CONFIG_DEFAULT_HOSTNAME
设置默认主机名,默认值是"(none)".用户可以随后使用系统调用sethostname()来修改主机名. Support for paging of anonymous memory (swap) CONFIG_SWAP
使用交换分区或者交换文件来做为虚拟内存
System V IPC CONFIG_SYSVIPC
System V 进程间通信(IPC)支持,用于进程间同步和交换数据,许多程序需要这个功能.选"Y",除非你确实知道自己在做什么
POSIX Message Queues CONFIG_POSIX_MQUEUE
POSIX消息队列是POSIX IPC的一部分,如果你想编译和运行那些使用"mq_*"系统调用的程序(比如为Solaris开发的程序),就必须开启此选项.POSIX消息队列可以作为"mqueue"文件系统挂载以方便用户对队列进行操作.不确定的选"Y".
open by fhandle syscalls CONFIG_FHANDLE
用户程序可以使用句柄(而非文件名)来追踪文件(使用open_by_handle_at(2)/name_to_handle_at(2)系统调用),即使某文件被重命名,用户程序依然可定位那个文件.此特性有助于实现用户空间文件服务器(userspace ).建议选"Y",因为systemd和udev依赖于它.
Auditing support CONFIG_AUDIT
内核审计(跟踪每个进程的活动情况)支持,某些安全相关的内核子系统(例如SELinux)需要它.但是它会与systemd冲突,所以在使用systemd的系统上必须关闭.
Enable system-call auditing support CONFIG_AUDITSYSCALL
对系统调用进行审计.既可独立使用,也可被其他内核子系统(例如SELinux)使用.
Make audit loginuid immutable CONFIG_AUDIT_LOGINUID_IMMUTABLE
审计时使用固定的loginuid.在使用systemd之类的系统上应该开启(login服务由init进程负责重启),在使用SysVinit或Upstart之类的系统上应该关闭(login服务由系统管理员手动重启).OpenRC就是一个基于SysVinit的系统.
IRQ subsystem
IRQ(中断请求)子系统
Expose hardware/virtual IRQ mapping via debugfs CONFIG_IRQ_DOMAIN_DEBUG
通过debugfs中的irq_domain_mapping文件向用户显示硬件IRQ号/Linux IRQ号之间的对应关系.仅用于开发调试.
Support sparse irq numbering CONFIG_SPARSE_IRQ
稀疏IRQ号支持.它允许在小型设备上(例如嵌入式设备)定义一个很高的CONFIG_NR_CPUS值,但仍然不希望占用太多内核"memory footprint"(一段可以被操作或被管理的内存区域)的场
合.稀疏IRQ也更适合NUMA平台,因为它以一种对NUMA更友好的方式分发中断描述符.不确定的选"N".
Timers subsystem
Linux内核时钟子系统
Timer tick handling
内核时钟滴答处理程序,更多信息可以参考内核源码树下的"Documentation/timers/NO_HZ.txt"文件
Periodic timer ticks (constant rate, no dynticks) CONFIG_HZ_PERIODIC
无论CPU是否需要,都强制按照固定频率不断触发时钟中断.这是最耗电的方式,不推荐使用Idle dynticks system (tickless idle) CONFIG_NO_HZ_IDLE
CPU在空闲状态时不产生不必要的时钟中断,以使处理器能够在较低能耗状态下运行以节约电力,适合于大多数场合
Full dynticks system (tickless) CONFIG_NO_HZ_FULL
完全无滴嗒:即使CPU在忙碌状态也尽可能关闭所有时钟中断,适用于CPU在同一时间仅运行一个任务,或者用户空间程序极少与内核交互的场合.即使开启此选项,也需要额外设置"nohz_full=?"内核命令行参数才能真正生效.
Full dynticks system on all CPUs by default CONFIG_NO_HZ_FULL_ALL
即使没有设置"nohz_full"引导参数,也默认对所有CPU(boot CPU 除外)开启完全无滴答特性. Old Idle dynticks config CONFIG_NO_HZ
等价于CONFIG_NO_HZ_IDLE,临时用来兼容老版本内核选项,未来会被删除.
High Resolution Timer Support CONFIG_HIGH_RES_TIMERS
高精度定时器(hrtimer)是从2.6.16开始引入,用于取代传统timer wheel(基于jiffies定时器)的时钟子系统.可以降低与内核其他模块的耦合性,还可以提供比1毫秒更高的精度(因为它可以读取HPET/TSC等新型硬件时钟源),可以更好的支持音视频等对时间精度要求较高的应用.建议选"Y".[提示]这里说的"定时器"是指"软件定时器",而不是主板或CPU上集成的硬件时钟发生器(ACPI PM Timer/HPET Timer/TSC Timer).
CPU/Task time and stats accounting