Linux-4.4-x86_64 内核配置选项简介
作者:金步国
版权声明
其他作品
联系方式
Gentoo LinuxGentoo内核(gentoo-sources)特有的选项
General setup常规设置
Enable loadable module support可加载模块支持
Enable the block layer块设备支持
Processor type and features中央处理器(CPU)类型及特性
Power management and ACPI options电源管理和ACPI选项
Bus options (PCI etc.)总线选项
Executable file formats / Emulations可执行文件格式/仿真
Networking support网络支持
Device Drivers设备驱动程序
Firmware Drivers固件(Firmware)驱动
File systems文件系统
Kernel hacking内核hack选项
Security options如果您不了解这里的选项,建议不要选择安全选项,否则可能会弄巧成拙.
Cryptographic API内核加密API支持这里的加密算法广泛应用于驱动程序通信协议等机制.不能选择子选项。如果核心中的其他部分依赖它,它将自动选择.可能需要手动选择内核树外的模块.
Virtualization虚拟化支持仅在将此内核用作宿主机(host)只有在这里打开子项
Library routines库子程序子选项可以选项。如果核心中的其他部分依赖它,它将自动选择.可能需要手动选择内核树外的模块.
Linux-4.4-x86_64 内核配置选项简介
作者:
版权声明
本文作者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
- 无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失。
- 自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件。
- 名誉权:任何人都可以自由的转载/引用/再创作此文档,但必须保留作者署名并注明出处。
其他作品
本文作者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
- 金步国作品集 [ http://www.jinbuguo.com/ ]
联系方式
由于作者水平有限,因此不能保证作品内容准确无误。如果你发现了作品中的错误(哪怕是错别字也好),请来信指出,任何提高作品质量的建议我都将虚心接纳。
- Email(QQ):70171448在QQ邮箱
Last Update: 2016-10-24
Gentoo Linux Gentoo内核(gentoo-sources)特有的选项
Gentoo Linux support CONFIG_GENTOO_LINUX
选"Y"后,将会自动选中那些在Gentoo环境中必须开启的内核选项,以避免用户遗漏某些必要的选项,减轻一些用户配置内核的难度.建议选"Y".
Linux dynamic and persistent device naming (userspace devfs) support CONFIG_GENTOO_LINUX_UDEV
目前此项的作用仅是开启CONFIG_TMPFS和CONFIG_DEVTMPFS及其所依赖的选项.CONFIG_TMPFS是为了在"/dev/shm","/run","/sys/fs/cgroup"三个目录中挂载tmpfs文件系统,CONFIG_DEVTMPFS是为了在"/dev"目录挂载devtmpfs文件系统.建议选"Y".
Select options required by Portage features CONFIG_GENTOO_LINUX_PORTAGE
自动选中各种Portage特性(FEATURES="cgroup ipc-sandbox network-sandbox")所依赖的内核选项.由于这些FEATURES即将变为默认开启,所以建议选"Y".
Support for init systems, system and service managers
"init"系统(系统与服务管理器)."init"是内核启动的第一个用户空间程序(PID=1),也是所有用户态进程的"大总管"([提示]所有内核态进程的大总管是PID=2的[kthreadd]).
OpenRC, runit and other script based systems and managers CONFIG_GENTOO_LINUX_INIT_SCRIPT
OpenRC是Gentoo传统的"init"系统,使用基于SysVinit的传统启动脚本技术.选"Y"后,所有OpenRC所必需的内核选项(目前仅有CONFIG_BINFMT_SCRIPT)都会被自动选中.不确定的选"Y".
systemd CONFIG_GENTOO_LINUX_INIT_SYSTEMD
尽管倍受争议,但是systemd确实是目前风头最劲的"init"系统,大有在Linux世界一统江湖的霸气和潜力.仅在你打算从OpenRC迁移到systemd时选"Y".选"Y"后,内核中所有被systemd依赖的选项都将被自动选中,包括systemd建议的(而非必须的)选项,总计约20项.systemd官方的README文件也列出了必须/推荐/可选的内核选项.
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-"进行编译).除非你想配置后默认自动进行交叉编译,否则不要使用此选项.
显示专属于其他平台(非x86平台)的驱动选项(需要交叉编译),仅供驱动开发者使用,普通的发行版制作者应该选"N".
在内核版本后面加上自定义的版本字符串(最大64字符),可以用"uname -a"命令看到
自动在版本字符串(CONFIG_LOCALVERSION)后面添加版本信息(类似"-gxxxxxxxx"格式),需要有perl以及git仓库支持
Kernel compression mode
内核镜像的压缩格式,可选Gzip/Bzip2/LZMA/XZ/LZO格式之一,推荐使用XZ格式.你的系统中需要有相应的压缩工具.
设置默认主机名,默认值是"(none)".用户可以随后使用系统调用sethostname()来修改主机名.
使用交换分区或者交换文件来做为虚拟内存
System V 进程间通信(IPC)支持,用于进程间同步和交换数据,许多程序需要这个功能.选"Y",除非你确实知道自己在做什么
POSIX消息队列是POSIX IPC的一部分,如果你想编译和运行那些使用"mq_*"系统调用的程序(比如为Solaris开发的程序),或者需要使用Docker容器,就必须开启此选项.POSIX消息队列可以作为"mqueue"文件系统挂载以方便用户对队列进行操作.不确定的选"Y".
用户程序可以使用句柄(而非文件名)来追踪文件(使用open_by_handle_at(2)/name_to_handle_at(2)系统调用),即使某文件被重命名,用户程序依然可定位那个文件.此特性有助于实现用户空间文件服务器(userspace file server).建议选"Y",因为systemd和udev依赖于它.
启用老旧的uselib()系统接口支持,仅在你需要使用基于libc5的古董级程序时才需要,不确定的选"N".
内核审计(跟踪每个进程的活动情况)支持,某些安全相关的内核子系统(例如SELinux)需要它.但是它会与systemd冲突,所以在使用systemd的系统上必须关闭.
对系统调用进行审计.既可独立使用,也可被其他内核子系统(例如SELinux)使用.
审计时使用固定的loginuid.在使用systemd之类的系统上应该开启(login服务由init进程负责重启),在使用SysVinit或Upstart之类的系统上应该关闭(login服务由系统管理员手动重启).OpenRC就是一个基于SysVinit的系统.
IRQ(中断请求)子系统
通过debugfs中的irq_domain_mapping文件向用户显示硬件IRQ号/Linux IRQ号之间的对应关系.仅用于开发调试.
稀疏IRQ号支持.它允许在小型设备上(例如嵌入式设备)定义一个很高的CONFIG_NR_CPUS值,但仍然不希望占用太多内核"memory footprint"(一段可以被操作或被管理的内存区域)的场合.稀疏IRQ也更适合NUMA平台,因为它以一种对NUMA更友好的方式分发中断描述符.不确定的选"N".
Linux内核时钟子系统
内核时钟滴答处理程序,更多信息可以参考内核源码树下的"Documentation/timers/NO_HZ.txt"文件
无论CPU是否需要,都强制按照固定频率不断触发时钟中断.这是最耗电的方式,不推荐使用
CPU在空闲状态时不产生不必要的时钟中断,以使处理器能够在较低能耗状态下运行以节约电力,适合于大多数场合
完全无滴嗒:即使CPU在忙碌状态也尽可能关闭所有时钟中断,适用于CPU在同一时间仅运行一个任务,或者用户空间程序极少与内核交互的场合.即使开启此选项,也需要额外设置"nohz_full=?"内核命令行参数才能真正生效.
即使没有设置"nohz_full"引导参数,也默认对所有CPU(boot CPU 除外)开启完全无滴答特性.
等价于CONFIG_NO_HZ_IDLE,临时用来兼容老版本内核选项,未来会被删除.
高精度定时器(hrtimer)是从2.6.16开始引入,用于取代传统timer wheel(基于jiffies定时器)的时钟子系统.可以降低与内核其他模块的耦合性,还可以提供比1毫秒更高的精度(因为它可以读取HPET/TSC等新型硬件时钟源),可以更好的支持音视频等对时间精度要求较高的应用.建议选"Y".[提示]这里说的"定时器"是指"软件定时器",而不是主板或CPU上集成的硬件时钟发生器(ACPI PM Timer/HPET Timer/TSC Timer).
CPU/进程的时间及状态统计
CPU时间统计方式
简单的基于滴答的统计,适用于大多数场合
E
通过读取CPU计数器进行统计,可以提供更精确的统计,但是对性能有一些不利影响.
利用上下文跟踪子系统,通过观察每一个内核与用户空间的边界进行统计.该选项对性能有显著的不良影响,目前仅用于完全无滴答子系统(CONFIG_NO_HZ_FULL)的调试
通过读取TSC时间戳进行统计,这是统计进程IRQ时间的更细粒度的统计方式,但对性能有些不良影响(特别是在RDTSC指令速度较慢的CPU上).