Linux-3.10-x86_64 内核配置选项简介
作者:金步国[www.jinbuguo.com]
版权声明
本文作者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
-
无担保:本文作者不保证作品内容准确无误,亦不承担任何由于使用此文档所导致的损失。
-
自由使用:任何人都可以自由的阅读/链接/打印此文档,无需任何附加条件。
-
名誉权:任何人都可以自由的转载/引用/再分发此文档,但必须保留作者署名并注明出处。
其他作品
本文作者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
联系方式
由于作者水平有限,因此不能保证作品内容准确无误。如果你发现了作品中的错误,请您来信指出,哪怕是错别字也好,任何提高作品质量的建议我都将虚心接纳。
-
Email(QQ):70171448在QQ.com
Gentoo Linux
Gentoo内核(gentoo-sources)特有的选项
-
Gentoo Linux support
-
选"Y"
后,
将会自动选中那些在Gentoo
环境中必须开启的内核选项,
以避免用户遗漏某些必要的选项,
减轻一些用户配置内核的难度.
建议选"Y".
-
Linux dynamic and persistent device naming (userspace devfs)support
- 目前此项的作用仅是开启CONFIG_TMPFS 和CONFIG_DEVTMPFS 及其所依赖的选项.CONFIG_TMPFS 是为了在"/dev/shm","/run","/sys/fs/cgroup" 三个目录中挂载tmpfs 文件系统,CONFIG_DEVTMPFS 是为了在"/dev" 目录挂载devtmpfs 文件系统. 建议选"Y".
CONFIG_GENTOO_LINUX_UDEV
Support for init systems, system and service managers
-
"init"
系统(
系统与服务管理器)."init"
是内核启动的第一个用户空间程序(PID=1),
也是所有用户态进程的"
大总管"([
提示]
所有内核态进程的大总管是PID=2
的[kthreadd]).
-
OpenRC, runit and other script based systems andmanagers
- OpenRC 是Gentoo 传统的"init" 系统, 使用基于 SysVinit 的传统启动脚本技术. 选"Y" 后, 所有OpenRC 所必需的内核选项( 目前仅有CONFIG_BINFMT_SCRIPT) 都会被自动选中. 不确定的选"Y". systemd
-
尽管并非完美无缺,
但是
systemd
确实是目前风头最劲的"init"
系统,
大有在Linux
世界一统江湖的霸气和潜力.
仅在你打算从
OpenRC迁移到
systemd
时选"Y".
选"Y"
后,
内核中所有被
systemd
依赖的选项都将被自动选中,
包括
systemd
建议的(
而非必须的)
选项,
总计约20
项.
CONFIG_GENTOO_LINUX_INIT_SCRIPT
CONFIG_GENTOO_LINUX_INIT_SYSTEMD
64-bit kernel
- 编译64 位内核. 本文仅讲述x86_64(AMD64) 平台的内核编译, 所以这个是必选项.
CONFIG_GENTOO_LINUX
CONFIG_64BIT
General setup
常规设置
-
Cross-compiler tool prefix
- 交叉编译工具前缀( 比如"arm-linux-" 相当于使用"makeCROSS_COMPILE=arm-linux-" 进行编译). 除非你想配置后默认自动进行交叉编译, 否则不要使用此选项. Local version - append to kernel release
- 在内核版本后面加上自定义的版本字符串( 最大64 字符), 可以用"uname-a" 命令看到 Automatically append version information to the versionstring
- 自动在版本字符串(CONFIG_LOCALVERSION) 后面添加版本信息( 类似"-gxxxxxxxx" 格式), 需要有perl 以及git 仓库支持 Kernel compression mode
- 内核镜像的压缩格式, 可选Gzip/Bzip2/LZMA/XZ/LZO 格式之一, 推荐使用XZ 格式. 你的系统中需要有相应的压缩工具. Default hostname
- 设置默认主机名, 默认值是"(none)". 用户可以随后使用系统调用sethostname() 来修改主机名. Support for paging of anonymous memory (swap)
- 使用交换分区或者交换文件来做为虚拟内存 System V IPC
- System V 进程间通信 (IPC) 支持, 用于进程间同步和交换数据, 许多程序需要这个功能. 选"Y", 除非你确实知道自己在做什么 POSIX Message Queues
- POSIX 消息队列是POSIXIPC 的一部分, 如果你想编译和运行那些使用"mq_*" 系统调用的程序( 比如为Solaris 开发的程序), 就必须开启此选项.POSIX 消息队列可以作为"mqueue" 文件系统挂载以方便用户对队列进行操作. 不确定的选"N". open by fhandle syscalls
- 用户程序可以使用句柄( 而非文件名) 来追踪文件( 使用open_by_handle_at(2)/name_to_handle_at(2) 系统调用), 即使某文件被重命名, 用户程序依然可定位那个文件. 此特性有助于实现用户空间文件服务器(userspacefile server). 不确定的选"N", 但使用systemd 的建议选"Y". Auditing support
-
内核审计(
跟踪每个进程的活动情况)
支持,
某些安全相关的内核子系统(
例如SELinux)
需要它
-
Enable system-call auditing support
- 对系统调用进行审计. 既可独立使用, 也可被其他内核子系统( 例如SELinux) 使用. Make audit loginuid immutable
- 审计时使用固定的loginuid. 在使用 systemd 之类的系统上应该开启(login 服务由init 进程负责重启), 在使用 SysVinit 或 Upstart 之类的系统上应该关闭(login 服务由系统管理员手动重启). OpenRC 就是一个基于SysVinit 的系统.
CONFIG_AUDITSYSCALL
CONFIG_AUDIT_LOGINUID_IMMUTABLE
IRQ subsystem
-
IRQ(
中断请求)
子系统
-
Expose hardware/virtual IRQ mapping viadebugfs
- 通过debugfs 中的irq_domain_mapping 文件向用户显示硬件IRQ 号/LinuxIRQ 号之间的对应关系. 仅用于开发调试. Support sparse irq numbering
- 稀疏IRQ 号支持. 它允许在小型设备上( 例如嵌入式设备) 定义一个很高的CONFIG_NR_CPUS 值, 但仍然不希望占用太多内核" memoryfootprint"( 一段可以被操作或被管理的内存区域) 的场合. 稀疏IRQ 也更适合NUMA 平台, 因为它以一种对NUMA 更友好的方式分发中断描述符. 不确定的选"N".
CONFIG_IRQ_DOMAIN_DEBUG
CONFIG_SPARSE_IRQ
Timers subsystem
-
Linux内核时钟子系统
-
Timer tick handling
-
内核时钟滴答处理程序,
更多信息可以参考内核源码树下的"
Documentation/timers/NO_HZ.txt"
文件
-
Periodic timer ticks (constant rate, nodynticks)
- 无论CPU 是否需要, 都强制按照固定频率不断触发时钟中断. 这是最耗电的方式, 不推荐使用 Idle dynticks system (tickless idle)
- CPU 在空闲状态时不产生不必要的时钟中断, 以使处理器能够在较低能耗状态下运行以节约电力, 适合于大多数场合 Full dynticks system (tickless)
- 完全无滴嗒: 即使CPU 在忙碌状态也尽可能关闭所有时钟中断, 适用于CPU 在同一时间仅运行一个任务, 或者用户空间程序极少与内核交互的场合. 即使开启此选项, 也需要额外设置"nohz_full=?" 内核命令行参数才能真正生效.
CONFIG_HZ_PERIODIC
CONFIG_NO_HZ_IDLE
CONFIG_NO_HZ_FULL
Full dynticks system on all CPUs by default
- 即使没有设置"nohz_full" 引导参数, 也默认对所有CPU(bootCPU 除外) 开启完全无滴答特性. Old Idle dynticks config
- 等价于CONFIG_NO_HZ_IDLE, 临时用来兼容老版本内核选项, 未来会被删除. High Resolution Timer Support
- 高精度定时器(hrtimer) 是从2.6.16 开始引入, 用于取代传统timerwheel( 基于 jiffies定时器) 的时钟子系统. 可以降低与内核其他模块的耦合性, 还可以提供比1 毫秒更高的精度( 因为它可以读取HPET/TSC 等新型硬件时钟源), 可以更好的支持音视频等对时间精度要求较高的应用. 建议选"Y".[ 提示] 这里说的" 定时器" 是指" 软件定时器", 而不是集成在主板上的硬件时钟发生器(ACPIPM Timer/HPET Timer/TSC Timer).
CONFIG_NO_HZ_FULL_ALL
CONFIG_NO_HZ
CONFIG_HIGH_RES_TIMERS
CPU/Task time and stats accounting
-
内核时钟滴答处理程序,
更多信息可以参考内核源码树下的"
Documentation/timers/NO_HZ.txt"
文件
-
CPU/
进程的时间及状态统计
-
Cputime accounting
-
CPU
时间统计方式
-
Simple tick based cputime accounting
- 简单的基于滴答的统计, 适用于大多数场合 Deterministic task and CPU timeaccounting
- 通过读取CPU 计数器进行统计, 可以提供更精确的统计, 但是对性能有一些不利影响. Full dynticks CPU time accounting
- 利用上下文跟踪子系统, 通过观察每一个内核与用户空间的边界进行统计. 该选项对性能有显著的不良影响, 目前仅用于完全无滴答子系统(CONFIG_NO_HZ_FULL) 的调试 Fine granularity task level IRQ timeaccounting
- 通过读取时间戳进行统计, 这是统计进程IRQ 时间的更细粒度的统计方式, 但对性能有些不良影响.
CONFIG_TICK_CPU_ACCOUNTING
CONFIG_VIRT_CPU_ACCOUNTING_NATIVE
CONFIG_VIRT_CPU_ACCOUNTING_GEN
CONFIG_IRQ_TIME_ACCOUNTING
BSD Process Accounting
-
用户空间程序可以要求内核将进程的统计信息写入一个指定的文件,
主要包括进程的创建时间/
创建者/
内存占用等信息.
-
BSD Process Accounting version 3 fileformat
- 使用新的v3 版文件格式, 可以包含每个进程的PID 和其父进程的PID, 但是不兼容老版本的文件格式. 比如 GNUAccounting Utilities 这样的工具可以识别v3 格式
CONFIG_BSD_PROCESS_ACCT_V3
Export task/process statistics through netlink
-
通过
netlink
接口向用户空间导出进程的统计信息,
与BSD Process Accounting
的不同之处在于这些统计信息在整个进程生存期都是可用的.
-
Enable per-task delay accounting
- 在统计信息中包含进程等候系统资源(cpu,IO 同步, 内存交换等) 所花费的时间 Enable extended accounting over taskstats
-
在统计信息中包含进程的更多扩展信息.
-
Enable per-task storage I/O accounting
- 在统计信息中包含进程在存储设备上的I/O 字节数.
CONFIG_TASK_IO_ACCOUNTING
CONFIG_TASK_DELAY_ACCT
CONFIG_TASK_XACCT
CONFIG_BSD_PROCESS_ACCT
CONFIG_TASKSTATS
RCU Subsystem
-
CPU
时间统计方式
-
RCU(Read-CopyUpdate)子系统.
在读多写少的情况下,
这是一个高性能的锁机制,
对于被RCU
保护的共享数据结构,
读者不需要获得任何锁就可以访问它(
速度非常快),
但写者在访问它时首先拷贝一个副本,
然后对副本进行修改,
最后使用一个回调机制在适当的时机把指向原来数据的指针重新指向新的被修改的数据,
速度非常慢.RCU
只适用于读多写少的情况:
如网络路由表的查询更新,
设备状态表的维护,
数据结构的延迟释放以及多径I/O
设备的维护等.
-
RCU Implementation
-
RCU
的实现方式
-
Tree-based hierarchical RCU
- 基于树型分层结构的实现. 最适用于多CPU 的非实时系统. Preemptible tree-based hierarchical RCU
- 抢占式基于树型分层结构的实现. 最适用于那些要求快速响应的多CPU 实时系统. UP-only small-memory-footprint RCU
- 最简单的实现, 能够大幅降低RCU 系统的内存占用. 最适用于单CPU 的非实时系统. Preemptible UP-only small-memory-footprintRCU
- 抢占式简单实现, 能够大幅降低RCU 系统的内存占用. 最适用于那些要求快速响应的单CPU 实时系统.
CONFIG_TREE_RCU
CONFIG_TREE_PREEMPT_RCU
CONFIG_TINY_RCU
CONFIG_TINY_PREEMPT_RCU
Consider userspace as in RCU extended quiescentstate
- 在内核和用户边界设置钩子函数, 将运行在用户态的CPU 从全局RCU 状态机制中移除, 这样就不会在RCU 系统中维护此CPU 的时钟滴答. 除非你想要帮助开发CONFIG_NO_HZ_FULL 模块, 否则不要打开此选项, 而且它还会对性能有不利影响. Force context tracking
- 默认在内核和用户边界进行探测( 上下文跟踪), 以便测试依赖于此特性的各种功能( 比如用户空间的RCU extended quiescentstate), 这个特性目前仅用于调试目的, 未来也许会用于为CONFIG_NO_HZ_FULL 模块提供支持 Tree-based hierarchical RCU fanout value
- 这个选项控制着树形RCU 层次结构的端点数(fanout), 以允许RCU 子系统在拥有海量CPU 的系统上高效工作. 这个值必须至少等于CONFIG_NR_CPUS 的1/4 次方(4 次根号). 生产系统上应该使用默认值(64). 仅在你想调试RCU 子系统时才需要减小此值. Tree-based hierarchical RCU leaf-level fanoutvalue
- 这个选项控制着树形RCU 层次结构的叶子层的端点数(leaf-levelfanout). 对于期望拥有更高能耗比( 更节能) 的系统, 请保持其默认值(16). 对于拥有成千上万个CPU 的系统来说, 应该考虑将其设为最大值(CONFIG_RCU_FANOUT). Disable tree-based hierarchical RCUauto-balancing
- 强制按照CONFIG_RCU_FANOUT_LEAF 的值, 而不是使用自动平衡树结构来实现RCU 子系统. 目前仅用于调试目的. 未来也许会用于增强NUMA 系统的性能. Accelerate last non-dyntick-idle CPU's graceperiods
- 即使CPU 还在忙碌, 也允许进入dynticks-idle 状态, 并且阻止RCU 每4 个滴答就唤醒一次该CPU, 这样能够更有效的使用电力, 同时也拉长了RCU graceperiod 的时间, 造成性能降低. 如果能耗比对你而言非常重要( 你想节省每一分电力), 并且你不在乎系统性能的降低(CPU 唤醒时间增加), 可以开启此选项. 台式机和服务器建议关闭此选项. Enable RCU priority boosting
-
允许提升RCU
实时优先级.
如果系统的负载经常很重,
或者你需要快速的实时响应系统,
那么就选"Y",
否则应该选"N".
-
Real-time priority to boost RCU readers to
- 默认提升RCU 实时优先级到什么程度. 取值范围是[1,99], 默认值是"1". 对于大多数实时系统来说, 默认值是合适的, 但是对于多线程实时系统来说, 可能需要增加这个值, 具体可以参考内核帮助的说明. 仅在你确实理解了的情况下再改变默认值. Milliseconds to delay boosting after RCU grace-periodstart
- 在提升RCU 优先级之前, 允许有多长时间潜伏期( 延迟), 取值范围是[0,3000], 单位是毫秒, 默认值是"500". 不确定的请使用默认值.
CONFIG_RCU_BOOST_PRIO
CONFIG_RCU_BOOST_DELAY
Offload RCU callback processing from boot-selectedCPUs
- 如果你想帮助调试内核可以开启, 否则请关闭. Build-forced no-CBs CPUs
- 在开启CONFIG_RCU_NOCB_CPU 选项的情况下, 指定哪个CPU 是No-CBCPU, 相当于预先设置"rcu_nocbs=" 内核引导参数.
CONFIG_RCU_USER_QS
CONFIG_CONTEXT_TRACKING_FORCE
CONFIG_RCU_FANOUT
CONFIG_RCU_FANOUT_LEAF
CONFIG_RCU_FANOUT_EXACT
CONFIG_RCU_FAST_NO_HZ
CONFIG_RCU_BOOST
CONFIG_RCU_NOCB_CPU
Kernel .config support
-
RCU
的实现方式
-
把内核的配置信息编译进内核中,
以后可以通过scripts/extract-ikconfig
脚本从内核镜像中提取这些信息
-
Enable access to .config through/proc/config.gz
- 允许通过/proc/config.gz 文件访问内核的配置信息
CONFIG_IKCONFIG_PROC
Kernel log buffer size
- 设置内核日志缓冲区的大小:12( 最小值)=4KB,...,16=64KB,17=128KB,18=256KB,...,21( 最大值)=2048KB Automatically enable NUMA aware memory/taskplacement
- 在 NUMA(Non-UniformMemory AccessArchitecture) 系统上自动启用进程/ 内存均衡, 也就是自动开启CONFIG_NUMA_BALANCING 特性. Memory placement aware NUMA scheduler
- 允许自动根据NUMA 系统的节点分布状况进行进程/ 内存均衡( 方法很原始, 就是简单的内存移动). 这个选项对UMA 系统无效.[ 提示]UMA 系统的例子:(1) 只有一颗物理CPU( 即使是多核) 的电脑,(2) 不支持" 虚拟NUMA", 或" 虚拟NUMA" 被禁用的虚拟机( 即使所在的物理机是NUMA 系统) Control Group support
-
Cgroup(ControlGroup)
是一种进程管理机制,
可以针对一组进程进行系统资源的分配和管理,
可用于Cpusets,CFS(
完全公平调度器),
内存管理等子系统.
此外,systemd
也依赖于它.
更多细节可以参考内核的"
Documentation/cgroups/cgroups.txt"
文件
-
Example debug cgroup subsystem
- 导出cgroups 框架的调试信息, 仅用于调试目的. Freezer cgroup subsystem
- 允许冻结/ 解冻cgroup 内所有进程 Device controller for cgroups
- 允许为cgroup 建立设备白名单, 这样cgroup 内的进程将仅允许对白名单中的设备进行mknod/open 操作 Cpuset support
-
CPUSET
支持:
允许将CPU
和内存进行分组,
并指定某些进程只能运行于特定的分组.
这里有一篇
CPUSET的用法
-
Include legacy /proc/<pid>/cpusetfile
- 提供过时的/proc/<pid>/cpuset 文件接口
CONFIG_PROC_PID_CPUSET
Simple CPU accounting cgroup subsystem
- 提供一个简单的资源控制器(ResourceController, 用于实现一组任务间的资源共享), 以监控cgroup 内所有进程的总CPU 使用量. Resource counters
-
为cgroup
提供独立于controller
资源计数器
-
Memory Resource Controller for Control Groups
-
为cgroup
添加内存资源控制器,
包含匿名内存和页面缓存(
Documentation/cgroups/memory.txt).
开启此选项后,
将会增加关联到每个内存页fixedmemory
大小,
具体在64
位系统上是40bytes/PAGE_SIZE.
仅在你确实明白什么是
memoryresource controller
并且确实需要的情况下才开启此选项.
此功能可以通过命令行选项"cgroup_disable=memory"
进行关闭.
-
Memory Resource Controller Swap Extension
-
给
MemoryResource Controller
添加对swap
的管理功能.
这样就可以针对每个cgroup
限定其使用的mem+swap
总量.
如果关闭此选项,memory resource controller
将仅能限制mem
的使用量,
而无法对swap
进行控制(
进程有可能耗尽swap).
开启此功能会对性能有不利影响,
并且为了追踪swap
的使用也会消耗更多的内存(
如果swap
的页面大小是4KB,
那么每1GB
的swap
需要额外消耗512KB
内存),
所以在内存较小的系统上不建议开启.
-
Memory Resource Controller Swap Extension enabled bydefault
- 如果开启此选项, 那么将默认开启CONFIG_MEMCG_SWAP 特性, 否则将默认关闭. 即使默认开启也可以通过内核引导参数"swapaccount=0" 禁止此特性.
CONFIG_MEMCG_SWAP_ENABLED
Memory Resource Controller Kernel Memoryaccounting
- 为Memory Resource Controller 添加对内核对象所占用内存的管理功能. 和标准的Memory Resource Controller 对内存的控制不一样之处在于: 这些内核对象所占用的内存是基于每个内存页的, 并且可以被swap 到硬盘. 使用这个功能可以确保cgroup 中的进程不会单独耗尽所有内核资源.
CONFIG_MEMCG_SWAP
CONFIG_MEMCG_KMEM
HugeTLB Resource Controller for ControlGroups
-
给
MemoryResource Controller
添加对swap
的管理功能.
这样就可以针对每个cgroup
限定其使用的mem+swap
总量.
如果关闭此选项,memory resource controller
将仅能限制mem
的使用量,
而无法对swap
进行控制(
进程有可能耗尽swap).
开启此功能会对性能有不利影响,
并且为了追踪swap
的使用也会消耗更多的内存(
如果swap
的页面大小是4KB,
那么每1GB
的swap
需要额外消耗512KB
内存),
所以在内存较小的系统上不建议开启.
- 为cgroup 添加对 HugeTLB 页的资源控制功能. 开启此选项之后, 你就可以针对每个cgroup 限定其对 HugeTLB 的使用.
CONFIG_MEMCG
CONFIG_CGROUP_HUGETLB
Enable perf_event per-cpu per-container group (cgroup)monitoring
-
为cgroup
添加内存资源控制器,
包含匿名内存和页面缓存(
Documentation/cgroups/memory.txt).
开启此选项后,
将会增加关联到每个内存页fixedmemory
大小,
具体在64
位系统上是40bytes/PAGE_SIZE.
仅在你确实明白什么是
memoryresource controller
并且确实需要的情况下才开启此选项.
此功能可以通过命令行选项"cgroup_disable=memory"
进行关闭.
- 将per-cpu 模式进行扩展, 使其可以监控属于特定cgroup 并运行于特定CPU 上的线程 Group CPU scheduler
-
让CPU
调度程序可以在不同的cgroup
之间分配CPU
的带宽
-
Group scheduling for SCHED_OTHER
-
公平CPU
调度策略,
也就是在多个cgroup
之间平均分配CPU
带宽."
鸡血补丁"CONFIG_SCHED_AUTOGROUP(
自动分组调度功能)
依赖于它.
-
CPU bandwidth provisioning forFAIR_GROUP_SCHED
- 允许用户为运行在CONFIG_FAIR_GROUP_SCHED 中的进程定义CPU 带宽限制. 对于没有定义CPU 带宽限制的cgroup 而言, 可以无限制的使用CPU 带宽. 详情参见 Documentation/scheduler/sched-bwc.txt 文件.
CONFIG_CFS_BANDWIDTH
Group scheduling for SCHED_RR/FIFO
- 允许用户为cgroup 分配实时CPU 带宽, 还可以对非特权用户的实时进程组进行调度. 详情参见 Documentation/scheduler/sched-rt-group.txt 文档.
CONFIG_FAIR_GROUP_SCHED
CONFIG_RT_GROUP_SCHED
Block IO controller
-
公平CPU
调度策略,
也就是在多个cgroup
之间平均分配CPU
带宽."
鸡血补丁"CONFIG_SCHED_AUTOGROUP(
自动分组调度功能)
依赖于它.
-
通用的块IO
控制器接口,
可以用于实现各种不同的控制策略.
目前,IOSCHED_CFQ
用它来在不同的cgroup
之间分配磁盘IO
带宽(
需要额外开启CONFIG_CFQ_GROUP_IOSCHED),
blockiothrottle
也会用它来针对特定块设备限制IO
速率上限(
需要额外开启CONFIG_BLK_DEV_THROTTLING).
更多信息可以参考"
Documentation/cgroups/blkio-controller.txt"
文件.
-
Enable Block IO controller debugging
- 仅用于调试Block IO controller 目的.
CONFIG_DEBUG_BLK_CGROUP
CONFIG_CGROUP_DEBUG
CONFIG_CGROUP_FREEZER
CONFIG_CGROUP_DEVICE
CONFIG_CPUSETS
CONFIG_CGROUP_CPUACCT
CONFIG_RESOURCE_COUNTERS
CONFIG_CGROUP_PERF
CONFIG_CGROUP_SCHED
CONFIG_BLK_CGROUP
Checkpoint/restore support
- 在内核中添加" 检查点/ 恢复" 支持. 也就是添加一些辅助的代码用于设置进程的text, data, heap 段, 并且在/proc 文件系统中添加一些额外的条目. 主要用于调试目的. 不确定的选"N". Namespaces support
-
命名空间支持.
用于支持基于容器的轻量级虚拟化技术(
比如
LXC).
-
UTS namespace
- uname() 系统调用的命名空间支持 IPC namespace
- 进程间通信对象ID 的命名空间支持 User namespace
- 允许容器( 也就是 VServer) 使用user 命名空间. 如果开启此项, 建议同时开启CONFIG_MEMCG 和CONFIG_MEMCG_KMEM 选项, 以允许用户空间使用"memorycgroup" 限制非特权用户的内存使用量. 不确定的选"N". PID Namespaces
- 进程PID 命名空间支持 Network namespace
- 网络协议栈的命名空间支持
CONFIG_UTS_NS
CONFIG_IPC_NS
CONFIG_USER_NS
CONFIG_PID_NS
CONFIG_NET_NS
Require conversions between uid/gids and their internalrepresentation
- 强制将uid/gid 转换为内部表示形式, 以让那些未对uid/gid 进行转换的内核子系统代码也能正常编译. 不确定的选"N". Automatic process group scheduling
- 每个TTY 动态地创建任务分组(cgroup), 这样就可以降低高负载情况下的桌面延迟. 也就是传说中的桌面" 鸡血补丁", 桌面用户建议开启. 但服务器建议关闭. Enable deprecated sysfs features to support old userspacetools
-
为了兼容旧版本的应用程序而保留过时的sysfs
特性.
仅当在使用2008
年以前的发行版时才需要开启,2009
年之后的发行版中必须关闭.
-
Enable deprecated sysfs features bydefault
- 默认开启上述特性
CONFIG_SYSFS_DEPRECATED_V2
Kernel->user space relay support (formerly relayfs)
- 在某些文件系统( 比如debugfs) 中提供中继 (relay) 支持( 从内核空间向用户空间传递大批量数据). 主要用于调试内核. Initial RAM filesystem and RAM disk (initramfs/initrd)support
-
初始内存文件系统(
initramfs,2.6
以上内核的新机制,
使用cpio
格式,
占据的内存随数据的增减自动增减)
与初始内存盘(
initrd,2.4
以前内核遗留的老机制,
使用loop
设备,
占据一块固定的内存,
需要额外开启CONFIG_BLK_DEV_RAM
选项才生效)
支持,
一般通过lilo/grub
的initrd
指令加载.
更多细节可以参考"
Documentation/initrd.txt"
文件,
关于
initrd到
initramfs的进化(
墙内镜像),
可以参考IBM
上的两篇文章:
Linux2.6内核的
Initrd机制解析
和
Linux初始
RAM磁盘(
initrd)概述.
-
Initramfs source file(s)
-
如果你想将
initramfs镜像直接嵌入内核(
比如嵌入式环境或者想使用EFI stubkernel),
而不是通过lilo/grub
这样的引导管理器加载,
可以使用此选项,
否则请保持空白.
这个选项指明用来制作initramfs
镜像的原料,
可以是一个.cpio
文件或一个空格分隔的目录与文件列表.
细节可以参考"
Documentation/early-userspace/README"
文档.
-
User ID to map to 0 (user root)
- 此选项仅在CONFIG_INITRAMFS_SOURCE 中包含目录时才有效, 将此值设为非零( 例如"37"), 那么所有UID=37 的文件在打包到initramfs 镜像内时, 其UID 都将被设为"0". Group ID to map to 0 (group root)
- 此选项仅在CONFIG_INITRAMFS_SOURCE 中包含目录时才有效, 将此值设为非零( 例如"37"), 那么所有GID=37 的文件在打包到initramfs 镜像内时, 其GID 都将被设为"0".
INITRAMFS_ROOT_UID
INITRAMFS_ROOT_GID
Support initial ramdisks compressed using gzip
- 支持经过gzip 压缩的ramdisk 或cpio 镜像 Support initial ramdisks compressed using bzip2
- 支持经过bzip2 压缩的ramdisk 或cpio 镜像 Support initial ramdisks compressed using LZMA
- 支持经过LZMA 压缩的ramdisk 或cpio 镜像 Support initial ramdisks compressed using XZ
- 支持经过XZ 压缩的ramdisk 或cpio 镜像 Support initial ramdisks compressed using LZO
- 支持经过LZO 压缩的ramdisk 或cpio 镜像 Built-in initramfs compression mode
- 选择initramfs 镜像的压缩格式."gzip" 是兼容性最好的格式, 但是压缩率却最低."XZ" 是目前渐渐流行的格式, 压缩率高, 解压速度也不慢.
CONFIG_INITRAMFS_SOURCE
CONFIG_RD_GZIP
CONFIG_RD_BZIP2
CONFIG_RD_LZMA
CONFIG_RD_XZ
CONFIG_RD_LZO
Optimize for size
-
如果你想将
initramfs镜像直接嵌入内核(
比如嵌入式环境或者想使用EFI stubkernel),
而不是通过lilo/grub
这样的引导管理器加载,
可以使用此选项,
否则请保持空白.
这个选项指明用来制作initramfs
镜像的原料,
可以是一个.cpio
文件或一个空格分隔的目录与文件列表.
细节可以参考"
Documentation/early-userspace/README"
文档.
- 编译时优化内核尺寸( 使用GCC 的"-Os" 而不是"-O2" 参数编译), 这会得到更小的内核, 但是运行速度可能会更慢. 主要用于嵌入式环境. Configure standard kernel features (expert users)
-
配置标准的内核特性(
仅供专家使用).
这个选项允许你改变内核的"
标准"
特性(
比如用于需要"
非标准"
内核的特定环境中),
仅在你确实明白自己在干什么的时候才开启.
-
Enable 16-bit UID system calls
- 允许对UID 系统调用进行过时的16-bit 包装, 建议关闭 Sysctl syscall support
- 二进制sysctl 接口支持. 由于现在流行直接通过/proc/sys 以ASCII 明码方式修改内核参数( 需要开启CONFIG_PROC_SYSCTL 选项), 所以已经不需要再通过二进制接口去控制内核参数, 建议关闭它以减小内核尺寸. Load all symbols for debugging/ksymoops
-
装载所有的调试符号表信息,
会增大内核体积,
仅供调试时选择
-
Include all symbols in kallsyms
- 在 /proc/kallsyms 中包含内核知道的所有符号, 内核将会增大300K, 仅在你确实需要的时候再开启
CONFIG_KALLSYMS_ALL
Enable support for printk
- 允许内核向终端打印字符信息. 如果关闭, 内核在初始化过程中将不会输出字符信息, 这会导致很难诊断系统故障. 仅在你确实不想看到任何内核信息时选"N". 否则请选"Y". BUG() support
- 显示故障和失败条件(BUG 和WARN), 禁用它将可能导致隐含的错误被忽略. 建议仅在嵌入式设备或者无法显示故障信息的系统上关闭 Enable ELF core dumps
- 内存转储支持, 可以帮助调试ELF 格式的程序, 用于调试和开发用户态程序 Enable PC-Speaker support
- 主板上的蜂鸣器支持. 主板上的蜂鸣器只能发出或长或短的" 滴" 或" 嘟嘟" 声, 一般用于系统报警. 不要和能够播放音乐的扬声器混淆. 如果你的主板上没有就关闭, 有的话( 开机自检完成后一般能听到" 滴" 的一声) 还是建议开启. Enable full-sized data structures for core
- 在内核中使用全尺寸的数据结构. 禁用它将使得某些内核的数据结构减小以节约内存, 但是将会降低性能 Enable futex support
- 快速用户空间互斥 (fastuserspacemutexes) 可以使线程串行化以避免竞态条件, 也提高了响应速度. 禁用它将导致内核不能正确的运行基于glibc 的程序 Enable eventpoll support
- Epoll 系列系统调用(epoll_*) 支持, 这是当前在Linux 下开发大规模并发网络程序( 比如Nginx) 的热门人选, 设计目的是取代既有POSIXselect(2) 与poll(2) 系统接口, 建议开启. Enable signalfd() system call
- signalfd() 系统调用支持, 建议开启. 传统的处理信号的方式是注册信号处理函数, 由于信号是异步发生的, 要解决数据的并发访问和可重入问题.signalfd 可以将信号抽象为一个文件描述符, 当有信号发生时可以对其read, 这样可以将信号的监听放到select/poll/epoll 监听队列中. Enable timerfd() system call
- timerfd() 系统调用支持, 建议开启.timerfd 可以实现定时器功能, 将定时器抽象为文件描述符, 当定时器到期时可以对其read, 这样也可以放到select/poll/epoll 监听队列中. 更多信息可以参考 linux新的 APIsignalfd、 timerfd、 eventfd使用说明 Enable eventfd() system call
- eventfd() 系统调用支持, 建议开启.eventfd 实现了线程之间事件通知的方式,eventfd 的缓冲区大小是sizeof(uint64_t), 向其write 可以递增这个计数器,read 操作可以读取, 并进行清零.eventfd 也可以放到select/poll/epoll 监听队列中. 当计数器不是0 时, 有可读事件发生, 可以进行读取. Use full shmem filesystem
- 完全使用shmem 来代替ramfs.shmem 是基于共享内存的文件系统( 可以使用swap), 在启用CONFIG_TMPFS 后可以挂载为tmpfs 供用户空间使用, 它比简单的ramfs 先进许多. 仅在微型嵌入式环境中且没有swap 的情况下才可能会需要使用原始的ramfs. Enable AIO support
- 开启POSIX 异步IO 支持. 它常常被高性能的多线程程序使用, 建议开启 Enable PCI quirk workarounds
- 开启针对多种PCI 芯片组的错误规避功能, 仅在确定你的PCI 芯片组确实没有没有任何bug 时才关闭此功能. 至于究竟哪些芯片组有bug, 你可以直接打开"drivers/pci/quirks.c" 文件查看. 不确定的选"Y".
CONFIG_UID16
CONFIG_SYSCTL_SYSCALL
CONFIG_KALLSYMS
CONFIG_PRINTK
CONFIG_BUG
CONFIG_ELF_CORE
CONFIG_PCSPKR_PLATFORM
CONFIG_BASE_FULL
CONFIG_FUTEX
CONFIG_EPOLL
CONFIG_SIGNALFD
CONFIG_TIMERFD
CONFIG_EVENTFD
CONFIG_SHMEM
CONFIG_AIO
CONFIG_PCI_QUIRKS
Embedded system
- 如果你是为嵌入式系统编译内核, 可以开启此选项, 这样一些高级选项就会显示出来. 单独选中此项本身对内核并无任何改变. Kernel Performance Events And Counters
-
性能相关的事件和计数器支持(
既有硬件的支持也有软件的支持).
大多数现代CPU
都会通过性能计数寄存器对特定类型的硬件事件(
指令执行,
缓存未命中,
分支预测失败)
进行计数,
同时又丝毫不会减慢内核和应用程序的运行速度.
这些寄存器还会在某些事件计数到达特定的阈值时触发中断,
从而可以对代码进行性能分析. Linux Performance Event
子系统对上述特性进行了抽象,
提供了针对每个进程和每个CPU
的计数器,
并可以被tools/perf/
目录中的"perf"
工具使用.
-
Debug: use vmalloc to back perf mmap()buffers
- 主要用于调试vmalloc 代码.
CONFIG_DEBUG_PERF_USE_VMALLOC
Enable VM event counters for /proc/vmstat
- " /proc/vmstat" 中包含了从内核导出的虚拟内存的各种统计信息. 开启此项后可以显示较详细的信息( 包含各种事件计数器), 关闭此项则仅仅显示很简略的信息. 主要用于调试和统计. Enable SLUB debugging support
- SLUB 调试支持, 禁用后可显著降低内核大小, 同时/sys/kernel/slab 也将不复存在. Disable heap randomization
- 禁用堆随机化(heaprandomization) 功能. 堆随机化可以让针对堆溢出的攻击变得困难, 但是不兼容那些古董级的二进制程序(2000 年以前). 如果你不需要使用这些古董程序, 那么选"N". Choose SLAB allocator
-
选择内存分配管理器
-
SLAB
- 久经考验的slab 内存分配器, 在大多数情况下都具有良好的适应性. SLUB (Unqueued Allocator)
- SLUB 与SLAB 兼容, 但通过取消大量的队列和相关开销, 简化了slab 的结构. 特别是在多核时拥有比slab 更好的性能和更好的系统可伸缩性. SLOB (Simple Allocator)
- SLOB 针对小型系统设计, 做了非常激进的简化, 以适用于内存非常有限( 小于64M) 的嵌入式环境.
CONFIG_SLAB
CONFIG_SLUB
CONFIG_SLOB
Profiling support
- 添加扩展的性能分析支持, 可以被 OProfile 之类的工具使用. 仅用于调试目的. OProfile system profiling
-
OProfile性能分析工具支持,
仅用于调试目的.
-
OProfile multiplexing support
- OProfilemultiplexing技术支持
CONFIG_OPROFILE_EVENT_MULTIPLEX
Kprobes
- Kprobes 是一个轻量级的内核调试工具, 能在内核运行的几乎任意时间点进行暂停/ 读取/ 修改等操作的调试工具. 仅供调试使用. Optimize very unlikely/likely branches
- 针对内核中某些" 几乎总是为真" 或者" 几乎总是为假" 的条件分支判断使用 "asmgoto" 进行优化( 在分支预测失败时会浪费很多时间在回退上, 但是这种情况极少发生). 很多内核子系统都支持进行这种优化. 建议开启. Transparent user-space probes
- Uprobes 与Kprobes 类似, 但主要用于用户空间的调试. Enable GCOV-based kernel profiling
-
基于
GCC的
gcov(
代码覆盖率测试工具)
的代码分析支持,
仅用于调试
-
Profile entire Kernel
- 支持对整个内核进行分析. 内核体积将会显著增大, 并且运行速度显著减慢.
CONFIG_GCOV_PROFILE_ALL
CONFIG_CROSS_COMPILE
CONFIG_LOCALVERSION
CONFIG_LOCALVERSION_AUTO
CONFIG_DEFAULT_HOSTNAME
CONFIG_SWAP
CONFIG_SYSVIPC
CONFIG_POSIX_MQUEUE
CONFIG_FHANDLE
CONFIG_AUDIT
CONFIG_IKCONFIG
CONFIG_LOG_BUF_SHIFT
CONFIG_NUMA_BALANCING_DEFAULT_ENABLED
CONFIG_NUMA_BALANCING
CONFIG_CGROUPS
CONFIG_CHECKPOINT_RESTORE
CONFIG_NAMESPACES
CONFIG_UIDGID_STRICT_TYPE_CHECKS
CONFIG_SCHED_AUTOGROUP
CONFIG_SYSFS_DEPRECATED
CONFIG_RELAY
CONFIG_BLK_DEV_INITRD
CONFIG_CC_OPTIMIZE_FOR_SIZE
CONFIG_EXPERT
CONFIG_EMBEDDED
CONFIG_PERF_EVENTS
CONFIG_VM_EVENT_COUNTERS
CONFIG_SLUB_DEBUG
CONFIG_COMPAT_BRK
CONFIG_PROFILING
CONFIG_OPROFILE
CONFIG_KPROBES
CONFIG_JUMP_LABEL
CONFIG_UPROBES
CONFIG_GCOV_KERNEL
Enable loadable module support
可加载模块支持
-
Enable loadable module support
-
打开可加载模块支持,
可以通过"makemodules_install"
把内核模块安装在/lib/modules/
中.
然后可以使用modprobe, lsmod, modinfo, insmod, rmmod
等工具进行各种模块操作.
-
Forced module loading
- 允许使用"modprobe--force" 在不校验版本信息的情况下强制加载模块, 这绝对是个坏主意! 建议关闭. Module unloading
-
允许卸载已经加载的模块
-
Forced module unloading
- 允许强制卸载正在使用中的模块(rmmod-f), 即使可能会造成系统崩溃. 这又是一个坏主意! 建议关闭.
CONFIG_MODULE_FORCE_UNLOAD
Module versioning support
- 允许使用为其他内核版本编译的模块, 可会造成系统崩溃. 这同样是个坏主意! 建议关闭. Source checksum for all modules
- 为模块添加"srcversion" 字段, 以帮助模块维护者准确的知道编译此模块所需要的源文件, 从而可以校验源文件的变动. 仅内核模块开发者需要它. Module signature verification
-
在加载模块时检查模块签名,
详情参见"
Documentation/module-signing.txt"
文件.[!!
警告!!]
开启此选项后,
必须确保模块签名后没有被strip(
包括rpmbuild
之类的打包工具).
-
Require modules to be validly signed
- 仅加载已签名并且密钥正确的模块, 拒绝加载未签名或者签名密钥不正确的模块 Automatically sign all modules
- 在执行"makemodules_install" 安装模块的时候, 自动进行签名. 否则你必须手动使用scripts/sign-file 工具进行签名.
CONFIG_MODULE_SIG_FORCE
CONFIG_MODULE_SIG_ALL
Which hash algorithm should modules be signed with?
- 选择对模块签名时使用的散列函数. 建议使用强度最高的"SHA-512" 算法. 注意: 所依赖的散列算法必须被静态编译进内核. 对于"SHA-512" 来说, 就是CONFIG_CRYPTO_SHA512 和CONFIG_CRYPTO_SHA512_SSSE3( 如果你的CPU 支持SSSE3 指令集的话).
CONFIG_MODULE_FORCE_LOAD
CONFIG_MODULE_UNLOAD
CONFIG_MODVERSIONS
CONFIG_MODULE_SRCVERSION_ALL
CONFIG_MODULE_SIG
CONFIG_MODULES
Enable the block layer
块设备支持
-
Enable the block layer
-
块设备支持,
使用SSD/
硬盘/U
盘/SCSI/SAS
设备者必选.
除非你是某些特殊的嵌入式系统,
否则没有理由不使用块设备.
-
Block layer SG support v4
- 为块设备启用第四版 SG(SCSIgeneric) 支持.v4 相比v3 能够支持更复杂的SCSI 指令( 可变长度的命令描述块, 双向数据传输, 通用请求/ 应答协议), 而且UDEV 也要用它来获取设备的序列号. 对于使用systemd 的系统来说, 必须选"Y". 对于不使用systemd 的系统, 如果你需要通过/dev/bsg/* 访问块设备, 建议开启此选项, 否则( 通过/dev/{sd*,st*,sr*}) 可以关闭. Block layer SG support v4 helper lib
- 你不需要手动开启此选项, 如果有其他模块需要使用, 会被自动开启. Block layer data integrity support
- 某些块设备可以通过存储/ 读取额外的信息来保障端到端的数据完整性, 这个选项为文件系统提供了相应的钩子函数来使用这个特性. 如果你的设备支持 T10/SCSIData Integrity Field 或者T13/ATA External Path Protection 特性, 那么可以开启此选项, 否则建议关闭. Block layer bio throttling support
- BioThrottling 支持, 也就是允许限制每个cgroup 对特定设备的IO 速率. 细节可以参考" Documentation/cgroups/blkio-controller.txt". Advanced partition selection
-
如果你想支持各种不同的磁盘分区格式(
特别是与UEFI
配合使用的
GPT
格式),
务必选中此项.
-
Acorn partition support
- Acorn 操作系统使用的分区格式, 请根据实际情况选择子项, 这里省略 Alpha OSF partition support
- Alpha 平台上使用的分区格式 Amiga partition table support
- AmigaOS 使用的分区格式 Atari partition table support
- Atari OS 使用的分区格式 Macintosh partition map support
- 苹果的Macintosh 平台使用的分区格式 PC BIOS (MSDOS partition tables) support
- 渐成历史垃圾, 但目前依然最常见的DOS 分区格式. 除非你确信不使用此格式, 否则必选. 其下的子项根据实际情况选择. Windows Logical Disk Manager (Dynamic Disk)support
- 使用Windows Logical Disk Manager 创建的分区格式. 参见" Documentation/ldm.txt" SGI partition support
- SGI 平台上使用的分区格式 Ultrix partition table support
- DEC/Compaq Ultrix 平台上使用的分区格式 Sun partition tables support
- SunOS 平台上使用的分区格式 Karma Partition support
- Rio Karma MP3 player 使用的分区格式 EFI GUID Partition support
- 代表未来趋势, 眼下正大红大紫的EFI GPT( GUIDPartition Table) 分区格式. 建议开启. 如果你在UEFI 平台上安装则必须开启. SYSV68 partition table support
- Motorola Delta 机器上使用的分区格式
CONFIG_ACORN_PARTITION
CONFIG_OSF_PARTITION
CONFIG_AMIGA_PARTITION
CONFIG_ATARI_PARTITION
CONFIG_MAC_PARTITION
CONFIG_MSDOS_PARTITION
CONFIG_LDM_PARTITION
CONFIG_SGI_PARTITION
CONFIG_ULTRIX_PARTITION
CONFIG_SUN_PARTITION
CONFIG_KARMA_PARTITION
CONFIG_EFI_PARTITION
CONFIG_SYSV68_PARTITION
IO Schedulers
-
IO调度器(
另一篇文章)
-
Deadline I/O scheduler
- deadline 调度器. 简洁小巧( 只有400+ 行代码), 提供了最小的读取延迟. 如果你希望尽快读取磁盘, 而不介意写入延迟, 那它是最佳选择. 通常对于数据库工作负载有最佳的表现. CFQ I/O scheduler
-
cfq(CompleteFairQueuing)
调度器.
努力在各内核线程间公平分配IO
资源,
适用于系统中存在着大量内核线程同时进行IO
请求的情况.
但对于只有少数内核线程进行密集IO
请求的情况,
则会出现明显的性能下降.
-
CFQ Group Scheduling support
- 允许将CFQ 和cgroup 组合使用, 也就是将每个cgroup 看成一个整体, 在各cgroup 之间进行IO 资源的分配. 参见" Documentation/cgroups/blkio-controller.txt" 文件. 还可以参考一下《Linux 内核精髓》中的" 使用 BlockI/O控制器" 一章.
CONFIG_CFQ_GROUP_IOSCHED
BFQ I/O scheduler
-
bfq(BudgetFairQueueing)
调度器.
这是一个基于CFQ
调度器的改进版本,
更适合于对交互性要求比较高的场合,
比如桌面系统和实时系统.
如果静态编译进内核,
还支持和cgroup
配合,
实现分层调度(hierarchicalscheduling).
-
BFQ hierarchical scheduling support
- 通过cgroup 文件系统接口, 允许将BFQ 分层使用( 类似CONFIG_CFQ_GROUP_IOSCHED), 这个子系统的名字是"bfqio".
CONFIG_CGROUP_BFQIO
Default I/O scheduler
- 默认 IO调度器. 如果上述调度器都是模块, 那么将使用最简单的内置NOOP 调度器. NOOP(NoOperation) 调度器只是一个简单的FIFO 队列, 不对IO 请求做任何重新排序处理( 但还是会做一定程度的归并), 适合于SSD/U 盘/ 内存/SAN(StorageAreaNetworks)/ 虚拟机中的硬盘/iSCSI/ 硬RAID 等无需寻道的存储设备, 重点是可以节约CPU 资源, 但不适用于普通硬盘这样的需要依靠磁头来定位的设备. 另外, 有人说拥有 TCQ/ NCQ 技术( 能够自动重新排序) 的硬盘也适合用NOOP 调度器, 这个说法其实并不那么合理, 但笔者在此不敢断言, 希望读者在严谨的测试之后再做定夺.
CONFIG_IOSCHED_DEADLINE
CONFIG_IOSCHED_CFQ
CONFIG_IOSCHED_BFQ
CONFIG_BLK_DEV_BSG
CONFIG_BLK_DEV_BSGLIB
CONFIG_BLK_DEV_INTEGRITY
CONFIG_BLK_DEV_THROTTLING
CONFIG_PARTITION_ADVANCED
CONFIG_BLOCK
Processor type and features
中央处理器(CPU)类型及特性
-
DMA memory allocation support
- 允许为寻址宽度不足32 位的设备( 也就是ISA 和 LPC 总线设备) 在物理内存的前16MB 范围内( ZONE_DMA) 分配内存. 不确定的选"Y".[ 提示]LPC 总线通常和主板上的南桥物理相连, 通常连接了一系列的传统设备:BIOS,PS/2 键盘,PS/2 鼠标, 软盘, 并口设备, 串口设备, 某些集成声卡,TPM( 可信平台模块), 等等 Symmetric multi-processing support
- SMP(对称多处理器 ) 支持, 如果你有多个CPU 或者使用的是多核CPU 就选上. Support x2apic
- x2apic 支持. 具有这个特性的CPU 可以使用32 位的APICID( 可以支持海量的CPU), 并且可以使用MSR 而不是mmio 去访问local APIC ( 更加高效). 可以通过"grepx2apic/proc/cpuinfo" 命令检查你的CPU 是否支持这个特性. 注意: 有时候还需要在BIOS 中也开启此特性才真正生效.[ 提示] 在虚拟机中, 还需要VMM 的支持( 例如qemu-kvm). Enable MPS table
- 如果是不支持acpi 特性的古董级SMP 系统就选上. 但现今的64 位系统早都已经支持acpi 了, 所以可以安全的关闭. Support for extended (non-PC) x86platforms
- 支持非标准的PC 平台:Numascale NumaChip, ScaleMP vSMP, SGI Ultraviolet. 绝大多数人都遇不见这些平台. Numascale NumaChip
- NumascaleNumaChip 平台支持 ScaleMP vSMP
- ScaleMPvSMP 平台支持 SGI Ultraviolet
- SGIUltraviolet 平台支持 Intel Low Power Subsystem Support
- 为Intel LynxPoint PCH 中的Intel Low Power Subsystem 技术提供支持. 这个芯片组主要是为采用LGA1150 的Haswell 处理器提供支持. Single-depth WCHAN output
- 使用简化的/proc/<PID>/wchan 值, 禁用此选项会使用更加精确的wchan 值( 可以在"ps-l" 结果的WCHAN 域看到), 但会轻微增加调度器消耗. Linux guest support
-
如果这个内核将在虚拟机里面运行就开启,
否则就关闭.
-
Enable paravirtualization code
-
半虚拟化(paravirtualization)
支持.
-
paravirt-ops debugging
- 仅供调试 Paravirtualization layer for spinlocks
- 半虚拟化的自旋锁支持. 开启之后运行在虚拟机里的内核速度会加快, 但是运行在物理CPU 上的宿主内核运行效率会降低( 最多可能会降低5%). 请根据实际情况选择. Xen guest support
- Xen 半虚拟化技术支持
CONFIG_PARAVIRT_DEBUG
CONFIG_PARAVIRT_SPINLOCKS
CONFIG_XEN
Enable Xen debug and tuning parameters indebugfs
- 为Xen 在debugfs 中输出各种统计信息和调整选项. 对性能有严重影响. 仅供调试. KVM Guest support (including kvmclock)
- KVM 客户机支持( 包括 kvmclock). Paravirtual steal time accounting
- 允许进行更细粒度的task steal time 统计. 会造成性能的略微降低. 仅在你确实需要的时候才开启.
CONFIG_PARAVIRT
CONFIG_XEN_DEBUG_FS
CONFIG_KVM_GUEST
CONFIG_PARAVIRT_TIME_ACCOUNTING
Memtest
-
半虚拟化(paravirtualization)
支持.
- 为内核添加内存测试功能, 也就是添加"memtest" 内核引导参数以支持对内存进行" 体检". 仅在你确实知道这是什么东西并且确实需要的时候再开启. 否则请关闭. Processor family
- 处理器系列, 请按照你实际使用的CPU 选择."Generic-x86-64" 表示通用于所有x86-64 平台, 不针对特定类型的CPU 进行优化. Supported processor vendors
- 支持的CPU 厂商, 按实际情况选择. Enable DMI scanning
- 允许扫描 DMI( DesktopManagement Interface)/ SMBIOS( SystemManagement BIOS) 以获得机器的硬件配置, 从而对已知的bugbios 进行规避. 具体涉及到哪些机器可参见"drivers/acpi/blacklist.c" 文件. 除非确定你的机器没有bug, 否则请开启此项. GART IOMMU support
- GART IOMMU 支持. 图形地址重映射表( GraphicsAddress Remapping Table) 可以将物理地址不连续的系统内存映射成看上去连续的图形内存交给GPU 使用, 是一种挖CPU 内存补GPU 内存机制, 这种机制也可以被认为是一种" 伪IOMMU"( 缺乏地址空间隔离和访问控制). 开启此选项以后, 在内存大于3G 的系统上, 传统的32 位总线(PCI/AGP) 的设备将可以使用完全 DMA 的方式直接访问原本超出32 位寻址范围之外的系统内存区域. 具体方法是: 通过编程让设备在受GART 控制的显存区域工作, 然后使用GART 将这个地址映射为真实的物理地址(4GB 以上) 来实现的.USB/ 声卡/IDE/SATA 之类的设备常常需要它. 开启此选项之后, 除非同时开启了CONFIG_IOMMU_DEBUG 选项或者使用了"iommu=force" 内核引导参数, 否则此特性仅在条件满足的情况下( 内存足够大且确有支持GART 的设备) 激活. 建议内存大于3G 的系统上选"Y". IBM Calgary IOMMU support
-
IBM xSeries
系列服务器的
CalgaryIOMMU
支持.
-
Should Calgary be enabled bydefault?
- 开启此选项表示默认启用Calgary 特性, 关闭此选项表示默认禁用Calgary 特性( 可以使用"iommu=calgary" 内核引导参数开启).
CONFIG_CALGARY_IOMMU_ENABLED_BY_DEFAULT
Enable Maximum number of SMP Processors and NUMA Nodes
- 让内核支持x86_64 平台所能支持的最大SMP 处理器数量和最大NUMA 节点数量. 主要用于调试目的. Maximum number of CPUs
- 支持的最大CPU 数量, 每个CPU 要占8KB 的内核镜像, 最小有效值是"2", 最大有效值是"512". 注意: 对于多核CPU 而言, 每个核算一个. SMT (Hyperthreading) scheduler support
- Intel 超线程技术( HyperThreading) 支持. Multi-core scheduler support
- 针对多核CPU 进行调度策略优化 Preemption Model
-
内核抢占模式
-
No Forced Preemption (Server)
- 禁止内核抢占, 这是Linux 的传统模式, 可以得到最大的吞吐量, 适合服务器和科学计算环境 Voluntary Kernel Preemption (Desktop)
- 自愿内核抢占, 通过在内核中设置明确的抢占点以允许明确的内核抢占, 可以提高响应速度, 但是对吞吐量有不利影响. 适合普通桌面环境的 Preemptible Kernel (Low-Latency Desktop)
- 主动内核抢占, 允许抢占所有内核代码, 对吞吐量有更大影响, 适合需要运行实时程序的场合或者追求最快响应速度的桌面环境.
CONFIG_PREEMPT_NONE
CONFIG_PREEMPT_VOLUNTARY
CONFIG_PREEMPT
Reroute for broken boot IRQs
- 这是一个对某些芯片组 bug( 在某些情况下会发送多余的" bootIRQ") 的修复功能. 开启此选项之后, 仅对有此bug 的芯片组生效. 要检查哪些芯片组有此bug 可以查看"drivers/pci/quirks.c" 文件中的"quirk_reroute_to_boot_interrupts_intel" 函数. Machine Check / overheating reporting
-
MCE(
MachineCheckException)
支持.
让CPU
检测到硬件故障(
过热/
数据错误)
时通知内核,
以便内核采取相应的措施(
如显示一条提示信息或关机等).
更多信息可以"man
mcelog"
看看.
可以通过"grepmce/proc/cpuinfo"
检查CPU
是否支持此特性,
若支持建议选中,
否则请关闭.
当然,
如果你对自己的硬件质量很放心,
又是桌面系统的话,
不选也无所谓.
-
Intel MCE features
- Intel CPU 支持 AMD MCE features
- AMD CPU 支持
CONFIG_X86_MCE_INTEL
CONFIG_X86_MCE_AMD
Machine check injector support
- MCE 注入支持, 仅用于调试 Dell laptop support
- Dell Inspiron 8000 笔记本的 SystemManagement Mode 驱动( i8k). 该驱动可以读取CPU 温度和风扇转速, 进而帮助上层工具控制风扇转速. 该驱动仅针对Dell Inspiron 8000 笔记本进行过测试, 所以不保证一定能适用于其他型号的Dell 笔记本. CPU microcode loading support
- CPU 的微代码更新支持, 建议选中.CPU 的微代码更新就像是给CPU 打补丁. 比如在Gentoo 下,可以使用"emergemicrocode-ctl" 安装 microcode-ctl 服务, 再把这个服务加入boot 运行级即可在每次开机时自动更新CPU 微代码. 其他Linux 系统可以参考这个帖子. Early load microcode
- 支持从initrd 镜像首部加载微代码, 以便尽可能早的更新CPU 微代码. 即使在initrd 首部并未嵌入微代码也不会造成问题, 所以"Y" 是安全的. 不过你真的需要吗? 笔者认为你一般并不需要:) /dev/cpu/*/msr - Model-specific register support
- /dev/cpu/*/msr 设备支持. 也就是允许在多cpu 系统中让特权进程(privilegedprocess) 访问x86 的MSR 寄存器( Model-SpecificRegister).MSR 的作用主要是为了设置CPU 的工作环境和标识CPU 的工作状态( 温度, 性能等). msrtool 工具可以转储出MSR 的内容. /dev/cpu/*/cpuid - CPU information support
- /dev/cpu/*/cpuid 设备支持. 可以通过 cpuid 命令获得详细的 CPU信息( CPUID). Enable 1GB pages for kernel pagetables
- 允许内核页表使用大小为1GB 的 Hugepages 并进行线性映射(linearmapping), 需要高端CPU 的支持( 可以用"greppdpe1gb /proc/cpuinfo" 命令检查). 这可以减小页表缓存( TranslationLookasideBuffer) 的压力, 从而略微提升系统的性能, 这对于拥有海量内存并且运行某些特定应用(PosgreSQL,MySQL,Java,Memcached,KVM,Xen...) 的系统来说比较有意义. 如果你的CPU 支持, 可以选"Y". Numa Memory Allocation and Scheduler Support
- 开启 NUMA(NonUniform Memory Access) 支持. 虽然说集成了内存控制器的CPU 都属于NUMA 架构. 但事实上, 对于大多数只有一颗物理CPU 的个人电脑而言, 即使支持NUMA 架构, 也没必要开启此特性. 可以参考 SMP/NUMA/MPP体系结构对比. 此外, 对于不支持" 虚拟NUMA", 或" 虚拟NUMA" 被禁用的虚拟机( 即使所在的物理机是NUMA 系统), 也应该关闭此项. Old style AMD Opteron NUMA detection
- 因为AMD 使用一种旧式的方法读取NUMA 配置信息( 新式方法是CONFIG_X86_64_ACPI_NUMA), 所以如果你使用的是AMD 多核CPU, 建议开启. 不过, 即使开启此选项, 内核也会优先尝试CONFIG_X86_64_ACPI_NUMA 方法, 仅在失败后才会使用此方法, 所以即使你不能确定CPU 的类型也可以安全的选中此项. ACPI NUMA detection
- 使用基于ACPI SRAT(System Resource Affinity Table) 技术的NUMA 节点探测方法. 这也是检测NUMA 节点信息的首选方法, 建议选中. NUMA emulation
- 仅供开发调试使用 Maximum NUMA Nodes (as a power of 2)
- 允许的最大NUMA 节点数. 需要注意其计算方法: 最大允许节点数=2 CONFIG_NODES_SHIFT. 也就是说这里设置的值会被当做2 的指数使用. 取值范围是[1,10], 也就最多允许1024 个节点. Memory model
- 内存模式."SparseMemory" 主要用来支持内存热插拔, 相比其他两个旧有的内存模式, 代码复杂性也比较低, 而且还拥有一些性能上的优势, 对某些架构而言是唯一的可选项. 其他两个旧有的内存模式是:" DiscontiguousMemory" 和" FlatMemory". Sparse Memory virtual memmap
- 对于64 位CPU 而言, 开启此选项可以简化pfn_to_page/page_to_pfn 的操作, 从而提高内核的运行效率. 但是在32 位平台则建议关闭. 更多细节可以参考这个帖子. Enable to assign a node which has only movablememory
- 允许对一个完整的NUMA 节点(CPU 和对应的内存) 进行热插拔. 一般的服务器和个人电脑不需要这么高级的特性. Allow for memory hot-add
-
支持向运行中的系统添加内存.
也就是内存热插支持.
-
Allow for memory hot remove
- 支持从运行中的系统移除内存. 也就是内存热拔支持.
CONFIG_MEMORY_HOTREMOVE
Allow for balloon memorycompaction/migration
- 允许 balloonmemory 压缩/ 迁移. 内存的 Ballooning技术是指虚拟机在运行时动态地调整它所占用的宿主机内存资源, 该技术在节约内存和灵活分配内存方面有明显的优势, 目前所有主流虚拟化方案都支持这项技术( 前提是客户机操作系统中必须安装有相应的balloon 驱动). 由于内存的动态增加和减少会导致内存过度碎片化, 特别是对于2M 尺寸的连续大内存页来说更加严重, 从而严重降低内存性能. 允许balloon 内存压缩和迁移可以很好的解决在客户机中使用大内存页时内存过度碎片化问题. 如果你打算在虚拟机中使用大内存页(huge page), 那么建议开启, 否则建议关闭. Allow for memory compaction
- 允许对大内存页 (hugepages) 进行压缩. 主要是为了解决大内存页的碎片问题. 建议在使用大内存页的情况下开启此项, 否则建议关闭. Page migration
- 允许在保持虚拟内存页地址不变的情况下移动其所对应的物理内存页的位置. 这主要是为了解决两个问题:(1) 在NUMA 系统上, 将物理内存转移到相应的节点上, 以加快CPU 与内存之间的访问速度.(2) 在分配大内存页的时候, 可以避免碎片问题. Enable bounce buffers
- 为那些不能直接访问所有内存范围的驱动程序开启 bouncebuffer 支持. 当CONFIG_ZONE_DMA 或CONFIG_HIGHMEM 被开启后, 这个选项会被默认开启( 当然, 你也可以在这里手动关闭). 这主要是为了那些不具备 IOMMU 功能的PCI/ISA 设备而设, 但它对性能有些不利影响. 在支持IOMMU 的设备上, 应该关闭它而是用IOMMU 来代替. Enable KSM for page merging
- KSM( KernelSamepageMerging) 支持: 周期性的扫描那些被应用程序标记为" 可合并" 的地址空间, 一旦发现有内容完全相同的页面, 就将它们合并为同一个页面, 这样就可以节约内存的使用, 但对性能有不利影响. 推荐和内核虚拟机KVM( Documentation/vm/ksm.txt) 或者其他支持"MADV_MERGEABLE" 特性的应用程序一起使用.KSM 并不默认开启, 仅在应用程序设置了"MADV_MERGEABLE" 标记, 并且/sys/kernel/mm/ksm/run 被设为"1" 的情况下才会生效. Low address space to protect from userallocation
- 2009 年, 内核曾经爆过一个严重的 NULL指针漏洞, 由于其根源是将NULL 指针映射到地址"0" 所致, 所以从2.6.32 版本以后, 为了防止此类漏洞再次造成严重后果, 特别设置了此选项, 用于指定受保护的内存低端地址范围( 可以在系统运行时通过 /proc/sys/vm/mmap_min_addr 进行调整), 这个范围内的地址禁止任何用户态程序的写入, 以从根本上堵死此类漏洞可能对系统造成的损害. 但内核这种强加的限制, 对于需要使用vm86 系统调用( 用于在保护模式的进程中模拟8086 的实模式) 或者需要映射此低端地址空间的程序(bitbake,dosemu,qemu,wine,...) 来说, 则会造成不兼容, 不过目前这些程序的新版本都进行了改进, 以适应内核的这种保护. 一般情况下,"4096" 是个明智的选择, 或者你也可以保持默认值. Enable recovery from hardware memory errors
-
在具备
MCA(MachineCheckArchitecture)
恢复机制的系统上,
允许内核在物理内存中的发生数据错误的情况下,
依然坚强的纠正错误并恢复正常运行.
这需要有相应的硬件(
通常是ECC
内存)
支持.
有
ECC内存的选,
没有的就别选了.
-
HWPoison pages injector
- 仅用于调试.
CONFIG_HWPOISON_INJECT
Transparent Hugepage Support
-
THP(
TransparentHugepages)
支持.
允许内核在可能的条件下,
透明的(
对应用程序来说)
使用大页(
hugepages)
与
HugeTLB.
这对于数据库/KVM
等需要使用大量内存的应用来说,
可以提升其效能,
但对于内存较小(4G
或更少)
的个人PC
来说就没啥必要了.
-
Transparent Hugepage Support sysfs defaults
- 设置/sys/kernel/mm/transparent_hugepage/enabled 文件的默认值."always" 表示总是对所有应用程序启用透明大内存页支持,"madvise" 表示仅对明确要求该特性的程序启用. 建议选"always".
Cross Memory Support
- 交叉内存支持, 也就是 process_vm_readv()和 process_vm_writev()系统调用支持. 从而允许有权限的进程直接读取/ 写入另外一个进程的地址空间. 现在它们只用于 openMPI 快速进程通信, 也可以用于调试程序. 未来也许还会有其他用途. Enable cleancache driver to cache clean pages if tmem ispresent
- Cleancache 可以被看作是内存页的" VictimCache"( 受害者缓存), 当回收内存页时, 先不把它清空, 而是把其加入到内核不能直接访问的" transcendentmemory" 中, 这样支持Cleancache 的文件系统再次访问这个页时可以直接从"transcendentmemory" 加载它, 从而减少磁盘IO 的损耗. 目前只有 zcache 和 XEN 支持"transcendentmemory", 不过将来会有越来越多的应用支持. 开启此项后即使此特性不能得到利用, 也仅对性能有微小的影响, 所以建议开启. 更多细节请参考" Documentation/vm/cleancache.txt" 文件. Enable frontswap to cache swap pages if tmem ispresent
- Frontswap 是和Cleancache 非常类似的东西, 在传统的swap 前加一道内存缓冲( 同样位于"transcendentmemory" 中). 目的也是减少swap 时的磁盘读写. 建议开启. Check for low memory corruption
-
低位内存脏数据检查,
即使开启此选项,
默认也不会开启此功能(
需要明确使用"memory_corruption_check=1"
内核引导选项).
这些脏数据通常被认为是有bug
的BIOS
引起的,
默认每60
秒(
可以通过memory_corruption_check_period
内核参数进行调整)
扫描一次0-64k(
可以通过memory_corruption_check_size
内核参数进行调整)
之间的区域.
这种检查所占用的开销非常小,
基本可以忽略不计.
如果始终检查到错误,
则可以通过"memmap="
内核引导参数来避免使用这段内存.
一般没必要选中,
如果你对BIOS
不放心,
带着它试运行一段时间,
确认没问题之后再去掉.
-
Set the default setting ofmemory_corruption_check
- 设置memory_corruption_check 的默认值, 选中表示默认开启( 相当于使用"memory_corruption_check=1" 内核引导选项), 不选中表示默认关闭.
CONFIG_X86_BOOTPARAM_MEMORY_CORRUPTION_CHECK
Amount of low memory, in kilobytes, to reserve for theBIOS
- 为BIOS 设置保留的低端地址( 默认是64K). 内存的第一页(4K) 存放的必定是BIOS 数据, 内核不能使用, 所以必须要保留. 但是有许多BIOS 还会在suspend/resume/ 热插拔等事件发生的时候使用更多的页( 一般在0-64K 范围), 所以默认保留0-64K 范围. 如果你确定自己的BIOS 不会越界使用内存的话, 可以设为"4", 否则请保持默认值. 但是也有一些很奇葩的BIOS 会使用更多的低位内存, 这种情况下可以考虑设为"640" 以保留所有640K 的低位内存区域. MTRR (Memory Type Range Register) support
-
MTRR(
Memorytype range registers)
是CPU
内的一组MSR(Model-specificregisters),
其作用是告诉CPU
以哪种模式(write-back/uncachable)
存取各内存区段效率最高.
这对于AGP/PCI
显卡意义重大,
因为write-combining
技术可以将若干个总线写传输捆绑成一次较大的写传输操作,
可以将图像写操作的性能提高2.5
倍或者更多.
这段代码有着通用的接口,
其他CPU
的寄存器同样能够使用该功能.
简而言之,
开启此选项是个明智的选择.
-
MTRR cleanup support
-
MTRRcleanup
的意思是将MTRR
的连续输出转为离散的输出,
这样X
驱动就可以在其中添加writeback
项,
算是一种优化措施.
建议开启.
可以使用"mtrr_chunk_size"
来限制最大的连续块尺寸.
-
MTRR cleanup enable value(0-1)
- "1" 表示默认开启CONFIG_MTRR_SANITIZER 特性, 相当于使用"enable_mtrr_cleanup","0" 表示默认关闭CONFIG_MTRR_SANITIZER 特性, 相当于使用"disable_mtrr_cleanup". 建议设为"1". MTRR cleanup spare reg num(0-7)
- 这里设定的值等价于使用内核引导参数"mtrr_spare_reg_nr=N" 中的"N". 也就是告诉内核reg0N 可以被清理或改写( 参见"/proc/mtrr" 文件). 在多数情况下默认值是"1", 其含义是/proc/mtrr 中的reg01 将会被映射. 一般保持其默认值即可.
CONFIG_MTRR_SANITIZER_ENABLE_DEFAULT
CONFIG_MTRR_SANITIZER_SPARE_REG_NR_DEFAULT
x86 PAT support
- PAT(PageAttribute Table) 是对MTRR 的补充, 且比MTRR 更灵活. 如果你的CPU 支持PAT(greppat /proc/cpuinfo), 那么建议开启. 仅在开启后导致无法正常启动或者显卡驱动不能正常工作的情况下才需要关闭.
CONFIG_MTRR_SANITIZER
CONFIG_X86_PAT
x86 architectural random number generator
-
MTRRcleanup
的意思是将MTRR
的连续输出转为离散的输出,
这样X
驱动就可以在其中添加writeback
项,
算是一种优化措施.
建议开启.
可以使用"mtrr_chunk_size"
来限制最大的连续块尺寸.
- Intel 从Ivy Bridge 微架构开始( 对于Atom 来说是从Silvermont 开始), 在CPU 中集成了一个高效的硬件随机数生成器( 称为"BullMountain" 技术), 并引入了一个新的x86 指令" RDRAND", 可以非常高效的产生随机数. 此选项就是对此特性的支持. Supervisor Mode Access Prevention
- SMAP(SupervisorMode Access Prevention) 是Intel 从Haswell 微架构开始引入的一种新特征, 它在CR4 寄存器上引入一个新标志位SMAP, 如果这个标志为1, 内核访问用户进程的地址空间时就会触发一个页错误, 目的是为了防止内核因为自身错误意外访问用户空间, 这样就可以避免一些内核漏洞所导致的安全问题. 但是由于内核在有些时候仍然需要访问用户空间, 因此intel 提供了两条指令STAC 和CLAC 用于临时打开/ 关闭这个功能, 反复使用STAC 和CLAC 会带来一些轻微的性能损失, 但考虑到增加的安全性, 还是建议开启. EFI runtime service support
-
EFI/UEFI
支持.
如果你打算在
UEFI/EFI平台上安装
Linux(2009
年之后的机器基本都已经是UEFI
规格了),
那么就必须开启此项(
开启后也依然可以在传统的BIOS
机器上启动).
UEFI启动流程与传统的BIOS
相差很大.
虽然Linux
受到了所谓"
安全启动"
问题的阻挠(
已经解决),
但是UEFI
依然将迅速一统江湖.[
提示]
在UEFI
平台上安装Linux
的关键之一是首先要用一个支持UEFI
启动的LiveCD
以UEFI
模式启动机器,
比如最新的Ubuntu/Fedora x86_64 LiveCD.
-
EFI stub support
- EFIstub 支持. 如果开启此项, 就可以不通过GRUB2 之类的引导程序来加载内核, 而直接由EFI 固件进行加载, 这样就可以不必安装引导程序了. 不过这是一个看上去很美的特性, 由于EFI 固件只是简单的加载内核并运行, 所以缺点有三:(1) 不能在传统的BIOS 机器上启动.(2) 不能给内核传递引导参数.(3) 不能使用intrd. 不过, 针对后两点的解决办法是: 使用CONFIG_CMDLINE 和CONFIG_INITRAMFS_SOURCE. 更多细节可参考" Documentation/x86/efi-stub.txt" 文档.
CONFIG_EFI_STUB
Enable seccomp to safely compute untrusted bytecode
- 允许使用 SECCOMP 技术安全地运算非信任代码. 通过使用管道或其他进程可用的通信方式作为文件描述符( 支持读/ 写调用), 就可以利用SECCOMP 把这些应用程序隔离在它们自己的地址空间. 这是一种有效的安全沙盒技术. 除非你是嵌入式系统, 否则不要关闭. Enable -fstack-protector buffer overflowdetection
- 开启GCC 的"-fstack-protector" 命令行选项, 以使用 GCC中的编译器堆栈保护技术. 这样可以有效的防御以堆栈溢出为代表的缓冲区溢出攻击, 不过系统的运行速度也会受到一些影响. 服务器之类强调安全的场合建议开启, 个人PC 之类的就不是很有必要了. Timer frequency
- 内核时钟频率. 对于要求快速响应的场合, 比如桌面环境, 建议使用1000Hz, 而对于不需要快速响应的SMP/NUMA 服务器, 建议使用250Hz 或100Hz 或300Hz( 主要处理多媒体数据). kexec system call
- 提供 kexec 系统调用, 可以不必重启而切换到另一个内核( 不一定必须是Linux 内核), 不过这个特性并不总是那么可靠. 如果你不确定是否需要它, 那么就是不需要. kernel crash dumps
- 当内核崩溃时自动导出运行时信息的功能, 主要用于调试目的. 更多信息请参考" Documentation/kdump/kdump.txt" 文件. kexec jump
- kexecjump 支持. 这是对CONFIG_KEXEC 的增强功能, 仅在你确实明白这是干啥的情况下再开启, 否则请关闭. Physical address where the kernel is loaded
- 加载内核的物理地址. 如果内核不是可重定位的(CONFIG_RELOCATABLE=n), 那么bzImage 会将自己解压到该物理地址并从此地址开始运行, 否则,bzImage 将忽略此处设置的值, 而从引导装载程序将其装入的物理地址开始运行. 仅在你确实知道自己是在干什么的情况下才可以改变该值, 否则请保持默认. Build a relocatable kernel
- 使内核可以在浮动的物理内存位置加载, 主要用于调试目的. 仅在你确实知道为什么需要的时候再开启, 否则请关闭. Support for hot-pluggable CPUs
-
热插拔CPU
支持(
通过/sys/devices/system/cpu
进行控制).
-
Set default setting ofcpu0_hotpluggable
- 开启/ 关闭此项的意思是设置"cpu0_hotpluggable" 的默认值为"on/off". 开启此项表示默认将CPU0 设置为允许热插拔. Debug CPU0 hotplug
- 仅用于调试目的.
CONFIG_BOOTPARAM_HOTPLUG_CPU0
CONFIG_DEBUG_HOTPLUG_CPU0
Compat VDSO support
- 如果Glibc 版本大于等于2.3.3 就不选, 否则就选上 Built-in kernel command line
-
将内核引导参数直接编进来.
在无法向内核传递引导参数的情况下(
比如在嵌入式系统上,
或者想使用EFI stubkernel),
这就是唯一的救命稻草了.
如果你使用grub
之类的引导管理器,
那么就可以不需要此特性.
-
Built-in kernel command string
- 将要编译进内核的引导参数字符串. Built-in command line overrides boot loaderarguments
- 开启此项表示完全忽略引导加载器传递过来的参数, 并仅仅只使用CONFIG_CMDLINE 所指定的参数. 通常情况下建议关闭此项, 除非你确定引导加载器在传递内核引导参数的时候不能正常工作.
CONFIG_CMDLINE
CONFIG_CMDLINE_OVERRIDE
CONFIG_ZONE_DMA
CONFIG_SMP
CONFIG_X86_X2APIC
CONFIG_X86_MPPARSE
CONFIG_X86_EXTENDED_PLATFORM
CONFIG_X86_NUMACHIP
CONFIG_X86_VSMP
CONFIG_X86_UV
CONFIG_X86_INTEL_LPSS
CONFIG_SCHED_OMIT_FRAME_POINTER
CONFIG_HYPERVISOR_GUEST
CONFIG_MEMTEST
CONFIG_PROCESSOR_SELECT
CONFIG_DMI
CONFIG_GART_IOMMU
CONFIG_CALGARY_IOMMU
CONFIG_MAXSMP
CONFIG_NR_CPUS
CONFIG_SCHED_SMT
CONFIG_SCHED_MC
CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS
CONFIG_X86_MCE
CONFIG_X86_MCE_INJECT
CONFIG_I8K
CONFIG_MICROCODE
CONFIG_MICROCODE_INTEL_EARLY
CONFIG_X86_MSR
CONFIG_X86_CPUID
CONFIG_DIRECT_GBPAGES
CONFIG_NUMA
CONFIG_AMD_NUMA
CONFIG_X86_64_ACPI_NUMA
CONFIG_NUMA_EMU
CONFIG_NODES_SHIFT
CONFIG_SPARSEMEM_VMEMMAP
CONFIG_MOVABLE_NODE
CONFIG_MEMORY_HOTPLUG
CONFIG_BALLOON_COMPACTION
CONFIG_COMPACTION
CONFIG_MIGRATION
CONFIG_BOUNCE
CONFIG_KSM
CONFIG_DEFAULT_MMAP_MIN_ADDR
CONFIG_MEMORY_FAILURE
CONFIG_TRANSPARENT_HUGEPAGE
CONFIG_CROSS_MEMORY_ATTACH
CONFIG_CLEANCACHE
CONFIG_FRONTSWAP
CONFIG_X86_CHECK_BIOS_CORRUPTION
CONFIG_X86_RESERVE_LOW
CONFIG_MTRR
CONFIG_ARCH_RANDOM
CONFIG_X86_SMAP
CONFIG_EFI
CONFIG_SECCOMP
CONFIG_CC_STACKPROTECTOR
CONFIG_KEXEC
CONFIG_CRASH_DUMP
CONFIG_KEXEC_JUMP
CONFIG_PHYSICAL_START
CONFIG_RELOCATABLE
CONFIG_HOTPLUG_CPU
CONFIG_COMPAT_VDSO
CONFIG_CMDLINE_BOOL
Power management and ACPI options
电源管理和ACPI选项
-
Suspend to RAM and standby
-
"
休眠到内存"(ACPIS3)
支持.
也就是系统休眠后,
除了内存之外,
其他所有部件都停止工作,
重开机之后可以直接从内存中恢复运行状态.
要使用此功能,
你需要执行"echomem > /sys/power/state"
命令,
还需要在BIOS
中开启S3
支持,
否则可能会有问题.
-
Enable freezer for suspend to RAM/standby
- 选"Y". 除非你知道自己在做什么
CONFIG_SUSPEND_FREEZER
Hibernation (aka 'suspend to disk')
- " 休眠到硬盘"(ACPIS4) 支持. 也就是将内存的内容保存到硬盘(hibernation), 所有部件全都停止工作. 要使用此功能, 你首先需要使用内核引导参数"resume=/dev/swappartition", 然后执行"echodisk >/sys/power/state" 命令. 如果你不想从先前的休眠状态中恢复, 那么可以使用"noresume" 内核引导参数. 更多信息, 可以参考" Documentation/power/swsusp.txt" 文件. Default resume partition
- 默认的休眠分区. 这个分区必须是swap 分区. 不过这里设置的值会被明确的内核引导参数中的值覆盖. Opportunistic sleep
- 这是一种从安卓借鉴过来的休眠方式. 这个特性在安卓系统上被称为"suspendblockers" 或"wakelocks". 这是一种更激进的电源管理模式, 以尽可能节约电力为目的. 系统默认就处于休眠状态, 仅为内存和少数唤醒系统所必须的设备供电, 当有任务( 唤醒源) 需要运行的时候才唤醒相关组件工作, 工作完成后又立即进入休眠状态. 不过这些特性需要相应的设备驱动程序的支持. 目前除了安卓设备, 在PC 和服务器领域, 能够利用此特性的驱动还比较少, 不过这是一项非常有前途的电源技术, 喜欢尝鲜的可以考虑开启. User space wakeup sources interface
-
允许用户空间的程序通过sys
文件系统接口,
创建/
激活/
撤销系统的"
唤醒源".
需要与CONFIG_PM_AUTOSLEEP
配合使用.
-
Maximum number of user space wakeup sources (0 = nolimit)
- 用户空间程序允许使用的" 唤醒源" 数量,"0" 表示无限, 最大值是"100000". Garbage collector for user space wakeupsources
- 对" 唤醒源" 对象使用垃圾回收. 主要用于调试目的和Android 环境.
CONFIG_PM_WAKELOCKS_LIMIT
CONFIG_PM_WAKELOCKS_GC
Run-time PM core functionality
- 允许IO 设备( 比如硬盘和网卡) 在系统运行时进入省电模式, 并可在收到( 硬件或驱动产生的) 唤醒信号后恢复正常. 此功能通常需要硬件的支持. Power Management Debug Support
- 仅供调试使用 ACPI (Advanced Configuration and Power Interface)Support
-
高级配置与电源接口(
AdvancedConfiguration and Power Interface)
包括了软件和硬件方面的规范,
目前已被软硬件厂商广泛支持,
并且取代了许多过去的配置与电源管理接口,
包括PnP BIOS (Plug-and-Play BIOS),MPS(CONFIG_X86_MPPARSE), APM(Advanced Power Management)
等.
总之,ACPI
已经成为x86
平台必不可少的组件,
如果你没有特别的理由,
务必选中此项.
-
Deprecated /proc/acpi files
- 过时的/proc/acpi 接口支持, 建议关闭. Deprecated power /proc/acpi directories
- 过时的/proc/acpi 接口支持, 建议关闭. EC read/write access through/sys/kernel/debug/ec
- 仅供调试使用. Deprecated /proc/acpi/event support
- 过时的/proc/acpi/event 接口支持, 建议关闭. AC Adapter
- 允许在外接交流电源和内置电池之间进行切换. Battery
- 允许通过/proc/acpi/battery 接口查看电池信息. Button
- 允许守护进程通过/proc/acpi/event 接口捕获power/sleep/lid( 合上笔记本) 按钮事件, 并执行相应的动作, 软关机(poweroff) 也需要它的支持. Video
- 对主板上的集成显卡提供ACPI 支持. 注意: 仅支持集成显卡. Fan
- 允许用户层的程序对风扇进行控制( 开/ 关/ 查询状态) Dock
- 支持兼容ACPI 规范的扩展坞( 比如IBM Ultrabay 和Dell Module Bay) 支持. Processor
- 在支持ACPI C2/C3 的CPU 上, 将ACPI 安装为idle 处理程序. 有几种CPU 频率调节驱动依赖于它. 而且目前的CPU 都已经支持ACPI 规范, 建议开启此项. IPMI
- 允许ACPI 使用 IPMI( 智能平台管理接口) 的请求/ 应答消息访问BMC( 主板管理控制器).IPMI 通常出现在服务器中, 以允许通过诸如 ipmitool 这样的工具监视服务器的物理健康特征( 温度/ 电压/ 风扇状态/ 电源状态). Processor Aggregator
- 支持ACPI 4.0 加入的处理器聚合器( processorAggregator) 功能, 以允许操作系统对系统中所有的CPU 进行统一的配置和控制. 目前只支持逻辑处理器idling 功能, 其目标是降低耗电量. Thermal Zone
- ACPI thermal zone 支持. 系统温度过高时可以及时调整工作状态以避免你的CPU 被烧毁. 目前所有CPU 都支持此特性. 务必开启. NUMA support
- 通过读取系统固件中的ACPI 表, 获得NUMA 系统的CPU 及物理内存分布信息.NUMA 系统必选. Custom DSDT Table file to include
- 允许将一个定制过的DSDT 编译进内核. 详情参见" Documentation/acpi/dsdt-override.txt" 文档. 看不懂的请保持空白. ACPI tables override via initrd
- 允许initrd 更改 ACPItables 中的任意内容.ACPI tables 是BIOS 提供给OS 的硬件配置数据, 包括系统硬件的电源管理和配置管理. 详情参见" Documentation/acpi/initrd_table_override.txt" 文件. Debug Statements
- 详细的ACPI 调试信息, 不搞开发就别选. PCI slot detection driver
- 将每个PCI 插槽都作为一个单独的条目列在/sys/bus/pci/slots/ 目录中, 有助于将设备的物理插槽位置与逻辑的PCI 总线地址进行对应. 不确定的选"No". Power Management Timer Support
- ACPIPM Timer, 简称"ACPITimer", 是一种集成在主板上的硬件时钟发生器, 提供3.579545MHz 固定频率. 这是比较传统的硬件时钟发生器(HPET 则是比较新型的硬件时钟发生器), 目前所有的主板都支持, 而且是ACPI 规范不可分割的部分. 除非你确定不需要, 否则必选. Container and Module Devices
- 支持NUMA 节点/CPU/ 内存的热插拔. Device ID: ACPI0004, PNP0A05,PNP0A06 Memory Hotplug
- 内存热插拔支持.Device ID: PNP0C80 Smart Battery System
- 智能电池系统( SmartBatterySystem) 可以让笔记型电脑显示及管理详细精确的电池状态信息. 使用锂电池的笔记本电脑必备利器. 但遗憾的是并不是所有笔记本都支持这项特性. Hardware Error Device
- Hardware Error Device (Device ID: PNP0C33) 能够通过SCI 报告一些硬件错误( 通常是已经被纠正的错误). 如果你的系统中有设备ID 为"PNP0C33" 的设备( 比如某些Intel 芯片组), 那么就选上. Allow ACPI methods to be inserted/replaced at runtime
- 允许在不断电的情况下直接对ACPI 的功能进行删改, 包含一定危险性, 它允许root 任意修改内存中内核空间的内容. 仅用于调试. Boottime Graphics Resource Table support
- 在/sys/firmware/acpi/bgrt/ 中显示ACPI Boottime Graphics Resource Table, 以允许操作系统获取固件中的启动画面(splash). ACPI Platform Error Interface (APEI)
-
高级平台错误接口
(ACPIPlatform Error Interface)
是
RAS(Reliability,Availability and Serviceability)
的一部分,
是定义在ACPI 4.0
规范中的一个面向硬件错误管理的接口,
主要是为了统一firmware/BIOS
和OS
之间的错误交互机制,
使用标准的错误接口进行管理,
同时也扩展了错误接口的内容以便实现更加灵活丰富的功能.
-
APEI Generic Hardware Error Source
- "Firmware FirstMode" 支持. 由于BIOS/FIRMWARE 是平台相关的, 因此BIOS/FIRMWARE 比OS 更清楚硬件平台的配置情况, 甚至包含各种必须的修正/ 定制/ 优化. 这样, 在"FirmwareFirst" 模式下,BIOS/FIRMWARE 利用这一优势, 可以有针对性的对发生的硬件错误进行分析/ 处理/ 分发, 也可以更准确的记录错误的现场信息. 这样, 不但对硬件错误可以做出更准确, 更复杂的处理, 而且可以降低OS 的复杂性和冗余度. 建议开启. APEI PCIe AER logging/recovering support
- 让PCIe AER errors 首先通过APEI firmware 进行报告. APEI memory error recoveringsupport
- 让Memory errors 首先通过APEI firmware 进行报告. APEI Error INJection (EINJ)
- 仅供调试使用. APEI Error Record Serialization Table (ERST) DebugSupport
- 仅供调试使用
CONFIG_ACPI_APEI_GHES
CONFIG_ACPI_APEI_PCIEAER
CONFIG_ACPI_APEI_MEMORY_FAILURE
CONFIG_ACPI_APEI_EINJ
CONFIG_ACPI_APEI_ERST_DEBUG
CONFIG_ACPI_PROCFS
CONFIG_ACPI_PROCFS_POWER
CONFIG_ACPI_EC_DEBUGFS
CONFIG_ACPI_PROC_EVENT
CONFIG_ACPI_AC
CONFIG_ACPI_BATTERY
CONFIG_ACPI_BUTTON
CONFIG_ACPI_VIDEO
CONFIG_ACPI_FAN
CONFIG_ACPI_DOCK
CONFIG_ACPI_PROCESSOR
CONFIG_ACPI_IPMI
CONFIG_ACPI_PROCESSOR_AGGREGATOR
CONFIG_ACPI_THERMAL
CONFIG_ACPI_NUMA
CONFIG_ACPI_CUSTOM_DSDT_FILE
CONFIG_ACPI_INITRD_TABLE_OVERRIDE
CONFIG_ACPI_DEBUG
CONFIG_ACPI_PCI_SLOT
CONFIG_X86_PM_TIMER
CONFIG_ACPI_CONTAINER
CONFIG_ACPI_HOTPLUG_MEMORY
CONFIG_ACPI_SBS
CONFIG_ACPI_HED
CONFIG_ACPI_CUSTOM_METHOD
CONFIG_ACPI_BGRT
CONFIG_ACPI_APEI
SFI (Simple Firmware Interface) Support
- 简单固件接口规范( SimpleFirmwareInterface) 使用一种轻量级的简单方法( 通过内存中的一张静态表格) 从firmware 向操作系统传递信息. 目前这个规范仅用于第二代Intel Atom 平台, 其核心名称是" Moorestown". CPU Frequency scaling
-
CPUfreq
子系统允许动态改变CPU
主频,
达到省电和降温的目的.
现如今的CPU
都已经支持动态频率调整,
建议开启.
不过,
如果你是为虚拟机编译内核,
就没有必要开启了,
由宿主机内核去控制就OK
了.
-
CPU frequency translation statistics
-
通过sysfs
文件系统输出CPU
频率变化的统计信息
-
CPU frequency translation statisticsdetails
- 输出更详细的CPU 频率变化统计信息
CONFIG_CPU_FREQ_STAT_DETAILS
Default CPUFreq governor
- 默认的CPU 频率调节策略. 不同策略拥有不同的调节效果. 'performance' governor
- ' 性能' 优先, 静态的将频率设置为cpu 支持的最高频率 'powersave' governor
- ' 节能' 优先, 静态的将频率设置为cpu 支持的最低频率 'userspace' governor for userspace frequencyscaling
- 既允许手动调整cpu 频率, 也允许用户空间的程序动态的调整cpu 频率( 需要额外的调频软件) 'ondemand' cpufreq policy governor
- ' 立即响应', 周期性的考察CPU 负载并自动的动态调整cpu 频率( 不需要额外的调频软件), 适合台式机 'conservative' cpufreq governor
- ' 保守', 和'ondemand' 相似, 但是频率的升降是渐变式的( 幅度不会很大), 更适合用于笔记本/PDA/x86_64 环境 x86 CPU frequency scaling drivers
-
CPU
频率调节器驱动
-
Intel P state control
- Intel CPU 的P-state 驱动, 面向"SandyBridge"/"Ivy Bridge"/"Haswell" 或更新的CPU 微架构, 可以更好的支持" TurboBoost 2.0" 技术. Processor Clocking Control interface driver
- PCC(Processor Clocking Control) 接口支持. 此种接口仅对某些HPProliant 系列服务器有意义. 更多细节可以参考" Documentation/cpu-freq/pcc-cpufreq.txt" 文件. ACPI Processor P-States driver
-
这是首选的驱动(CONFIG_X86_INTEL_PSTATE
也依赖于它),
同时支持Intel
和AMD
的CPU.
除非你的CPU
实在太老,
否则必选.
-
Legacy cpb sysfs knob support for AMDCPUs
- 为了兼容旧的用户空间程序而设置, 建议关闭.
CONFIG_X86_ACPI_CPUFREQ_CPB
AMD Opteron/Athlon64 PowerNow!
- 过时的驱动, 仅为老旧的K8 核心的AMD 处理器提供支持.K10 以及更新的CPU 应该使用CONFIG_X86_ACPI_CPUFREQ 驱动. AMD frequency sensitivity feedback powersavebias
- 如果你使用AMD Family 16h 或者更高级别的处理器, 同时又使用"ondemand" 频率调节器, 开启此项可以更有效的进行频率调节( 在保证性能的前提下更节能). Intel Enhanced SpeedStep(deprecated)
- 已被时代抛弃的驱动, 仅对老旧的迅驰平台Intel Pentium M 或者Intel Xeons 处理器有意义. Intel Pentium 4 clock modulation
- 已被时代抛弃的驱动, 仅对支持老旧的Speedstep 技术的Intel Pentium 4 / XEON 处理器有意义. 而且即便是在这样的CPU 上, 因为种种兼容性问题可能导致的不稳定, 也不建议开启.
CONFIG_X86_INTEL_PSTATE
CONFIG_X86_PCC_CPUFREQ
CONFIG_X86_ACPI_CPUFREQ
CONFIG_X86_POWERNOW_K8
CONFIG_X86_AMD_FREQ_SENSITIVITY
CONFIG_X86_SPEEDSTEP_CENTRINO
CONFIG_X86_P4_CLOCKMOD
CONFIG_CPU_FREQ_STAT
CONFIG_CPU_FREQ_GOV_PERFORMANCE
CONFIG_CPU_FREQ_GOV_POWERSAVE
CONFIG_CPU_FREQ_GOV_USERSPACE
CONFIG_CPU_FREQ_GOV_ONDEMAND
CONFIG_CPU_FREQ_GOV_CONSERVATIVE
CPU idle PM support
-
通过sysfs
文件系统输出CPU
频率变化的统计信息
-
CPUidle
指令支持,
该指令可以让CPU
在空闲时"
打盹"
以节约电力和减少发热.
只要是支持ACPI
的CPU
就应该开启.
由于所有64
位CPU
都已支持ACPI,
所以不必犹豫,
开启![
提示]
为虚拟机编译的内核就没有必要开启了,
由宿主机内核去控制就OK
了.
-
Support multiple cpuidle drivers
- 允许CONFIG_CPU_IDLE 为每个不同的CPU 使用不同的驱动. 仅在你的系统由多个不同型号的CPU 组成, 并且具有不同的唤醒潜伏时间和状态的时候才需要开启.
CONFIG_CPU_IDLE_MULTIPLE_DRIVERS
Cpuidle Driver for Intel Processors
- 专用于IntelCPU 的cpuidle 驱动. 而CONFIG_CPU_IDLE 则是用于非Intel 的CPU. Memory power savings
- 内存节能
CONFIG_SUSPEND
CONFIG_HIBERNATION
CONFIG_PM_STD_PARTITION
CONFIG_PM_AUTOSLEEP
CONFIG_PM_WAKELOCKS
CONFIG_PM_RUNTIME
CONFIG_PM_DEBUG
CONFIG_ACPI
CONFIG_SFI
CONFIG_CPU_FREQ
CONFIG_CPU_IDLE
CONFIG_INTEL_IDLE
Bus options (PCI etc.)
总线选项
-
PCI support
-
PCI
是最重要的内部总线,
不但PCI
与PCIExpress
设备依赖于它,
而且USB/IDE/SATA/SCSI/
火线(IEEE1394)/PCMCIA/CardBus
等各种内部和外部总线也都依赖于它.
所以必须选"Y",
除非你知道自己在干什么.
-
Support mmconfig PCI config space access
- 允许通过mmconfig 方式访问 PCIconfig space, 这种访问方式比传统的IO 方式速度更快. 建议开启.MMCONFIG 的意思是"Memory-Mappedconfig", 它是PCIExpress 引入的新总线枚举方式. 背景知识:PCI 设备都有一组叫做'ConfigurationSpace' 的寄存器,PCI-E 设备在PCI 的基础上又增加了一组叫做'ExtendedConfigurationSpace' 的寄存器. 这些寄存器都被映射到了内存中(Memory-Mapped), 操作系统理应提供相应的API 供设备驱动和诊断程序访问这些'ConfigurationSpace'. 但如果操作系统没有提供Memory-Mapped 方式的API 的话, 这些驱动程序和诊断程序就必须自己根据操作系统的底层规则(IO 方式) 去访问, 这显然就增加了开发难度. 这个选项的目的就是提供Memory-Mapped 方式的API. Read CNB20LE Host Bridge Windows
- CNB20LE 芯片组PCI 热插拔支持. 除非你非常明确的知道你需要它, 否则请关闭此项. PCI Express support
-
PCIExpress
是PCI
的升级版并在软件层与PCI
兼容,
其目标是统一电脑内部总线.
基本上只要不是古董机,
都早已支持PCI-E
了.
选"Y".
-
PCI Express Hotplug driver
- 如果你的主板和设备都支持PCIExpress 热插拔就可以选上. Root Port Advanced Error Reporting support
-
PCIExpress Root Port Advanced Error Reporting (AER)
驱动支持.
这样,
发送到Root Port
的Error reporting messages
就会由PCI Express AER
处理.
建议开启.
背景知识:PCIExpress
定义了两种错误报告范例:(1)baseline,
所有PCI-E
组件都必须要支持,
功能也比较基础.(2)AER(AdvancedError Reporting),
功能比较高级,
也更可靠,
但并不要求所有组件都支持.
-
PCI Express ECRC settings control
- 允许覆写firmware/bios 设置的PCI ExpressECRC( 端对端循环冗余校验). 建议关闭, 除非你确实知道为什么要开启. PCIe AER error injector support
- 允许PCI-E AER 注入, 仅用于测试目的.
CONFIG_PCIE_ECRC
CONFIG_PCIEAER_INJECT
PCI Express ASPM control
-
PCI Express
ASPM(ActiveState Power Management)
和Clock Power Management
支持.
这是PCI-E
规范制定的一种电源管理方案,
可以在设备空闲时采用节电模式.
建议开启.ASPM
可以在运行时通过/sys/module/pcie_aspm/parameters/policy
进行开启或关闭.
-
Debug PCI Express ASPM
- 仅供调试. Default ASPM policy
- 默认的ASPM 电源管理策略. 下面的三个选项:"BIOSdefault" 表示使用BIOS 中的设置作为默认."Powersave" 表示在可能的情况下, 默认使用"L0s" 和"L1", 以尽可能节约电力."Performance" 表示禁止使用"L0s" 和"L1"( 即使BIOS 开启也同样禁止), 以保证最高性能.
CONFIG_PCIEASPM_DEBUG
CONFIG_HOTPLUG_PCI_PCIE
CONFIG_PCIEAER
CONFIG_PCIEASPM
CONFIG_PCI_MMCONFIG
CONFIG_PCI_CNB20LE_QUIRK
CONFIG_PCIEPORTBUS
Message Signaled Interrupts (MSI and MSI-X)
- PCI/PCI-E 支持三类中断:(1)INTx 使用传统的IRQ 中断, 可以与现行的驱动程序和操作系统兼容.(2)MSI 是PCI2.2 规范中新增的, 通过写入特殊的内存地址来触发和发送中断, 该种方式脱离了中断引脚带来的数目限制, 并且延迟小/ 效率高. 不过MSI 方式将中断全部落在单个CPU 上, 对多核CPU 利用不佳.(3)MSI-X 是在PCI3.0 规范中新增的, 在MSI 的基础上, 支持更多的消息数量以及独立的消息地址, 可以自动在多个CPU 上分担中断, 更适合多CPU 系统. 建议开启. 开启后, 也可以使用"pci=nomsi" 内核引导参数关闭MSI 特性. PCI Debugging
- 将PCI 调试信息输出到系统日志里. 如果你想诊断PCI 设备的故障, 可以开启, 否则应该关闭. Enable PCI resource re-allocationdetection
- 让内核自动检测" 是否需要重新分配PCI 资源". 即使此项已开启, 你依然可以用"pci=realloc=[on|off]" 来覆盖它. 此项仅在已开启CONFIG_PCI_IOV 的情况下才有意义. 此时, 如果BIOS 没有为 SR-IOV(Single-RootI/O Virtualization)BAR( 基地址寄存器) 分配资源, 那么内核将会自动对PCI 资源进行重新分配. 建议与CONFIG_PCI_IOV 同开关. PCI Stub driver
- PCIStub driver 的作用是将PCI 设备跟目前绑定的驱动分离, 暂时由其接管, 最后再交给虚拟机自己去驱动这个PCI 设备. Xen PCI Frontend
- 如果你使用XEN 的半虚拟化技术, 并且你的硬件支持IOMMU, 那么可以开启此项, 否则应该关闭. Interrupts on hypertransport devices
- 允许本地的 HyperTransport 设备使用中断. 这个一般用于AMD 平台,Intel 平台不支持这个. PCI IOV support
- PCII/O Virtualization 支持. 这需要硬件支持IOMMU 技术(AMD-Vi,IntelVT-d). PCI PRI support
- PCI Page Request Interface 支持. 它允许IOMMU 之后的设备能够从页错误中恢复过来. 这需要硬件支持IOMMU 技术(AMD-Vi,IntelVT-d). PCI PASID support
- PASID(Process Address SpaceIdentifiers) 可以被PCI 设备用来同时访问多个IO 地址空间. 这需要硬件支持IOMMU 技术(AMD-Vi,IntelVT-d). PCI IO-APIC hotplug support
- PCI IO-APIC 热插拔支持. ISA-style DMA support
- ISA-styleDMA 控制器支持. 目前基本只有 LPC总线设备需要使用, 最常见的是串口, 并口,PS/2 键盘, SuperI/O 芯片( 可以使用 Superiotool 和 sensors-detect 工具检测). 不确定的选"Yes".[ 说明] 这是一个历史遗留问题, 对于ISA 架构,DMA 操作是由一个专用的"DMA 控制器"( 最常见的是 Intel8237) 来执行的, 但是到了PCI 架构, 由于每一个PCI 设备都可以控制PCI 总线( 成为" busmaster") 并直接读写系统内存, 所以"DMA 控制器" 又消失了. 此选项只是为那些需要"ISA-DMA 控制器" 的设备提供了兼容性接口(API) 而已. PCCard (PCMCIA/CardBus) support
-
PCCard(PCMCIA/CardBus/ExpressCard)
接口通常出现在笔记本电脑上,
这些接口卡通常大小与信用卡差不多,
厚度大约3-5
毫米.
注意:
必须要配合
pcmciautils
工具才能正常使用PCMCIA
设备.
-
16-bit PCMCIA support
-
老旧的16-bit PCMCIA
卡支持
-
Load CIS updates from userspace
- 有些PCMCIA 卡需要从用户空间更新CIS(CardInformationStructure) 之后才能正常工作. 开启此项后, 内核将可以使用内置的固件加载器和热插拔子系统自动加载CIS, 而不再需要用户空间工具的辅助. 建议选"Yes".
CONFIG_PCMCIA_LOAD_CIS
32-bit CardBus support
- 常见的PCMCIA 卡基本上都是32 位的 CardBus 与 ExpressCard 设备. 如果你有这样的卡, 就选"Yes". 由于绝大多数的卡都是"yenta-compatible" 的, 所以一般你还需要选中CONFIG_YENTA 项. CardBus yenta-compatible bridge support
- 使用PCMCIA 卡的基本上都需要选择这一项, 子项是一些拥有自己特定扩展的硬件, 请按实际情况选择. { 省略的部分请按照自己实际使用的PCMCIA 卡选择}
CONFIG_PCMCIA
CONFIG_CARDBUS
CONFIG_YENTA
Support for PCI Hotplug
-
老旧的16-bit PCMCIA
卡支持
- PCI 热插拔不仅仅针对PCI 和PCI-E 设备, 也包括 CardBus 与 ExpressCard 设备. 请按需选择. { 省略的部分请按照自己实际使用PCI 控制器进行选择} RapidIO support
-
RapidIO
总线支持.
这种总线主要用于嵌入式系统.
-
Discovery timeout duration (seconds)
- 等待主机完成枚举( 也就是初始化) 的超时秒数. Enable RapidIO Input/Output Ports
- 开启所有RapidIO Input/Output 端口. DMA Engine support for RapidIO
- 使用 DMA引擎(CONFIG_DMADEVICES) 进行RapidIO 数据传输 RapidIO subsystem debug messages
- 将RapidIO 调试信息输出到系统日志里. 如果你想诊断RapidIO 设备的故障, 可以开启, 否则应该关闭. { 省略的部分请按照自己实际使用的控制器进行选择}
CONFIG_RAPIDIO_DISC_TIMEOUT
CONFIG_RAPIDIO_ENABLE_RX_TX_PORTS
CONFIG_RAPIDIO_DMA_ENGINE
CONFIG_RAPIDIO_DEBUG
CONFIG_PCI
CONFIG_PCI_MSI
CONFIG_PCI_DEBUG
CONFIG_PCI_REALLOC_ENABLE_AUTO
CONFIG_PCI_STUB
CONFIG_XEN_PCIDEV_FRONTEND
CONFIG_HT_IRQ
CONFIG_PCI_IOV
CONFIG_PCI_PRI
CONFIG_PCI_PASID
CONFIG_PCI_IOAPIC
CONFIG_ISA_DMA_API
CONFIG_PCCARD
CONFIG_HOTPLUG_PCI
CONFIG_RAPIDIO
Executable file formats / Emulations
可执行文件格式/仿真
-
Kernel support for ELFbinaries
- ELF 是最常用的跨平台二进制文件格式, 支持动态连接, 支持不同的硬件平台, 支持不同的操作系统. 必选, 除非你知道自己在做什么. Write ELF core dumps with partialsegments
- 如果你打算在此Linux 上开发应用程序或者帮助别人调试bug, 那么就选"Y", 否则选"N". 注意这里的调试和开发不是指内核调试和开发, 是应用程序的调试和开发. Kernel support for scripts starting with #!
- 支持以"#!/path/to/interpreter" 行开头的脚本. 务必"Y", 不要"M" 或"N", 除非你知道自己在做什么. Kernel support for MISC binaries
- 允许插入二进制封装层到内核中, 运行Java,.NET(Mono-based),Python,Emacs-Lisp 等语言编写的程序时需要它,DOSEMU 也需要它. 想要更方便的使用此特性, 你还需要使用"mountbinfmt_misc -t binfmt_misc/proc/sys/fs/binfmt_misc" 挂载 binfmt_misc 伪文件系统. 具体详情可以参考" Documentation/binfmt_misc.txt" 文档. Enable core dump support
- 核心转储 (coredump) 支持. 如果你打算在此Linux 上开发应用程序或者帮助别人调试bug, 那么就选"Y", 否则选"N". 注意这里的调试和开发不是指内核调试和开发, 是应用程序的调试和开发. IA32 Emulation
-
允许在64
位内核中运行32
位代码.
除非你打算使用纯64
位环境,
否则请开启此项.
提示:GRUB2
支持引导纯64
位内核,
但是GRUB
不支持.
-
IA32 a.out support
- 早期UNIX 系统的可执行文件格式(32 位), 目前已经被ELF 格式取代. 除非你需要使用古董级的二进制程序. 否则请关闭. x32 ABI for 64-bit mode
- 允许32 位程序使用完整的64 位寄存器, 以减小内存占用( memoryfootprint). 这可以提高32 位程序的运行性能. 如果你使用binutils-2.22 以上的版本( 支持elf32_x86_64), 就选"Y", 否则选"N".
CONFIG_IA32_AOUT
CONFIG_X86_X32
CONFIG_BINFMT_ELF
CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS
CONFIG_BINFMT_SCRIPT
CONFIG_BINFMT_MISC
CONFIG_COREDUMP
CONFIG_IA32_EMULATION
Networking support
网络支持
-
Networking options
-
网络选项
-
Packet socket
-
链路层
PF_PACKET
套接字支持.
可以让应用程序(
比如:
抓包工具
tcpdump,DHCP
客户端
dhclient)
直接与网络设备通讯,
而无需使用内核中的其它中介协议.
不确定的选"Y"
或"M".
-
Packet: sockets monitoring interface
- PF_PACKET 套接字监控接口, ss 这样的诊断工具需要它.
CONFIG_PACKET_DIAG
Unix domain sockets
-
Unixdomain sockets
支持.
许多程序都使用它在操作系统内部进行进程间通信(IPC),
比如:X Window, syslog, udev
等等.
选"Y",
除非你确实知道自己在做什么.
-
UNIX: socket monitoring interface
- UNIX 套接字监控接口, ss 这样的工具需要它.
CONFIG_UNIX_DIAG
Transformation user configuration interface
- 为 IPsec 相关的工具提供 Transformation(XFRM) 用户配置接口 Transformation sub policy support
- XFRM 子策略支持, 不确定的选"N". Transformation migrate database
- 用于动态的更新 IPsec SA(securityassociation) 的定位器(locator). 这个特性对于手机这类移动设备来讲至关重要, 因为它需要在不同的基站之间迁移. 不确定的选"N". Transformation statistics
- 转换统计, 这不是 SNMP/MIB 规范的内容. 用于调试目的. 不确定的选"N". PF_KEY sockets
-
PF_KEYv2套接字支持(
与KAME
兼容).PF_KEY
协议族主要用来处理SA(
安全关联),
对SADB(SA
数据库)
进行管理,
主要用在IPsec
协议中.
PF_KEY_v2的编程
API
在
RFC2367
中定义.
-
PF_KEY MIGRATE
- 向PF_KEYv2 套接字中添加一个PF_KEY MIGRATE 消息.PF_KEY MIGRATE 消息可用于动态的更新IPsec SA(security association) 的定位器(locator). 这个特性对于手机这类移动设备来讲至关重要, 因为它需要在不同的基站之间迁移. 不确定的选"N".
CONFIG_NET_KEY_MIGRATE
TCP/IP networking
-
TCP/IP
协议,
必选!
-
IP: multicasting
- IP组播 (IPmulticasting) 支持. 指的是一个发送者向一组特定的接收者发送数据, 但只需发送一份数据副本. 实际应用的场合很少, MBONE 算是其中之一, 与RTP 等音视频协议相结合也算一种. 不确定的选"N". IP: advanced router
-
高级路由支持,
需要开启内核的IP
转发功能(echo1 >/proc/sys/net/ipv4/ip_forward)
才能正常工作.
如果这个Linux
系统用作专业的路由器就选上,
选上之后还需要按需选择其下的子项.
一般的主机不需要这个.
-
FIB TRIE statistics
- 主要用于测试TRIE 性能 IP: policy routing
- 策略路由 IP: equal cost multipath
- 用于基于目的地址的负载均衡 IP: verbose route monitoring
- 显示冗余的路由监控信息
CONFIG_IP_FIB_TRIE_STATS
CONFIG_IP_MULTIPLE_TABLES
CONFIG_IP_ROUTE_MULTIPATH
CONFIG_IP_ROUTE_VERBOSE
IP: kernel level autoconfiguration
-
在内核启动时自动配置网卡的ip
地址/
路由表,
配置信息来自于以下途径:
内核引导参数,
自举协议
(BOOTP),
反向地址转换协议
(RARP),
动态主机配置协议
(DHCP).
通常,
需要从网络启动的无盘工作站才需要这个东西(
此时还需要开启CONFIG_ROOT_NFS),
一般的发行版都通过启动脚本(
dhcpcd/
dhclient/
ifconfig)
配置网络.
不确定的选"N".
-
IP: DHCP support
- DHCP 协议支持 IP: BOOTP support
- BOOTP 协议支持 IP: RARP support
- RARP 协议支持
CONFIG_IP_PNP_DHCP
CONFIG_IP_PNP_BOOTP
CONFIG_IP_PNP_RARP
IP: tunneling
- IP隧道, 主要目的是为了在TCP/IP 网络中传输其他协议的数据包, 当然也包括IP 数据包( 例如用于实现VPN). IP: GRE demultiplexer
- GRE demultiplexer 支持. 被CONFIG_NET_IPGRE 和CONFIG_PPTP 所依赖. IP: GRE tunnels over IP
-
基于IP
的通用路由封装(
GenericRoutingEncapsulation)
隧道支持.
该驱动主要用于对端是Cisco
路由器的场合,
因为Cisco
的路由器特别偏好GRE
隧道(
而不是CONFIG_NET_IPIP),
并且GRE
还允许通过隧道对组播进行再分发.
-
IP: broadcast GRE over IP
- GRE/IP 的一种应用是构建一个广播WAN( WideArea Network), 而其看上去却很像一个跑在互联网上的LAN( LocalArea Network). 如果你想要创建这样的网络, 那么就选"Y"( 还要加上CONFIG_IP_MROUTE).
CONFIG_NET_IPGRE_BROADCAST
IP: multicast routing
-
组播路由支持.
实际应用的场合很少,
MBONE
算是其中之一,
不确定的选"N".
-
IP: multicast policy routing
- 通常, 组播路由器上会运行一个单独的用户态守护进程, 根据源地址和目的地址来处理数据包. 开启此项后, 将能同时考虑数据包所带的标记(mark) 和所通过的网络接口, 并可在用户空间同时运行多个守护进程, 每一个进程处理一张路由表. IP: PIM-SM version 1 support
- Sparse Mode PIM (Protocol Independent Multicast) version 1 支持. 该协议被Cisco 路由器广泛支持, 你需要特定的软件(pimd-v1) 才能使用它. IP: PIM-SM version 2 support
- Sparse Mode PIM (Protocol Independent Multicast) version 2 支持. 该协议的使用并不广泛, 你需要特定的软件(pimd 或gated-5) 才能使用它.
CONFIG_IP_MROUTE_MULTIPLE_TABLES
CONFIG_IP_PIMSM_V1
CONFIG_IP_PIMSM_V2
IP: ARP daemon support
- 通常情况下, 内核自身会使用ARP 协议解析本地网络中的IP 地址与MAC 地址的对应关系, 并进行缓存. 开启此项后, 内核将使用用户空间的守护进程进行ARP 解析. 这主要是为了使用其他的替代解析协议( 比如mGRE 隧道中的NHRP), 或调试目的. 不确定的选"N". IP: TCP syncookie support
- TCPsyncookie 支持, 这是抵抗 SYNflood 攻击的好东西. 此特性的开关可以通过"/proc/sys/net/ipv4/tcp_syncookies" 文件控制, 写入"1" 表示开启, 写入"0" 表示关闭. 建议服务器环境开启此项. Virtual (secure) IP: tunneling
- 虚拟IP 隧道. 可以和xfrm 隧道一起使用, 以实现IPSEC 安全隧道, 并在其上使用路由协议. 不确定的选"N". IP: AH transformation
- IPsecAH 支持.IPsec 验证头(AH) 可对整个数据包(IP 报头与数据) 提供身份验证/ 完整性/ 抗重播保护. 但是它不提供保密性, 即它不对数据进行加密. 由于这个原因,AH 头正在慢慢被ESP 头取代. IP: ESP transformation
- IPsecESP 支持.IPsec 封装安全负载(ESP) 不仅为IP 负载提供身份验证/ 完整性/ 抗重播保护, 还提供保密性, 也就是还对数据进行加密.ESP 有两种使用模式: 传输模式(ESP 不对整个数据包进行签名, 只对IP 负载( 不含IP 报头) 进行保护) 和隧道模式( 将原始IP 包封装进新的带有ESP 头的IP 包内, 可提供完整的保护).ESP 可以独立使用, 也可与AH 组合使用( 越来越少). IP: IPComp transformation
- IP 静荷载压缩协议( IPPayload Compression Protocol)(RFC3173) 支持. 用于支持IPsec IP: IPsec transport mode
- IPsec 传输模式. 常用于对等通信, 用以提供内网安全. 数据包经过了加密但IP 头没有加密, 因此任何标准设备或软件都可查看和使用IP 头 IP: IPsec tunnel mode
- IPsec 隧道模式. 用于提供外网安全( 包括虚拟专用网络). 整个数据包( 数据头和负载) 都已经过加密处理且分配有新的ESP 头/IP 头/ 验证尾, 从而能够隐藏受保护站点的拓扑结构 IP: IPsec BEET mode
- IPsec BEET 模式. Large Receive Offload (ipv4/tcp)
- LRO(LargeReceive Offload) (ipv4/tcp) 支持. 它通过将多个TCP 数据整合在一个skb 结构中, 并在稍后的某个时刻作为一个大的数据包交付给上层的网络协议栈, 以减少上层协议栈处理skb 的开销, 提高Linux 系统接收TCP 数据包的能力. 目前, 主流网卡驱动都已支持此特性. 建议开启. 不过, LRO 不应该在路由器上开启, 因为它破坏了end-to-end 原则, 并会对路由性能造成显著的不利影响. INET: socket monitoring interface
-
INET(TCP,DCCP,...) socket
监视接口,
一些Linux
本地工具(
如:
包含ss
的
iproute2)
需要使用它
-
UDP: socket monitoring interface
- UDP socket 监视接口, 一些Linux 本地工具( 如: 包含ss 的 iproute2) 需要使用它
CONFIG_INET_UDP_DIAG
TCP: advanced congestion control
- 高级拥塞控制, 子项提供多种拥塞控制算法供选用. 如果没有特殊需求就别选了, 内核会自动将默认的拥塞控制设为"CUBIC" 并将"newReno" 作为候补. 仅在你确实知道自己需要的情况下选"Y". 不确定的选"N". TCP: MD5 Signature Option support (RFC2385)
- RFC2385 中描述了一种对TCP 会话进行MD5 签名的保护机制. 目前仅用于保护互联网运营商骨干路由器间的 BGP 会话. 一般的路由器/ 服务器等设备根本不需要这个. The IPv6 protocol
-
引领未来的
IPv6
支持.
-
IPv6: Privacy Extensions (RFC 3041) support
- IPv6 利用" StatelessAddressAutoconfiguration" 在无DHCP 服务器的情况下, 产生可用的" 临时IPv6 地址". 而本选项则为这个机制增加" 隐私扩展"( RFC4941) 保护. 默认状态下, 内核并不生产" 临时地址", 需要"echo2 >/proc/sys/net/ipv6/conf/all/use_tempaddr" 才能开启 IPv6: Router Preference (RFC 4191)support
-
主机连上IPv6
网络后,
会发出路由器邀请包(RouterSolicitation),
路由器则应答路由器公告包(RouterAdvertisement),
其中包含网关地址/IPv6
前缀/DNS
地址,
这样主机就能取得IPv6
地址,
并连接到互联网上,
这就是无状态地址自动分配(StateLess AddressAutoConfiguration)."
RouterPreference"
是"RouterAdvertisement"
包的可选扩展.
它可以改进主机选中路由器的能力,
特别是在多归属(
multi-homed)
网络中.
不确定的选"N".
-
IPv6: Route Information (RFC 4191)support
- 对" RouteInformation" 的实验性支持.
CONFIG_IPV6_ROUTE_INFO
IPv6: Enable RFC 4429 Optimistic DAD
- 乐观重复地址检测( OptimisticDuplicate Address Detection) 的实验性支持. 可以更快的进行自动地址配置. 不确定的选"N". IPv6: AH transformation
- IPsec AH 支持. 不确定的选"Y" 或"M".AH 头正在慢慢被ESP 头取代. IPv6: ESP transformation
- IPsec ESP 支持. 不确定的选"Y" 或"M". IPv6: IPComp transformation
- IPv6 静荷载压缩协议( IPPayload Compression Protocol)(RFC3173) 支持. 用于支持IPsec. 不确定的选"Y" 或"M". IPv6: Mobility
- 移动 IPv6(RFC3775) 支持. 主要用于移动设备. 不确定的选"N". IPv6: IPsec transport mode
- IPsec 传输模式. 常用于对等通信, 用以提供内网安全. 数据包经过了加密但IP 头没有加密, 因此任何标准设备或软件都可查看和使用IP 头. 不确定的选"Y" 或"M". IPv6: IPsec tunnel mode
- IPsec 隧道模式. 用于提供外网安全( 包括虚拟专用网络). 整个数据包( 数据头和负载) 都已经过加密处理且分配有新的ESP 头/IP 头/ 验证尾, 从而能够隐藏受保护站点的拓扑结构. 不确定的选"Y" 或"M". IPv6: IPsec BEET mode
- IPsec BEET 模式. 不确定的选"Y" 或"M". IPv6: MIPv6 route optimizationmode
- 移动 IPv6(MobileIPv6) 路由优化模式. 主要用于移动设备. 不确定的选"N". IPv6: IPv6-in-IPv4 tunnel (SIT driver)
- 在IPv4 网络上建立IPv6 隧道. 如果你希望可以通过IPv4 网络接入一个IPv6 网络, 可以选"Y" 或"M", 否则选"N". IPv6: IP-in-IPv6 tunnel (RFC2473)
- IPv6-in-IPv6/IPv4-in-IPv6 隧道( RFC2473) 支持. 不确定的选"N". IPv6: GRE tunnel
- 基于IPv6 的通用路由封装( GenericRoutingEncapsulation) 隧道支持. 该驱动主要用于对端是Cisco 路由器的场合, 因为Cisco 的路由器特别偏好GRE 隧道( 而不是CONFIG_IPV6_TUNNEL), 并且GRE 还允许通过隧道对组播进行再分发. IPv6: Multiple Routing Tables
-
多重路由表(
MultipleRouting Tables)
支持.
不确定的选"N".
-
IIPv6: source address based routing
- 允许根据源地址或前缀进行路由. 不确定的选"N".
CONFIG_IPV6_SUBTREES
IPv6: multicast routing
-
测试性的IPv6
组播路由支持.
实际应用的场合很少,
不确定的选"N".
-
IPv6: multicast policyrouting
- 通常, 组播路由器上会运行一个单独的用户态守护进程, 根据源地址和目的地址来处理数据包. 开启此项后, 将能同时考虑数据包所带的标记(mark) 和所通过的网络接口, 并可在用户空间同时运行多个守护进程, 每一个进程处理一张路由表. IPv6: PIM-SM version 2 support
- IPv6 PIM multicast routing protocol PIM-SMv2 支持.
CONFIG_IPV6_MROUTE_MULTIPLE_TABLES
CONFIG_IPV6_PIMSM_V2
CONFIG_IPV6_PRIVACY
CONFIG_IPV6_ROUTER_PREF
CONFIG_IPV6_OPTIMISTIC_DAD
CONFIG_INET6_AH
CONFIG_INET6_ESP
CONFIG_INET6_IPCOMP
CONFIG_IPV6_MIP6
CONFIG_INET6_XFRM_MODE_TRANSPORT
CONFIG_INET6_XFRM_MODE_TUNNEL
CONFIG_INET6_XFRM_MODE_BEET
CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION
CONFIG_IPV6_SIT
CONFIG_IPV6_TUNNEL
CONFIG_IPV6_GRE
CONFIG_IPV6_MULTIPLE_TABLES
CONFIG_IPV6_MROUTE
NetLabel subsystem support
- NetLabel 子系统支持.NetLabel 子系统为诸如CIPSO 与RIPSO 之类能够在分组信息上添加标签的协议提供支持, 看不懂就别选了.
CONFIG_IP_MULTICAST
CONFIG_IP_ADVANCED_ROUTER
CONFIG_IP_PNP
CONFIG_NET_IPIP
CONFIG_NET_IPGRE_DEMUX
CONFIG_NET_IPGRE
CONFIG_IP_MROUTE
CONFIG_ARPD
CONFIG_SYN_COOKIES
CONFIG_NET_IPVTI
CONFIG_INET_AH
CONFIG_INET_ESP
CONFIG_INET_IPCOMP
CONFIG_INET_XFRM_MODE_TRANSPORT
CONFIG_INET_XFRM_MODE_TUNNEL
CONFIG_INET_XFRM_MODE_BEET
CONFIG_INET_LRO
CONFIG_INET_DIAG
CONFIG_TCP_CONG_ADVANCED
CONFIG_TCP_MD5SIG
CONFIG_IPV6
CONFIG_NETLABEL
Security Marking
- 对网络包进行安全标记, 类似于nfmark, 但主要是为安全目的而设计. 看不懂的就别选了 Timestamping in PHY devices
- 允许在硬件支持的前提下, 为物理层( PHY) 数据包打上时间戳. 这会略微增加发送与接收的开销. 不确定的选"N". Network packet filtering framework (Netfilter)
-
Netfilter
可以对数据包进行过滤和修改,
可以作为防火墙("packetfilter"
或"proxy-based")
或网关(NAT)
或代理(proxy)
或网桥使用.
-
Network packet filtering debugging
- 仅供开发者调试Netfilter 使用 Advanced netfilter configuration
-
选"Y"
将会显示所有模块供用户选择,
选"N"
则会隐藏一些不常用的模块,
并自动将常用模块设为"M".
-
Bridged IP/ARP packets filtering
- 如果你希望使用桥接防火墙就打开它. 不确定的选"N".
CONFIG_BRIDGE_NETFILTER
Core Netfilter Configuration
-
核心Netfilter
配置(
当包流过Chain
时如果match
某个规则那么将由该规则的target
来处理,
否则将由同一个Chain
中的下一个规则进行匹配,
若不match
所有规则那么最终将由该Chain
的policy
进行处理)
-
Netfilter NFACCT over NFNETLINKinterface
- 允许通过 NFNETLINK 接口支持 NFACCT( 记账). Netfilter NFQUEUE over NFNETLINKinterface
- 允许通过 NFNETLINK 接口支持 NFQUEUE( 排队). Netfilter LOG over NFNETLINKinterface
- 允许通过 NFNETLINK 接口支持"LOG"( 日志). 该选项废弃了ipt_ULOG 和ebg_ulog 机制, 并打算在将来废弃基于syslog 的ipt_LOG 和ip6t_LOG 模块. Netfilter connection tracking support
-
连接追踪(connectiontracking)
支持,
连接跟踪把所有连接都保存在一个表格内,
并将每个包关联到其所属的连接.
可用于报文伪装或地址转换,
也可用于增强包过滤能力.
-
Connection mark tracking support
- 允许对连接进行标记, 与针对单独的包进行标记的不同之处在于它是针对连接流的.CONNMARK target 和connmark match 需要它的支持. Connection tracking security marksupport
- 允许对连接进行安全标记, 通常这些标记包(SECMARK) 复制到其所属连接(CONNSECMARK), 再从连接复制到其关联的包(SECMARK). Connection tracking zones
- " conntrackzones" 支持. 通常, 每个连接需要一个全局唯一标示符, 而"conntrackzones" 允许在不同zone 内的连接使用相同的标识符. Supply CT list in procfs (OBSOLETE)
- 已被废弃, 选"N". Connection tracking events
- 连接跟踪事件支持. 如果启用这个选项, 连接跟踪代码将提供一个"notifier" 链, 它可以被其它内核代码用来获知连接跟踪状态的改变 Connection tracking timeout
- 连接跟踪"timeout" 扩展. 这样你就可以在网络流上通过CT target 附加超时策略. Connection tracking timestamping
- 时间戳支持. 这样你就能在连接建立和断开时打上时间戳. DCCP protocol connection trackingsupport
- DCCP协议支持. SCTP protocol connection trackingsupport
- SCTP协议支持. UDP-Lite protocol connection trackingsupport
- UDP-Lite 支持. Amanda backup protocol support
- Amanda 备份协议支持. FTP protocol support
- 文件传输协议 (FTP) 支持. 跟踪FTP 连接需要额外的帮助程序. H.323 protocol support
- H.323协议支持. IRC protocol support
- IRC 扩展协议 DCC(DirectClient-to-Client Protocol) 支持. 该协议允许用户之间绕开服务器直接聊天和传输文件. NetBIOS name service protocolsupport
- NetBIOS 协议支持. SNMP service protocol support
- SNMP 协议支持. PPtP protocol support
- RFC2637 点对点隧道协议 (Pointto Point Tunnelling Protocol) 协议支持. SANE protocol support
- SANE 协议支持. SIP protocol support
- SIP 协议支持. TFTP protocol support
- TFTP 协议支持. Connection tracking netlink interface
- 基于 netlink 的用户接口支持. Connection tracking timeout tuning viaNetlink
- 通过 Netlink 机制支持对连接追踪超时进行细粒度的调节: 允许为特定的网络流指定超时策略, 而不是使用统一的全局超时策略. Connection tracking helpers in user-space viaNetlink
- 通过 Netlink 机制为用户空间的连接追踪帮助程序提供基础框架. NFQUEUE integration with ConnectionTracking
- 开启此项后, 即使网络包已经在队列(NFQUEUE) 中, 它依然可以包含连接追踪信息.
CONFIG_NF_CONNTRACK_MARK
CONFIG_NF_CONNTRACK_SECMARK
CONFIG_NF_CONNTRACK_ZONES
CONFIG_NF_CONNTRACK_PROCFS
CONFIG_NF_CONNTRACK_EVENTS
CONFIG_NF_CONNTRACK_TIMEOUT
CONFIG_NF_CONNTRACK_TIMESTAMP
CONFIG_NF_CT_PROTO_DCCP
CONFIG_NF_CT_PROTO_SCTP
CONFIG_NF_CT_PROTO_UDPLITE
CONFIG_NF_CONNTRACK_AMANDA
CONFIG_NF_CONNTRACK_FTP
CONFIG_NF_CONNTRACK_H323
CONFIG_NF_CONNTRACK_IRC
CONFIG_NF_CONNTRACK_NETBIOS_NS
CONFIG_NF_CONNTRACK_SNMP
CONFIG_NF_CONNTRACK_PPTP
CONFIG_NF_CONNTRACK_SANE
CONFIG_NF_CONNTRACK_SIP
CONFIG_NF_CONNTRACK_TFTP
CONFIG_NF_CT_NETLINK
CONFIG_NF_CT_NETLINK_TIMEOUT
CONFIG_NF_CT_NETLINK_HELPER
CONFIG_NETFILTER_NETLINK_QUEUE_CT
Transparent proxying support
- 透明代理支持, 也就是可以处理非本地的IPv4 TCP/UDP 套接字. 此功能需要配合一些iptables 规则和策略路由才能工作. 详见" Documentation/networking/tproxy.txt" 文档. Netfilter Xtables support (required forip_tables)
-
如果你打算使用ip_tables, ip6_tables, arp_tables
之一就必须选上
-
nfmark target and match support
- "nfmark" 是用户给包打上的一个自定义标记. 用于match 时, 允许基于"nfmark" 值对包进行匹配. 用于target 时, 允许在"mangle" 表中创建规则以改变包的"nfmark" 值. ctmark target and match support
- "ctmark" 是用户以连接为组, 给同一连接中的所有包打上的自定义标记. 用法与"nfmark" 相似. set target and match support
- "set" 是 ipset 工具创建的 IP地址集合. 使用match 可以对IP 地址集合进行匹配, 使用target 可以对集合中的项进行增加和删除. AUDIT target support
- 为被drop/accept 的包创建审计记录. CHECKSUM target support
- 用于"mangle" 表, 为缺少校验和的包添加checksum 字段的值. 主要是为了兼容一些老旧的网络程序( 例如某些dhcp 客户端). "CLASSIFY" targetsupport
- 允许为包设置优先级, 一些 qdiscs 排队规则(atm,cbq,dsmark,pfifo_fast,htb,prio) 需要使用它 "CONNMARK" targetsupport
- 这只是一个兼容旧配置的选项, 等价于CONFIG_NETFILTER_XT_CONNMARK "CONNSECMARK" targetsupport
- 针对链接进行安全标记, 同时还会将连接上的标记还原到包上( 如果链接中的包尚未进行安全标记), 通常与SECMARK target 联合使用 "CT" target support
- 允许为包加上连接追踪相关的参数, 比如"event" 和"helper". "DSCP" and "TOS" targetsupport
- DSCP target 允许对IPv4/IPv6 包头部的DSCP(DifferentiatedServices Codepoint) 字段( 常用于Qos) 进行修改.TOS target 允许在"mangle" 表创建规则以修改IPv4 包头的TOS(TypeOf Service) 字段或IPv6 包头的Priority 字段. "HL" hoplimit targetsupport
- HL(IPv6)/TTL(IPv4) target 允许更改包头的hoplimit/time-to-live 值. "HMARK" targetsupport
- 允许在"raw" 和"mangle" 表中创建规则, 以根据特定范围的哈希计算结果设置" skbuff" 标记. IDLETIMER target support
- 每个被匹配的包的定时器都会被强制指定为规则指定的值, 当超时发生时会触发一个sysfs 文件系统的通知. 剩余时间可以通过sysfs 读取. "LED" target support
- 允许在满足特定条件的包通过的时候, 触发LED 灯闪烁. 比如可以用于控制网卡的状态指示灯仅在有SSH 活动的时候才闪烁. LOG target support
- 允许向syslog 中记录包头信息. "MARK" target support
- 这只是一个兼容旧配置的选项, 等价于CONFIG_NETFILTER_XT_MARK "NETMAP" targetsupport
- NETMAP 用于实现一对一的静态NAT( 地址转换). "NFLOG" targetsupport
- 通过nfnetlink_log 记录日志. "NFQUEUE" targetSupport
- 用于替代老旧的QUEUE target. 因为NFQUEUE 能支持最多65535 个队列, 而QUEUE 只能支持一个. "NOTRACK" target support(DEPRECATED)
- 已被废弃, 勿选. "RATEEST" targetsupport
- RATEEST target 允许测量网络流的传输速率.[ 注:rateest match 允许根据速率进行匹配.] REDIRECT target support
- REDIRECT 是一种特别的NAT: 所有进入的连接都被映射到其入口网卡的地址, 这样这些包就会" 流入" 本机而不是" 流过" 本机. 这主要用于实现透明代理. "TEE" - packet cloning to alternatedestination
- 对包进行克隆, 并将克隆的副本路由到另一个临近的路由器( NextHop). "TPROXY" targetsupport
- 类似于REDIRECT, 但并不依赖于连接追踪和NAT, 也只能用于"mangle" 表, 用于将网络流量重定向到透明代理. "TRACE" targetsupport
- 允许对包打标记, 这样内核就可以记录每一个匹配到的规则. "SECMARK" targetsupport
- 允许对包进行安全标记, 用于安全子系统 "TCPMSS" targetsupport
- 允许更改TCP SYN 包的 MSS(MaximumSegment Size) 值, 通常=MTU-40. "TCPOPTSTRIP" targetsupport
- 允许从TCP 包头中剥离所有 TCP选项. "addrtype" address type matchsupport
- 根据地址类型进行匹配:UNICAST, LOCAL, BROADCAST, ... "bpf" match support
- BPF(BSDPacket Filter) 是一个强大的包匹配模块, 用于匹配那些让过滤器返回非零值的包. "cluster" matchsupport
- 这个模块可以用于创建网络服务器/ 防火墙集群, 而无需借助价格昂贵的负载均衡设备. 通常, 在包必须被本节点处理的条件下, 这个match 返回"true". 这样, 所有节点都可以看到所有的包, 但只有匹配的节点才需要进行处理, 这样就将负载进行了分摊. 而分摊算法是基于对源地址的哈希值. "comment" matchsupport
- 这是一个" 伪match", 目的是允许你在iptables 规则集中加入注释 "connbytes" per-connection counter matchsupport
- 允许针对单个连接内部每个方向( 进/ 出) 匹配已经传送的字节数/ 包数 "connlabel" matchsupport
- 允许向连接分配用户自定义的标签名. 内核仅存储bit 值, 而名称和bit 之间的对应关系由用户空间处理. 与"connmark" 的不同之处在于: 可以同时为一个连接分配32 个标志位(flagbit). "connlimit" matchsupport
- 允许根据每一个客户端IP 地址( 或每一段客户端IP 地址段) 持有的并发连接数进行匹配. "connmark" connection mark matchsupport
- 这只是一个兼容旧配置的选项, 等价于CONFIG_NETFILTER_XT_CONNMARK "conntrack" connection tracking matchsupport
- 通用连接跟踪匹配, 是"state" 的超集, 它允许额外的链接跟踪信息, 在需要设置一些复杂的规则( 比如网关) 时很有用 "cpu" match support
- 根据处理包所使用的CPU 是哪个进行匹配 "dccp" protocol matchsupport
- DCCP 是打算取代UDP 的新传输协议, 它在UDP 的基础上增加了流控和拥塞控制机制, 面向实时业务 "devgroup" matchsupport
- 允许根据网卡所属的" 设备组" 进行匹配 "dscp" and "tos" matchsupport
- dscp match 允许根据IPv4/IPv6 包头的 DSCP 字段进行匹配,tos match 允许根据IPv4 包头的 TOS 字段进行匹配 "ecn" match support
- 允许根据IPv4TCP 包头的 ECN 字段进行匹配 "esp" match support
- 允许对 IPSec 包的ESP 头中的SPI( 安全参数序列) 范围进行匹配 "hashlimit" matchsupport
- 此项的目的是取代"limit", 它基于你选定的源/ 目的地址和/ 或端口动态创建"limitbucket" 哈希表. 这样你就可以迅速创建类似这样的匹配规则:(1) 为给定的目的地址以每秒10k 个包的速度进行匹配;(2) 为给定的源地址以每秒500 个包的速率进行匹配 "helper" matchsupport
- 加载特定协议的连接跟踪辅助模块, 由该模块过滤所跟踪的连接类型的包, 比如ip_conntrack_ftp 模块 "hl" hoplimit/TTL matchsupport
- 基于IPv6 包头的hoplimit 字段, 或IPv4 包头的time-to-live 字段进行匹配 "iprange" address range matchsupport
- 根据IP 地址范围进行匹配, 而普通的iptables 只能根据"IP/mask" 的方式进行匹配. "ipvs" match support
- 允许根据包的 IPVS 属性进行匹配 "length" matchsupport
- 允许对包的长度进行匹配 "limit" match support
- 允许根据包的进出速率进行规则匹配, 常和"LOGtarget" 配合使用以抵抗某些Dos 攻击 "mac" address matchsupport
- 允许根据以太网的MAC 地址进行匹配 "mark" match support
- 这只是一个兼容旧配置的选项, 等价于CONFIG_NETFILTER_XT_MARK "multiport" Multiple port matchsupport
- 允许对TCP 或UDP 包同时匹配多个不连续的端口( 通常情况下只能匹配单个端口或端口范围) "nfacct" matchsupport
- 允许通过nfnetlink_acct 使用扩展记账 "osf" Passive OS fingerprintmatch
- 开启 PassiveOS Fingerprinting 模块, 以允许通过进入的TCPSYN 包被动匹配远程操作系统. 规则和加载程序可以从这里获取:http://www.ioremap.net/projects/osf "owner" match support
- 基于创建套接字的本地进程身份(user/group) 进行匹配, 还可以用于检查一个套接字是否确实存在 IPsec "policy" matchsupport
- 基于IPsecpolicy 进行匹配 "physdev" matchsupport
- 允许对进入或离开所经过的物理网口进行匹配 "pkttype" packet type matchsupport
- 允许对封包目的地址类别( 广播/ 组播/ 直播) 进行匹配 "quota" match support
- 允许对总字节数的限额值进行匹配 "rateest" matchsupport
- 根据RATEEST target 评估的速率值进行匹配 "realm" match support
- 允许根据iptables 中的路由子系统中的realm 值进行匹配. 它与tc 中的CONFIG_NET_CLS_ROUTE4 非常类似. "recent" matchsupport
- recentmatch 用于创建一个或多个最近使用过的地址列表, 然后又可以根据这些列表再进行匹配. "sctp" protocol matchsupport
- 支持根据流控制传输协议 (SCTP) 源/ 目的端口和"chunktype" 进行匹配. "socket" matchsupport
- can be used to match packets for which a TCP or UDP socketlookup finds a valid socket. It can be used in combination withthe MARK target and policy routing to implement full featurednon-locally bound sockets. "state" match support
- 这是对包进行分类的有力工具, 它允许利用连接跟踪信息对连接中处于特定状态的包进行匹配 "statistic" matchsupport
- 允许根据一个给定的百分率对包进行周期性的或随机性的匹配 "string" matchsupport
- 允许根据包所承载的数据中包含的特定字符串进行匹配 "tcpmss" matchsupport
- 允许根据TCPSYN 包头中的MSS( 最大分段长度) 选项的值进行匹配 "time" match support
- 根据包的到达时刻( 外面进入的包) 或者离开时刻( 本地生成的包) 进行匹配 "u32" match support
- "u32" 允许从包中提取拥有特定mask 的最多4 字节数据, 将此数据移动(shift) 特定的位数, 然后测试其结果是否位于特定的集合范围内. 更多细节可以直接参考内核源码(net/netfilter/xt_u32.c)
CONFIG_NETFILTER_XT_MARK
CONFIG_NETFILTER_XT_CONNMARK
CONFIG_NETFILTER_XT_SET
CONFIG_NETFILTER_XT_TARGET_AUDIT
CONFIG_NETFILTER_XT_TARGET_CHECKSUM
CONFIG_NETFILTER_XT_TARGET_CLASSIFY
CONFIG_NETFILTER_XT_TARGET_CONNMARK
CONFIG_NETFILTER_XT_TARGET_CONNSECMARK
CONFIG_NETFILTER_XT_TARGET_CT
CONFIG_NETFILTER_XT_TARGET_DSCP
CONFIG_NETFILTER_XT_TARGET_HL
CONFIG_NETFILTER_XT_TARGET_HMARK
CONFIG_NETFILTER_XT_TARGET_IDLETIMER
CONFIG_NETFILTER_XT_TARGET_LED
CONFIG_NETFILTER_XT_TARGET_LOG
CONFIG_NETFILTER_XT_TARGET_MARK
CONFIG_NETFILTER_XT_TARGET_NETMAP
CONFIG_NETFILTER_XT_TARGET_NFLOG
CONFIG_NETFILTER_XT_TARGET_NFQUEUE
CONFIG_NETFILTER_XT_TARGET_NOTRACK
CONFIG_NETFILTER_XT_TARGET_RATEEST
CONFIG_NETFILTER_XT_TARGET_REDIRECT
CONFIG_NETFILTER_XT_TARGET_TEE
CONFIG_NETFILTER_XT_TARGET_TPROXY
CONFIG_NETFILTER_XT_TARGET_TRACE
CONFIG_NETFILTER_XT_TARGET_SECMARK
CONFIG_NETFILTER_XT_TARGET_TCPMSS
CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE
CONFIG_NETFILTER_XT_MATCH_BPF
CONFIG_NETFILTER_XT_MATCH_CLUSTER
CONFIG_NETFILTER_XT_MATCH_COMMENT
CONFIG_NETFILTER_XT_MATCH_CONNBYTES
CONFIG_NETFILTER_XT_MATCH_CONNLABEL
CONFIG_NETFILTER_XT_MATCH_CONNLIMIT
CONFIG_NETFILTER_XT_MATCH_CONNMARK
CONFIG_NETFILTER_XT_MATCH_CONNTRACK
CONFIG_NETFILTER_XT_MATCH_CPU
CONFIG_NETFILTER_XT_MATCH_DCCP
CONFIG_NETFILTER_XT_MATCH_DEVGROUP
CONFIG_NETFILTER_XT_MATCH_DSCP
CONFIG_NETFILTER_XT_MATCH_ECN
CONFIG_NETFILTER_XT_MATCH_ESP
CONFIG_NETFILTER_XT_MATCH_HASHLIMIT
CONFIG_NETFILTER_XT_MATCH_HELPER
CONFIG_NETFILTER_XT_MATCH_HL
CONFIG_NETFILTER_XT_MATCH_IPRANGE
CONFIG_NETFILTER_XT_MATCH_IPVS
CONFIG_NETFILTER_XT_MATCH_LENGTH
CONFIG_NETFILTER_XT_MATCH_LIMIT
CONFIG_NETFILTER_XT_MATCH_MAC
CONFIG_NETFILTER_XT_MATCH_MARK
CONFIG_NETFILTER_XT_MATCH_MULTIPORT
CONFIG_NETFILTER_XT_MATCH_NFACCT
CONFIG_NETFILTER_XT_MATCH_OSF
CONFIG_NETFILTER_XT_MATCH_OWNER
CONFIG_NETFILTER_XT_MATCH_POLICY
CONFIG_NETFILTER_XT_MATCH_PHYSDEV
CONFIG_NETFILTER_XT_MATCH_PKTTYPE
CONFIG_NETFILTER_XT_MATCH_QUOTA
CONFIG_NETFILTER_XT_MATCH_RATEEST
CONFIG_NETFILTER_XT_MATCH_REALM
CONFIG_NETFILTER_XT_MATCH_RECENT
CONFIG_NETFILTER_XT_MATCH_SCTP
CONFIG_NETFILTER_XT_MATCH_SOCKET
CONFIG_NETFILTER_XT_MATCH_STATE
CONFIG_NETFILTER_XT_MATCH_STATISTIC
CONFIG_NETFILTER_XT_MATCH_STRING
CONFIG_NETFILTER_XT_MATCH_TCPMSS
CONFIG_NETFILTER_XT_MATCH_TIME
CONFIG_NETFILTER_XT_MATCH_U32
CONFIG_NETFILTER_NETLINK_ACCT
CONFIG_NETFILTER_NETLINK_QUEUE
CONFIG_NETFILTER_NETLINK_LOG
CONFIG_NF_CONNTRACK
CONFIG_NETFILTER_TPROXY
CONFIG_NETFILTER_XTABLES
IP set support
-
为内核添加IP
集(IPset)
支持,
然后就可以使用CONFIG_NETFILTER_XT_SET
功能.
此特性必须配合用户态工具
ipset
一起使用.
-
Maximum number of IP sets
- 默认的最大"set" 数, 取值范围是[2,65534]. 此值也可以由ip_set 模块的max_sets 参数设置. bitmap:ip set support
- "bitmap:ip" 集合类型. 根据IP 地址范围设定集合. bitmap:ip,mac set support
- "bitmap:ip,mac" 集合类型. 根据IP/MAC 地址对范围设定集合. bitmap:port set support
- "bitmap:port" 集合类型. 根据端口范围设定集合. hash:ip set support
- "hash:ip" 集合类型. 为多个离散的IP 地址设定集合. hash:ip,port set support
- "hash:ip,port" 集合类型. 为多个离散的IP/MAC 地址对设定集合. hash:ip,port,ip
- "hash:ip,port,ip" 集合类型. 为多个离散的IP/ 端口/IP 三元组设定集合. hash:ip,port,net set support
- "hash:ip,port,net" 集合类型. 为多个离散的IP/ 端口/ 网段三元组设定集合. hash:net set support
- "hash:net" 集合类型. 为多个离散的网段设定集合 hash:net,port set support
- "hash:net,port" 集合类型. 为多个离散的网段/ 端口对设定集合 hash:net,iface set support
- "hash:net,iface" 集合类型. 为多个离散的网段/ 网卡接口对设定集合 list:set set support
- "list:set" 集合类型. 将多个集合组成一个更大的集合
CONFIG_IP_SET_MAX
CONFIG_IP_SET_BITMAP_IP
CONFIG_IP_SET_BITMAP_IPMAC
CONFIG_IP_SET_BITMAP_PORT
CONFIG_IP_SET_HASH_IP
CONFIG_IP_SET_HASH_IPPORT
CONFIG_IP_SET_HASH_IPPORTIP
CONFIG_IP_SET_HASH_IPPORTNET
CONFIG_IP_SET_HASH_NET
CONFIG_IP_SET_HASH_NETPORT
CONFIG_IP_SET_HASH_NETIFACE
CONFIG_IP_SET_LIST_SET
IP virtual server support
-
IPVS(
IPVirtualServer)
支持.IPVS
可以帮助
LVS
基于多个后端真实服务器创建一个高性能的虚拟服务器.
可以使用三种具体的方法实现:NAT,
隧道,
直接路由(
使用较广).
-
IPv6 support for IPVS
- 为IPVS 添加IPv6 支持 IP virtual server debugging
- 为IPVS 添加调试支持 IPVS connection table size (the Nth power of2)
- 设置IPVS 连接哈希表的大小(2 CONFIG_IP_VS_TAB_BITS), 取值范围是[8,20], 默认值12 的意思是哈希表的大小是2 12=4096 项.IPVS 连接哈希表使用链表来处理哈希碰撞. 使用大的哈希表能够显著减少碰撞几率, 特别是哈希表中有成千上万连接的时候. 比较恰当的值差不多等于每秒的新建连接数乘以每个连接的平均持续秒数. 太小的值会造成太多碰撞, 从而导致性能大幅下降; 太大的值又会造成占用太多不必要的内存( 每个表项8 字节+ 每个连接128 字节). 该值也可以通过ip_vs 模块的conn_tab_bits 参数进行设置. TCP load balancing support
- TCP 传输协议负载均衡支持 UDP load balancing support
- UDP 传输协议负载均衡支持 ESP load balancing support
- IPSec ESP(Encapsulation Security Payload) 传输协议负载均衡支持 AH load balancing support
- IPSec AH(Authentication Header) 传输协议负载均衡支持. SCTP load balancing support
- SCTP 传输协议负载均衡支持 round-robin scheduling
- 循环分散算法: 最简单的调度算法, 将连接简单的循环分散到后端服务器上 weighted round-robin scheduling
- 基于权重的循环分散算法: 在循环分散的基础上, 权重较高的后端服务器接纳较多的连接 least-connection scheduling
- 最少连接算法: 将连接优先分配到活动连接最少的后端服务器 weighted least-connection scheduling
- 基于权重的最少连接算法: 结合考虑活动连接数与服务器权重 locality-based least-connection scheduling
- 基于目的IP 的最少连接算法( 常用于缓存集群): 优先根据目的IP 地址将连接分配到特定的后端, 仅在这些后端过载时( 活动连接数大于其权重) 才分散到其他后端. locality-based least-connection with replicationscheduling
- 与LBLC 类似, 不同之处在于: 前端负载均衡器会像NAT 一样同时记住客户端IP 与后端的对应关系, 并在新的连接到来的时候, 复用这个对应关系. destination hashing scheduling
- 目标地址哈希表算法: 简单的根据静态设定的目标IP 地址哈希表将连接分发到后端 source hashing scheduling
- 源地址哈希表算法: 简单的根据静态设定的源IP 地址哈希表将连接分发到后端 shortest expected delay scheduling
- 最小期望延迟算法: 将连接分配到根据期望延迟公式((Ci+1)/Ui) 算得的延迟最小的后端."i" 是后端服务器编号,"Ci" 是该服务器当前的连接数,"Ui" 是该服务器的权重. never queue scheduling
- 无排队算法: 这是一个两阶段算法, 如果有空闲服务器, 就直接分发到空闲服务器( 而不是等待速度最快的服务器), 如果没有空闲服务器, 就分发到期望延迟最小的服务器(SED 算法). IPVS source hashing table size (the Nth power of2)
- 将源IP 地址映射到后端服务器所使用的哈希表的大小(2 CONFIG_IP_VS_SH_TAB_BITS), 取值范围是[4,20], 默认值8 的意思是哈希表的大小是2 8=256 项. 理想的大小应该是所有后端的权重乘以后端总数? FTP protocol helper
- FTP 协议连接追踪帮助 Netfilter connection tracking
- Netfilter 连接追踪支持 SIP persistence engine
- 基于SIPCall-ID 提供持久连接支持
CONFIG_IP_VS_IPV6
CONFIG_IP_VS_DEBUG
CONFIG_IP_VS_TAB_BITS
CONFIG_IP_VS_PROTO_TCP
CONFIG_IP_VS_PROTO_UDP
CONFIG_IP_VS_PROTO_ESP
CONFIG_IP_VS_PROTO_AH
CONFIG_IP_VS_PROTO_SCTP
CONFIG_IP_VS_RR
CONFIG_IP_VS_WRR
CONFIG_IP_VS_LC
CONFIG_IP_VS_WLC
CONFIG_IP_VS_LBLC
CONFIG_IP_VS_LBLCR
CONFIG_IP_VS_DH
CONFIG_IP_VS_SH
CONFIG_IP_VS_SED
CONFIG_IP_VS_NQ
CONFIG_IP_VS_SH_TAB_BITS
CONFIG_IP_VS_FTP
CONFIG_IP_VS_NFCT
CONFIG_IP_VS_PE_SIP
IP: Netfilter Configuration
-
针对IPv4
的Netfilter
配置
-
IPv4 connection tracking support (required forNAT)
-
IPv4
链接跟踪.
可用于包伪装或地址转换,
也可用于增强包过滤能力
-
proc/sysctl compatibility with old connectiontracking
- 用于兼容老旧的连接追踪用户态程序
CONFIG_NF_CONNTRACK_PROC_COMPAT
IP tables support (required forfiltering/masq/NAT)
-
要用iptables
就肯定要选上
-
"ah" match support
- 允许对IPSec 包头的AH 字段进行匹配 "ecn" match support
- 这只是一个兼容旧配置的选项, 等价于CONFIG_NETFILTER_XT_MATCH_ECN "rpfilter" reverse path filter matchsupport
- 对进出都使用同一个网络接口的包进行匹配 "ttl" match support
- 这只是一个兼容旧配置的选项, 等价于CONFIG_NETFILTER_XT_MATCH_HL Packet filtering
-
定义filter
表,
以允许对包进行过滤
-
REJECT target support
- 允许返回一个ICMP 错误包而不是简单的丢弃包
CONFIG_IP_NF_TARGET_REJECT
ULOG target support
- 反对使用该选项, 因为它已经被CONFIG_NETFILTER_NETLINK_LOG 代替 IPv4 NAT
-
允许进行伪装/
端口转发以及其它的NAT
功能,
仅在你需要使用iptables
中的nat
表时才需要选择
-
MASQUERADE target support
- SNAT 是指在数据包从网卡发送出去的时候, 把数据包中的源地址部分替换为指定的IP, 这样, 接收方就认为数据包的来源是被替换的那个IP 的主机. 伪装(MASQUERADE) 是一种特殊类型的SNAT:MASQUERADE 是用发送数据的网卡上的IP 来替换源IP, 用于那些IP 不固定的场合( 比如拨号或者通过DHCP 分配) NETMAP target support
- 这只是一个兼容旧配置的选项, 等价于CONFIG_NETFILTER_XT_TARGET_NETMAP. REDIRECT target support
- 这只是一个兼容旧配置的选项, 等价于CONFIG_NETFILTER_XT_TARGET_REDIRECT. Basic SNMP-ALG support
- 为 SNMP 荷载实现ALG(ApplicationLayer Gateway) 支持( RFC2962).
CONFIG_IP_NF_TARGET_MASQUERADE
CONFIG_IP_NF_TARGET_NETMAP
CONFIG_IP_NF_TARGET_REDIRECT
CONFIG_NF_NAT_SNMP_BASIC
Packet mangling
-
在iptables
中启用mangle
表以便对包进行各种修改,
常用于改变包的路由
-
CLUSTERIP target support
- CLUSTERIP target 允许你无需使用昂贵的负载均衡设备也能创建廉价的负载均衡集群 ECN target support
- 用于mangle 表, 可以去除IPv4 包头的 ECN(ExplicitCongestion Notification) 位, 主要用于在保持ECN 功能的前提下, 去除网络上的"ECN 黑洞". "TTL" target support
- 这只是一个兼容旧配置的选项, 等价于CONFIG_NETFILTER_XT_TARGET_HL.
CONFIG_IP_NF_TARGET_CLUSTERIP
CONFIG_IP_NF_TARGET_ECN
CONFIG_IP_NF_TARGET_TTL
raw table support (required for NOTRACK/TRACE)
- 在iptables 中添加一个raw 表, 该表在netfilter 框架中非常靠前, 并在PREROUTING 和OUTPUT 链上有钩子, 从而可以对收到的数据包在连接跟踪前进行处理 Security table
- 在iptables 中添加一个security 表, 以支持强制访问控制 (MandatoryAccess Control) 策略
CONFIG_IP_NF_MATCH_AH
CONFIG_IP_NF_MATCH_ECN
CONFIG_IP_NF_MATCH_RPFILTER
CONFIG_IP_NF_MATCH_TTL
CONFIG_IP_NF_FILTER
CONFIG_IP_NF_TARGET_ULOG
CONFIG_NF_NAT_IPV4
CONFIG_IP_NF_MANGLE
CONFIG_IP_NF_RAW
CONFIG_IP_NF_SECURITY
ARP tables support
-
arptables
支持
-
ARP packet filtering
- ARP 包过滤. 对于进入和离开本地的ARP 包定义一个filter 表, 在桥接的情况下还可以应用于被转发的ARP 包 ARP payload mangling
- 允许对ARP 包的荷载部分进行修改, 比如修改源和目标物理地址
CONFIG_IP_NF_ARPFILTER
CONFIG_IP_NF_ARP_MANGLE
CONFIG_NF_CONNTRACK_IPV4
CONFIG_IP_NF_IPTABLES
CONFIG_IP_NF_ARPTABLES
IPv6: Netfilter Configuration
-
IPv4
链接跟踪.
可用于包伪装或地址转换,
也可用于增强包过滤能力
- 针对IPv6 的Netfilter 配置. 其子项内容类似于IPv4, 需要的话可以参考前面IPv4 的Netfilter 配置进行选择 DECnet: Netfilter Configuration
- 针对 DECnet 的Netfilter 配置 Ethernet Bridge tables (ebtables)support
- 针对以太网桥的 ebtablesNetfilter 配置
CONFIG_NETFILTER_DEBUG
CONFIG_NETFILTER_ADVANCED
CONFIG_IP_SET
CONFIG_IP_VS
CONFIG_BRIDGE_NF_EBTABLES
The DCCP Protocol
- 数据报拥塞控制协议( DatagramCongestion ControlProtocol) 在UDP 的基础上增加了流控和拥塞控制机制, 使数据报协议能够更好地用于流媒体业务的传输 The SCTP Protocol
- 流控制传输协议( StreamControl TransmissionProtocol) 是一种新兴的传输层协议.TCP 协议一次只能连接一个IP 地址而在 SCTP 协议一次可以连接多个IP 地址且可以自动平衡网络负载, 一旦某一个IP 地址失效会自动将网络负载转移到其他IP 地址上 The RDS Protocol
- 可靠数据报套接字 (ReliableDatagram Sockets)协议支持. The TIPC Protocol
- 透明内部进程间通信协议( TransparentInter Process Communication), 以共享内存为基础实现任务和资源的调度, 专门用于集群内部通信 Asynchronous Transfer Mode (ATM)
- 异步传输模式( ATM) 支持. 主要用于高速LAN 和WAN. 目前已经日薄西山了. Layer Two Tunneling Protocol (L2TP)
- 第二层隧道协议(RFC2661) 支持 802.1d Ethernet Bridging
- 802.1d 以太网桥 802.1Q/802.1ad VLAN Support
- 802.1Q 虚拟局域网 DECnet Support
- DECnet 协议 ANSI/IEEE 802.2 LLC type 2 Support
- PF_LLC 类型套接字支持. 也就是 IEEE802.2 LLC 2 The IPX protocol
- IPX协议是由Novell 公司提出的运行于OSI 模型第三层的协议, 具有可路由的特性,IPX 的地址分为网络地址和主机地址, 网络地址由管理员分配, 主机地址为MAC 地址. 由于IP 协议的广泛使用,IPX 的应用早已日薄西山. Appletalk protocol support
- Appletalk 是苹果公司创建的一组网络协议, 仅用于苹果系列计算机. CCITT X.25 Packet Layer
- CCITTX.25 协议集支持. LAPB Data Link Driver
- LAPB 协议支持. Phonet protocols family
- PhoNet 是Nokia 开发的面相数据包的通信协议, 仅用于Nokiamaemo/meego 产品. IEEE Std 802.15.4 Low-Rate Wireless Personal Area Networkssupport
-
IEEEStd 802.15.4
定义了一个低速率/
低功耗/
低复杂度的短距离个人无线网络规范.
主要用于物联网中的传感器/
交换器之类设备之间的互联.
-
6lowpan support over IEEE 802.15.4
- 在IEEE802.15.4 上支持IPv6 压缩. Generic IEEE 802.15.4 Soft Networking Stack(mac802154)
- 为SoftMAC 设备( 仅实现了PHY 层) 实现硬件独立的 IEEEStd 802.15.4 协议栈. 使用HardMAC 设备的用户应该选"N".[ 注意] 这里的实现既未经过认证, 也未进行充分的兼容性测试.
CONFIG_IEEE802154_6LOWPAN
CONFIG_MAC802154
QoS and/or fair queueing
- QoS( QualityofService) 支持. 当内核有多个包需要通过网络发送的时候, 它需要决定哪个包先发, 那个包后发, 哪个包丢弃. 这就是包调度算法. 关闭此项表示内核使用最简单的FIFO 算法, 开启此项后就可以使用多种不同的调度算法( 需要配合用户层工具 iproute2+tc).QoS 还用于支持 diffserv(DifferentiatedServices) 和 RSVP(ResourceReservationProtocol) 功能. 包调度的状态信息可以从"/proc/net/psched" 文件中获取. 仅在你确实需要的时候选"Y". Data Center Bridging support
- DCB(DataCenter Bridging) 支持. 数据中心桥接是一组可增强传统以太网功能, 以管理通信的功能, 尤其适用于网络通信流量和传输率都很高的环境中. 光纤通道可专用于承载此类型的通信. 但是, 如果使用专用链路来仅提供光纤通道通信, 则成本可能会很高. 因此, 更多情况下使用以太网光纤通道.DCB 功能可满足光纤通道对遍历以太网时包丢失的敏感度要求.DCB 允许对等方基于优先级区分通信. 通过区分优先级, 可确保在主机之间发生拥塞时, 保持较高优先级通信的包完整性. 使用DCB 交换协议, 通信主机可以交换会影响高速网络通信的配置信息. 然后, 对等方可对公用配置进行协商, 确保通信流不中断, 同时防止高优先级包出现包丢失. 这些功能都需要底层的网卡支持. 一般网卡都是不支持的. 所以不确定的可以选"N". DNS Resolver support
- 内核DNS 解析支持. 用于支持CONFIG_AFS_FS/CONFIG_CIFS/CONFIG_CIFS_SMB2 模块. 此功能需要用户态程序"/sbin/dns.resolve" 和配置文件"/etc/request-key.conf" 的支持. 更多信息参见" Documentation/networking/dns_resolver.txt" 文档, 不确定的选"N". B.A.T.M.A.N. Advanced Meshing Protocol
- B.A.T.M.A.N.( 更好的移动无线网络方案) 是一种用于multi-hop ad-hoc mesh 网络的路由协议. 它是一种去中心化分布式无线Adhoc 模式, 特别适用于自然灾害等紧急情况下, 创建临时的无线网络. 不确定的选"N". Open vSwitch
- OpenvSwitch 是一个多层虚拟交换标准. 此选项提供了内核级的高速转发功能( 需要配合用户态守护进程ovs-vswitchd 来实现). Virtual Socket protocol
-
这是一个类似于TCP/IP
的协议,
用于虚拟机之间以及虚拟机与宿主之间的通信.
开启此项后,
还需要从子项中选择适用于特定虚拟化技术的传输协议.
-
VMware VMCI transport for VirtualSockets
- 适用于VMware 虚拟化技术的VMCI 传输协议支持.
CONFIG_VMWARE_VMCI_VSOCKETS
NETLINK: mmaped IO
- 基于内存映射机制的 netlinkIO 支持. 这样可以避免在用户空间与内存空间之间复制数据, 从而提升操作速度. 建议开启. NETLINK: socket monitoring interface
- NETLINK socket 监视接口. ss 这样的诊断工具需要它. Network priority cgroup
- Cgroup 子系统支持: 基于每个网络接口为每个进程分配网络使用优先级. enable BPF Just In Time compiler
- BPF(BerkeleyPacket Filter) 的过滤功能通常由一个解释器(interpreter) 解释执行BPF 虚拟机指令的方式工作. 开启此项, 内核在加载过滤指令后, 会将其编译为本地指令, 以加快执行速度. 网络嗅探程序(libpcap/tcpdump) 可以从中受益. 注意: 需要"echo1 > /proc/sys/net/core/bpf_jit_enable" 之后才能生效. Network testing
- 网络测试, 仅供调试使用
CONFIG_PACKET
CONFIG_UNIX
CONFIG_XFRM_USER
CONFIG_XFRM_SUB_POLICY
CONFIG_XFRM_MIGRATE
CONFIG_XFRM_STATISTICS
CONFIG_NET_KEY
CONFIG_INET
CONFIG_NETWORK_SECMARK
CONFIG_NETWORK_PHY_TIMESTAMPING
CONFIG_NETFILTER
CONFIG_IP_DCCP
CONFIG_IP_SCTP
CONFIG_RDS
CONFIG_TIPC
CONFIG_ATM
CONFIG_L2TP
CONFIG_BRIDGE
CONFIG_VLAN_8021Q
CONFIG_DECNET
CONFIG_LLC2
CONFIG_IPX
CONFIG_ATALK
CONFIG_X25
CONFIG_LAPB
CONFIG_PHONET
CONFIG_IEEE802154
CONFIG_NET_SCHED
CONFIG_DCB
CONFIG_DNS_RESOLVER
CONFIG_BATMAN_ADV
CONFIG_OPENVSWITCH
CONFIG_VSOCKETS
CONFIG_NETLINK_MMAP
CONFIG_NETLINK_DIAG
CONFIG_NETPRIO_CGROUP
CONFIG_BPF_JIT
Amateur Radio support
-
链路层
PF_PACKET
套接字支持.
可以让应用程序(
比如:
抓包工具
tcpdump,DHCP
客户端
dhclient)
直接与网络设备通讯,
而无需使用内核中的其它中介协议.
不确定的选"Y"
或"M".
- 业余无线电支持. 供无线电爱好者进行自我训练/ 相互通讯/ 技术研究 CAN bus subsystem support
- CAN(ControllerAreaNetwork) 是一个低速串行通信协议. 被广泛地应用于工业自动化/ 船舶/ 医疗设备/ 工业设备等嵌入式领域. 更多信息参见" Documentation/networking/can.txt" 文件. IrDA (infrared) subsystem support
- 红外线通讯技术支持, 主要用于嵌入式环境, 某些老旧的笔记本上也可能会有红外接口. Bluetooth subsystem support
-
蓝牙支持.
蓝牙目前已经基本取代红外线,
成为嵌入式设备/
智能设备/
笔记本的标配近距离(
小于10
米)
通信设备.
在Linux
上通常使用来自
BlueZ
的hciconfig
和bluetoothd
工具操作蓝牙通信.
-
RFCOMM protocol support
-
虚拟串口协议(
RFCOMM)
是一个面向连接的流传输协议,
提供
RS232
控制和状态信号,
从而模拟串口的功能.
它被用于支持拨号网络,
OBEX(ObjectExchange),
以及某些蓝牙程序(
例如文件传输).
-
RFCOMM TTY support
- 允许在RFCOMM 通道上模拟 TTY 终端
CONFIG_BT_RFCOMM_TTY
BNEP protocol support
-
蓝牙网络封装协议(BluetoothNetwork Encapsulation Protocol)
可以在蓝牙上运行其他网络协议(TCP/IP).
BluetoothPAN(Personal Area Network)
需要它的支持.
-
Multicast filter support
- 组播支持 Protocol filter support
- 协议过滤器支持
CONFIG_BT_BNEP_MC_FILTER
CONFIG_BT_BNEP_PROTO_FILTER
CMTP protocol support
- CMTP(CAPI 消息传输协议) 用于支持已在上世纪被淘汰的ISDN 设备. 不确定的选"N". HIDP protocol support
- 人机接口设备协议(HumanInterface Device Protocol) 用于支持各种人机接口设备( 比如鼠标/ 键盘/ 耳机等). Bluetooth device drivers
-
各种蓝牙设备驱动
-
HCI USB driver
- 使用USB 接口的蓝牙设备支持 HCI SDIO driver
- 使用 SDIO 接口的蓝牙设备支持 HCI UART driver
-
使用串口的蓝牙设备支持.
此外,
基于
UART
的蓝牙
PCMCIA
和
CF
设备也需要此模块的支持.
-
UART (H4) protocol support
- 大多数使用UART 接口的蓝牙设备( 包括PCMCIA 和CF 卡) 都使用这个协议. BCSP protocol support
- 基于CSR(CambridgeSilicon Radio) 公司的BlueCore 系列芯片的蓝牙设备( 包括PCMCIA 和CF 卡) 支持 Atheros AR300x serial support
- 基于AtherosAR300x 系列芯片的蓝牙设备支持 HCILL protocol support
- 基于TexasInstruments 公司的BRF 芯片的蓝牙设备支持 Three-wire UART (H5) protocol support
- Three-wire UART (H5) 协议假定UART 通信可能存在各种错误, 从而使得CTS/RTS 引脚线变得可有可无. 看不懂就可以不选.
CONFIG_BT_HCIUART_H4
CONFIG_BT_HCIUART_BCSP
CONFIG_BT_HCIUART_ATH3K
CONFIG_BT_HCIUART_LL
CONFIG_BT_HCIUART_3WIRE
HCI VHCI (Virtual HCI device) driver
- 模拟蓝牙设备支持. 主要用于开发 { 大多数蓝牙设备并不需要特定的独立驱动, 此处省略的独立驱动仅是为了驱动那些不严格遵守蓝牙规范的芯片}
CONFIG_BT_HCIBTUSB
CONFIG_BT_HCIBTSDIO
CONFIG_BT_HCIUART
CONFIG_BT_HCIVHCI
CONFIG_BT_RFCOMM
CONFIG_BT_BNEP
CONFIG_BT_CMTP
CONFIG_BT_HIDP
RxRPC session sockets
-
虚拟串口协议(
RFCOMM)
是一个面向连接的流传输协议,
提供
RS232
控制和状态信号,
从而模拟串口的功能.
它被用于支持拨号网络,
OBEX(ObjectExchange),
以及某些蓝牙程序(
例如文件传输).
- RxRPC 会话套接字支持( 仅包括传输部分, 不含表示部分).CONFIG_AFS_FS 依赖于它. 不确定的选"N". 详情参见" Documentation/networking/rxrpc.txt" 文档. Wireless
-
无线网络支持.
-
cfg80211 - wireless configuration API
-
cfg80211
是
Linux无线局域网(
802.11)
配置接口,
是使用WiFi
的前提.
注意:"
WiFi"
是一个无线网路通信技术的品牌,
由WiFi
联盟所持有.
目的是改善基于IEEE802.11
标准的无线网路产品之间的互通性.
现时一般人会把WiFi
及IEEE802.11
混为一谈,
甚至把WiFi
等同于无线网路(WiFi
只是无线网络的一种).
-
nl80211 testmode command
- 仅供调试和特殊目的使用. enable developer warnings
- 仅供调试开发使用 cfg80211 regulatory debugging
- 仅供调试开发使用 cfg80211 certification onus
- 仅在你确实明白此项含义的情况下, 才考虑选"Y", 否则请选"N". enable powersave by default
- 默认开启省电模式. 可能会导致某些设计拙劣的网络程序掉线. 建议开启. 详情参见" Documentation/power/pm_qos_interface.txt" 文档. cfg80211 DebugFS entries
- 仅供调试 use statically compiled regulatory rulesdatabase
- 由于绝大多数发行版都含有 CRDA 软件包, 所以绝大多数人应该选"N". 如果你确实需要选"Y", 那么请认真阅读"net/wireless/db.txt" 文件. cfg80211 wireless extensions compatibility
- 为那些老旧的用户空间程序提供兼容性, 建议关闭.
CONFIG_NL80211_TESTMODE
CONFIG_CFG80211_DEVELOPER_WARNINGS
CONFIG_CFG80211_REG_DEBUG
CONFIG_CFG80211_CERTIFICATION_ONUS
CONFIG_CFG80211_DEFAULT_PS
CONFIG_CFG80211_DEBUGFS
CONFIG_CFG80211_INTERNAL_REGDB
CONFIG_CFG80211_WEXT
lib80211 debugging messages
- 仅供调试 Generic IEEE 802.11 Networking Stack (mac80211)
- 独立于硬件的通用 IEEE802.11 协议栈模块(mac80211). 它是驱动开发者用来编写softMAC 无线设备驱动的框架,softMAC 设备允许用软件实现帧的管理( 包括解析和产生80211 无线帧), 从而让系统能更好的控制硬件, 现在大多数的无线网卡都是softMAC 设备. 不确定的选"Y". PID controller based rate control algorithm
- 基于比例 -积分 -微分控制器( PIDcontroller) 的发送速率(TXrate) 控制算法. 用于CONFIG_MAC80211 模块. 不确定的选"N". Minstrel
-
minstrel
发送速率(TXrate)
控制算法.
用于CONFIG_MAC80211
模块.
这是首选的算法,
不确定的选"Y".
-
Minstrel 802.11n support
- minstrel_ht 发送速率(TXrate) 控制算法. 适用于 802.11n 规范. 不确定的选"Y".
CONFIG_MAC80211_RC_MINSTREL_HT
Default rate control algorithm
- 默认发送速率(TXrate) 控制算法. 相当于mac80211 模块"ieee80211_default_rc_algo" 参数的值. 建议选择"Minstrel" 算法. Enable mac80211 mesh networking (pre-802.11s)support
- 802.11s 草案是无线网状网络(MeshNetworking) 的延伸与增补标准(amendment). 它扩展了IEEE802.11 MAC( 介质访问控制) 标准, 定义了利用自我组态的多点跳跃拓朴(multi-hoptopologies), 进行无线感知(radio-awaremetrics), 以支援广播/ 组播/ 单播传送网络封包的架构与协定. 不确定的选"N". Enable LED triggers
- 允许在接受/ 发送数据时触发无线网卡的LED 灯闪烁. Export mac80211 internals in DebugFS
- 在DebugFS 中显示mac80211 模块内部状态的扩展信息, 仅用于调试目的. Trace all mac80211 debug messages
- 跟踪所有mac80211 模块的调试信息, 仅用于调试目的. Select mac80211 debugging features
- 仅供调试
CONFIG_CFG80211
CONFIG_LIB80211_DEBUG
CONFIG_MAC80211
CONFIG_MAC80211_RC_PID
CONFIG_MAC80211_RC_MINSTREL
CONFIG_MAC80211_MESH
CONFIG_MAC80211_LEDS
CONFIG_MAC80211_DEBUGFS
CONFIG_MAC80211_MESSAGE_TRACING
CONFIG_MAC80211_DEBUG_MENU
WiMAX Wireless Broadband support
-
cfg80211
是
Linux无线局域网(
802.11)
配置接口,
是使用WiFi
的前提.
注意:"
WiFi"
是一个无线网路通信技术的品牌,
由WiFi
联盟所持有.
目的是改善基于IEEE802.11
标准的无线网路产品之间的互通性.
现时一般人会把WiFi
及IEEE802.11
混为一谈,
甚至把WiFi
等同于无线网路(WiFi
只是无线网络的一种).
-
WiMAX(IEEE802.16)
协议支持.
随着2010
年英特尔放弃WiMAX
以及LTE
在4G
市场成了唯一的主流标准,WiMAX
的电信运营商也逐渐向LTE
转移,WiMAX
论坛也于2012
年将TD-LTE
纳入WiMAX2.1
规范,
一些WiMAX
运营商也开始将设备升级为TD-LTE.
-
WiMAX debug level
- 设置允许使用的最大调试信息详细等级, 推荐使用默认值"8", 设为"0" 表示允许使用所有调试信息. 运行时默认禁止使用调试信息, 但可通过sysfs 文件系统中的debug-levels 文件开启调试信息.
CONFIG_WIMAX_DEBUG_LEVEL
RF switch subsystem support
-
为了节约电力,
很多无线网卡和蓝牙设备都有内置的射频开关(
RFswitche)
用于开启和关闭设备(
通过
rfkill
命令).
建议选"Y".
更多详情参见"
Documentation/rfkill.txt"
文档
-
RF switch input support
- 这是个反对使用的特性, 一般情况下建议关闭. 但是某些笔记本无线网卡的开关是由按钮控制的, 在这些笔记本上建议开启. Generic rfkill regulator driver
- 通用射频开关驱动. 这是最通用的驱动, 其射频开关连接在电压调节器(voltageregulator) 上. 依赖于CONFIG_REGULATOR 框架. GPIO RFKILL driver
- 通用GPIO 射频开关驱动. 仅用于嵌入式环境, 其射频开关连接在 GPIO 总线上, 比如NVIDIA 的 Tegra 和三星的 Exynos4 智能手机SoC 芯片.
CONFIG_RFKILL_INPUT
CONFIG_RFKILL_REGULATOR
CONFIG_RFKILL_GPIO
Plan 9 Resource Sharing Support (9P2000)
- 实验性的支持 Plan9 的 9P2000 协议. CAIF support
- 除非你为Android/MeeGo 系统编译内核, 并且需要使用PF_CAIF 类型的socket, 否则请选"N". Ceph core library
- 仅在你需要使用 Ceph 分布式文件系统, 或者 rados 块设备(rbd) 时选"Y". 否则应选"N". NFC subsystem support
- NFC( 近场通信) 子系统. 这些设备主要用于智能手机之类的嵌入式领域.
CONFIG_HAMRADIO
CONFIG_CAN
CONFIG_IRDA
CONFIG_BT
CONFIG_AF_RXRPC
CONFIG_WIRELESS
CONFIG_WIMAX
CONFIG_RFKILL
CONFIG_NET_9P
CONFIG_CAIF
CONFIG_CEPH_LIB
CONFIG_NFC
Device Drivers
设备驱动程序
-
Generic Driver Options
-
驱动程序通用选项
-
path to uevent helper
- 早年的内核( 切换到基于netlink 机制之前), 在发生 uevent 事件( 通常是热插拔) 时, 需要调用用户空间程序( 通常是"/sbin/hotplug"), 以帮助完成uevent 事件的处理. 此选项就是用于设定这个帮助程序的路径. 由于目前的发行版都已不再需要此帮助程序, 所以请保持空白. Maintain a devtmpfs filesystem to mount at /dev
-
devtmpfs
是一种基于CONFIG_TMPFS
的文件系统(
与proc
和sys
有几分相似).
在系统启动过程中,
随着各个设备的初始化完成,
内核将会自动在devtmpfs
中创建相应的设备节点(
使用默认的文件名和权限)
并赋予正确的主次设备号.
更进一步,
在系统运行过程中,
随着各种设备插入和拔除,
内核也同样会自动在devtmpfs
中创建和删除的相应的设备节点(
使用默认的文件名和权限)
并赋予正确的主次设备号.
如果将devtmpfs
挂载到"/dev"
目录(
通常是系统启动脚本),
那么便拥有了一个全自动且全功能的"/dev"
目录,
而且用户空间程序(
通常是
udevd)
还可以对其中的内容进行各种修改(
增删节点,
改变权限,
创建符号链接).
目前的发行版和各种嵌入式系统基本都依赖于此,
除非你知道自己在做什么,
否则请选"Y".
-
Automount devtmpfs at /dev, after the kernel mounted therootfs
- 在内核挂载根文件系统的同时, 立即自动将devtmpfs 挂载到"/dev" 目录. 因为此时init 进程都还尚未启动, 所以这就确保在进入用户空间之前, 所有设备文件就都已经准备完毕. 开启此选项相当于设置内核引导参数"devtmpfs.mount=1", 关闭此选项相当于设置内核引导参数"devtmpfs.mount=0". 开启此项后, 你就可以放心的使用"init=/bin/sh" 直接进入救援模式, 而不必担心"/dev" 目录空无一物. 注意: 此选项并不影响基于initramfs 的启动, 此种情况下,devtmpfs 必须被手动挂载. 所以, 如果你的系统使用initrd 或者有专门的启动脚本用于挂载"/dev" 目录( 大多数发行版都有这样的脚本), 或者你看了前面的解释, 还是不确定, 那就选"N". 对于实在想要使用"init=/bin/sh" 直接进入救援模式的人来说, 还是使用"init=/bin/shdevtmpfs.mount=1" 吧!
CONFIG_DEVTMPFS_MOUNT
Select only drivers that don't need compile-time externalfirmware
- 只显示那些编译时不需要额外固件支持的驱动程序, 除非你有某些怪异硬件, 否则请选"Y". Prevent firmware from being built
- 不编译固件(firmware). 固件一般是随硬件的驱动程序提供的, 仅在更新固件的时候才需要重新编译. 建议选"Y". Userspace firmware loading support
-
用户空间固件加载支持.
如果内核自带的模块需要它,
它将会被自动选中.
但某些内核树之外的模块也可能需要它,
这时候就需要你根据实际情况手动开启了.
-
Include in-kernel firmware blobs in kernelbinary
- 内核源码树中包含了许多驱动程序需要的二进制固件(blob), 推荐的方法是通过"makefirmware_install" 将"firmware" 目录中所需的固件复制到系统的"/lib/firmware/" 目录中, 然后由用户空间帮助程序在需要的时候进行加载. 开启此项后, 将会把所需的"blob" 直接编译进内核, 这样就可以无需用户空间程序的帮助, 而直接使用这些固件了( 例如: 当根文件系统依赖于此类固件, 而你又不想使用initrd 的时候). 每个需要此类二进制固件的驱动程序, 都会有一个"Includefirmware for xxx device" 的选项, 如果此处选"Y", 那么这些选项都将被隐藏. 建议选"N". External firmware blobs to build into the kernelbinary
- 指定要额外编译进内核的二进制固件(blob). 此选项的值是一个空格分隔的固件文件名字符串, 这些文件必须位于CONFIG_EXTRA_FIRMWARE_DIR 目录中( 其默认值是内核源码树下的"firmware" 目录). Firmware blobs root directory
- 指定CONFIG_EXTRA_FIRMWARE 中列出的文件位于哪个目录. 默认值是当前内核源码树下的"firmware" 目录. 若有需要, 你也可以修改成其他目录( 例如"/lib/firmware/").
CONFIG_FIRMWARE_IN_KERNEL
CONFIG_EXTRA_FIRMWARE
CONFIG_EXTRA_FIRMWARE_DIR
Fallback user-helper invocation for firmwareloading
- 在内核自己直接加载固件失败后, 作为补救措施, 调用用户空间帮助程序( 通常是udev) 再次尝试加载. 通常这个动作是不必要的, 因此应该选"N". 仅在某些特殊的固件位于非标准位置时, 才需要选"Y". Driver Core verbose debug messages
- 让驱动程序核心在系统日志中产生冗长的调试信息, 仅供调试 Managed device resources verbose debug messages
- 为内核添加一个"devres.log" 引导参数. 当被设为非零值时, 将会打印出设备资源管理驱动(devres) 的调试信息. 仅供调试使用. Contiguous Memory Allocator
- 在使用ARM 等嵌入式Linux 系统的时候,GPU,Camera,HDMI 等都需要预留大量连续内存, 这部分内存平时不用, 但是传统的做法又必须先预留着. 而通过连续内存分配器( ContiguousMemory Allocator) 可以做到不预留内存, 仅在需要的时候才将大块的连续物理内存分配给相应的驱动程序. 这个机制对于那些不支持I/Omap 和scatter-gather 的设备很有作用. 详情参见"include/linux/dma-contiguous.h" 文件, 不确定的选"N".
CONFIG_UEVENT_HELPER_PATH
CONFIG_DEVTMPFS
CONFIG_STANDALONE
CONFIG_PREVENT_FIRMWARE_BUILD
CONFIG_FW_LOADER
CONFIG_FW_LOADER_USER_HELPER
CONFIG_DEBUG_DRIVER
CONFIG_DEBUG_DEVRES
CONFIG_CMA
Bus devices
- 总线设备. 此类设备仅出现在ARM 平台. Connector - unified userspace <-> kernelspacelinker
-
统一的用户空间和内核空间连接器,
工作在netlinksocket
协议的顶层.
连接器是非常便利的用户态与内核态的通信方式,
内核开发者在编写内核子系统或模块时可以采用这种方式方便地进行用户态与内核态的数据交换.
内核有两个连接器应用实例:
一个是进程事件连接器,
另一个是CIFS
文件系统.
另外还有一个给
Gentoo装上启动画面的例子.
不确定的选"N".
-
Report process events to userspace
- 提供一个向用户空间报告进程事件(fork,exec,id 变化(uid,gid,suid)) 的连接器.
CONFIG_PROC_EVENTS
Memory Technology Device (MTD) support
- MTD 子系统是一个闪存转换层. 其主要目的是提供一个介于闪存硬件驱动程序与高级应用程序之间的抽象层, 以简化闪存设备的驱动. 注意:MTD 常用于嵌入式系统, 而我们常见的U 盘/MMC 卡/SD 卡/CF 卡等移动存储设备以及固态硬盘(SSD), 虽然也叫"flash", 但它们并不是使用MTD 技术的存储器. 仅在你需要使用主设备号为31 的MTD 块设备(/dev/romX,/dev/rromX,/dev/flashX,/dev/rflashX), 或者主设备号为90 的MTD 字符设备(/dev/mtdX,/dev/mtdrX) 时选"Y", 否则选"N". Parallel port support
- 25 针并口( LPT接口) 支持. 古董级的打印机或扫描仪可能使用这种接口. 目前已被淘汰. Plug and Play support
-
即插即用(PnP)
支持.
选"Y"
表示让Linux
为PnP
设备分配中断和I/O
端口(
需要在BIOS
中开启"PnPOS"),
选"N"
则表示让BIOS
来分配(
需要在BIOS
中关闭"PnPOS").
建议选"Y".
-
PNP debugging messages
- 允许使用"pnp.debug" 内核参数在系统启动过程中输出PnP 设备的调试信息, 建议选"N".
CONFIG_PNP_DEBUG_MESSAGES
Block devices
-
块设备,
建议选"Y".
-
Normal floppy disk support
- 通用软驱支持. 已被时代抛弃的设备 Parallel port IDE device support
- 通过并口与计算机连接的IDE 设备, 比如某些老旧的外接光驱或硬盘之类. 此类设备早就绝种了 Block Device Driver for Micron PCIeSSDs
- MicronP320/P325/P420/P425 系列固态硬盘支持 Compaq SMART2 support
- 基于Compaq SMART2 控制器的磁盘阵列卡 Compaq Smart Array 5xxx support
- 基于Compaq Smart 控制器的磁盘阵列卡 SCSI tape drive support for Smart Array 5xxx
- 在基于Compaq Smart 控制器的磁盘阵列卡上使用的磁带机 Mylex DAC960/DAC1100 PCI RAID Controllersupport
- Mylex DAC960, AcceleRAID, eXtremeRAID PCI RAID 控制器. 很古董的设备了. Micro Memory MM5415 Battery Backed RAM support
- 一种使用电池做后备电源的内存, 但被用作块设备, 可以像硬盘一样被分区 Loopback device support
-
loop
是指拿文件来模拟块设备(/dev/loopX),
比如可以将一个iso9660
镜像文件当成文件系统来挂载.
建议选"Y".
-
Number of loop devices to pre-create at inittime
- 系统预先初始化的loop 设备个数. 此值可以通过内核引导参数"loop.max_loop" 修改. 如果你使用 util-linux-2.21 以上版本, 建议设为"0"(loop 设备将通过/dev/loop-control 动态创建), 否则保持默认值即可. Cryptoloop Support
- 使用系统提供的CryptoAPI 对loop 设备加密. 注意: 因为不能在Cryptoloop 上创建日志型文件系统(CONFIG_DM_CRYPT 模块可以), 所以Cryptoloop 已经逐渐淡出了. 建议选"N".
CONFIG_BLK_DEV_LOOP_MIN_COUNT
CONFIG_BLK_DEV_CRYPTOLOOP
DRBD Distributed Replicated Block Devicesupport
-
DRBD(DistributedReplicated BlockDevice)
是一种分布式储存系统.
DBRD
处于文件系统之下,
比文件系统更加靠近操作系统内核及IO
栈.DRBD
类似RAID1
磁盘阵列,
只不过RAID1
是在同一台电脑内,
而DRBD
是透过网络.
注意:
为了进行连接认证,
你还需要选中CONFIG_CRYPTO_HMAC
以及相应的哈希算法.
不确定的选"N".
-
DRBD fault injection
- 模拟IO 错误, 以用于测试DRBD 的行为. 主要用于调试目的
CONFIG_DRBD_FAULT_INJECTION
Network block device support
- 让你的电脑成为网络块设备的客户端, 也就是可以挂载远程服务器通过TCP/IP 网络提供的块设备(/dev/ndX). 提示: 这与NFS 或Coda 没有任何关系. 更多详情参见" Documentation/blockdev/nbd.txt". 不确定的选"N". NVM Express block device
- NVMExpress 是专门针对PCI-E 接口高性能固态硬盘的标准规范. 有了这一标准, 操作系统厂商只需要编写一种驱动, 就可以支持不同厂商的不同PCI-ESSD 设备, 以解决目前PCI-ESSD 产品形态与规格五花八门, 缺乏通用性和互用性的问题. OSD object-as-blkdev support
- 允许将一个单独的 SCSIOSD(Object-Based Storage Devices) 对象当成普通的块设备来使用. 举例来说, 你可以在OSD 设备上创建一个2G 大小的对象, 然后通过本模块将其模拟成一个2G 大小的块设备使用. 不确定的选"N". Promise SATA SX8 support
- 基于Promise 公司的SATASX8 控制器的RAID 卡 RAM block device support
-
内存中的虚拟磁盘,
大小固定.
详情参阅"
Documentation/blockdev/ramdisk.txt".
由于其功能比CONFIG_TMPFS
弱许多,
使用上也不方便,
所以除非你有明确的理由,
否则应该选"N",
并转而使用CONFIG_TMPFS.
-
Default number of RAM disks
- 默认RAMdisk 的数量. 请保持默认值, 除非你知道自己在做什么. Default RAM disk size (kbytes)
- 默认RAMdisk 的大小. 请保持默认值, 除非你知道自己在做什么. Support XIP filesystems on RAM block device
- XIP(eXecute InPlace) 支持( 指应用程序可以直接在flash 闪存内运行, 不必再把代码读到系统RAM 中). 一般用于嵌入式设备.
CONFIG_BLK_DEV_RAM_COUNT
CONFIG_BLK_DEV_RAM_SIZE
CONFIG_BLK_DEV_XIP
Packet writing on CD/DVD media
-
CD/DVD
刻录机支持.
详情参见"
Documentation/cdrom/packet-writing.txt"
文档
-
Free buffers for data gathering
- 用于收集写入数据的缓冲区个数( 每个占用64Kb 内存), 缓冲区越多性能越好. Enable write caching
- 为CD-R/W 设备启用写入缓冲, 目前这是一个比较危险的选项. 建议关闭.
CONFIG_CDROM_PKTCDVD_BUFFERS
CONFIG_CDROM_PKTCDVD_WCACHE
ATA over Ethernet support
- 以太网ATA 设备( ATAover Ethernet) 支持. Xen virtual block device support
- XEN 虚拟块设备前端驱动. 此驱动用于与实际驱动块设备的后端驱动( 通常位于domain0) 通信. Xen block-device backend driver
- XEN 块设备后端驱动( 通常位于domain0) 允许内核将实际的块设备通过高性能的共享内存接口导出给其他客户端的前端驱动( 通常位于非domain0) 使用. Virtio block driver
- Virtio 虚拟块设备驱动. 它可以用于 KVM 或 XEN 这类基于 lguest 或 QEMU 的VMM(VirtualMachine Monitor). Very old hard disk (MFM/RLL/IDE) driver
- 又老又旧的MFM/RLL/ESDI 硬盘驱动. 无需犹豫, 选"N". Rados block device (RBD)
- rados 块设备(rbd) 支持. 它可以与分布式文件系统 Ceph 合作, 也能独立工作. IBM FlashSystem 70/80 PCIe SSD Device Driver
- IBM FlashSystem 70/80 PCIe SSD 驱动
CONFIG_BLK_DEV_FD
CONFIG_PARIDE
CONFIG_BLK_DEV_PCIESSD_MTIP32XX
CONFIG_BLK_CPQ_DA
CONFIG_BLK_CPQ_CISS_DA
CONFIG_CISS_SCSI_TAPE
CONFIG_BLK_DEV_DAC960
CONFIG_BLK_DEV_UMEM
CONFIG_BLK_DEV_LOOP
CONFIG_BLK_DEV_DRBD
CONFIG_BLK_DEV_NBD
CONFIG_BLK_DEV_NVME
CONFIG_BLK_DEV_OSD
CONFIG_BLK_DEV_SX8
CONFIG_BLK_DEV_RAM
CONFIG_CDROM_PKTCDVD
CONFIG_ATA_OVER_ETH
CONFIG_XEN_BLKDEV_FRONTEND
CONFIG_XEN_BLKDEV_BACKEND
CONFIG_VIRTIO_BLK
CONFIG_BLK_DEV_HD
CONFIG_BLK_DEV_RBD
CONFIG_BLK_DEV_RSXX
Misc devices
-
杂项设备
-
{
省略的部分请按照实际的硬件状况进行选择}
Integrated Circuits ICS932S401
- IDTICS932S401 系列时钟频率控制芯片支持( 可能会出现在某些主板上). Enclosure Services
- SES( SCSIEnclosureServices) 是一项目前大多数移动硬盘盒/ 硬盘托架/ 电脑主板都支持的硬件控制命令服务,SES 可以让主机端透过SCSI 命令去控制外接盒内的电源/ 冷却装置以及其他与数据传输无关的东西. 要使用这项技术, 外置硬盘盒和主机上的SCSI/ATA 芯片都需要支持SES 技术才OK. VMware Balloon Driver
- VMware 物理内存balloon 驱动. 参见CONFIG_BALLOON_COMPACTION 选项. Generic on-chip SRAM driver
- 许多 SoC系统都有芯片内嵌的 SRAM. 开启此项后, 就可以声明将此段内存范围交给通用内存分配器( genalloc) 管理. 不确定的选"N". EEPROM support
- EEPROM 主要用于保存主板或板卡的BIOS, 如果你想通过此Linux 系统刷写BIOS 可以考虑开启相应的子项. 不确定的全部选"N". Intel Management Engine Interface
- Intel芯片组管理引擎, 介于固件和系统驱动之间, 类似于一种接口(Interface), 帮助系统和固件之间交互. 如果你的芯片组位于"CONFIG_INTEL_MEI_ME" 中, 可以选"Y", 不过其实也没有多少实际意义. ME Enabled Intel Chipsets
- 请根据帮助中列出的芯片组对照实际情况选择. VMware VMCI Driver
- VMwareVMCI(Virtual Machine CommunicationInterface) 是一个在host 和guest 之间以及同一host 上的guest 和guest 之间进行高速通信的虚拟设备.VMCI 主要是提供一个接口让guest 内的程序来调用, 通过这个接口能在一个主机上的多个虚拟机之间进行直接的通信, 而且无需经过更上层的其他途径, 这样将有效地降低网络通信所产生的开支, 但是这需要修改虚拟机上的软件, 所以VMCI 只适用于对虚拟机间通信要求非常高的情况. 不确定的选"N".
CONFIG_ICS932S401
CONFIG_ENCLOSURE_SERVICES
CONFIG_VMWARE_BALLOON
CONFIG_SRAM
CONFIG_INTEL_MEI
CONFIG_INTEL_MEI_ME
CONFIG_VMWARE_VMCI
ATA/ATAPI/MFM/RLL support (DEPRECATED)
- 已被废弃的IDE 硬盘和ATAPI 光驱等接口的驱动( 已被CONFIG_ATA 取代). 选"N", 除非你确实知道自己在干什么. SCSI device support
-
SCSI子系统
-
RAID Transport Class
- 这只是用来得到RAID 信息以及将来可能用于配置RAID 方式的一个类. 不管你的系统使用的是哪种RAID, 都可以放心的关闭此项. 不确定的选"N". SCSI device support
- SCSI协议支持. 有任何SCSI/SAS/SATA/USB/FibreChannel/FireWire 设备之一就必须选上. 选"Y". SCSI target support
- 内核态的通用 SCSITarget 实现( 原 LIO 项目).SCSI 子系统使用了一种客户机- 服务器(C/S) 模型. 通常, 一台计算机是这个模型中的客户机( 称为"initiator"), 向目标(target) 发起块操作请求, 这个"target" 通常是一个存储设备( 例如一块硬盘). 此模块的功能是将一台计算机变成一个"target"( 就像一个普通的硬盘一样), 响应其他"initiator" 节点的操作请求, 从而让"target" 能够提供更加高级的功能: 复制, 自动精简配置, 重复数据删除, 高可用性, 自动备份等. 不确定的选"N". legacy /proc/scsi/ support
- 过时的/proc/scsi/ 接口. 某些老旧的刻录程序可能需要它, 建议选"N". SCSI disk support
- 使用SCSI/SAS/SATA/PATA/USB/FibreChannel 存储设备的必选. 选"Y". SCSI tape support
- 通用SCSI 磁带驱动 SCSI OnStream SC-x0 tape support
- 专用于OnStreamSC-x0/USB-x0/DI-x0 的SCSI 磁带/USB 盘驱动 SCSI CDROM support
-
通过SCSI/FireWire/USB/SATA/IDE
接口连接的DVD/CD
驱动器(
基本上涵盖了所有常见的接口).
-
Enable vendor-specific extensions (for SCSICDROM)
- 仅在某些古董级的SCSICDROM 设备上才需要:NEC/TOSHIBAcdrom, HP Writers
CONFIG_BLK_DEV_SR_VENDOR
SCSI generic support
- 通用 SCSI协议(/dev/sg*) 支持. 也就是除硬盘/ 光盘/ 磁带之外的SCSI 设备( 例如光纤通道). 这些设备还需要额外的用户层工具支持才能正常工作. 例如: SANE, Cdrtools, CDRDAO, Cdparanoia SCSI media changer support
- SCSI 介质转换设备(SCSI Medium Changerdevice) 是一种控制多个SCSI 介质的转换器( 例如在多个磁带/ 光盘之间进行切换), 常用于控制磁带库或者CD 自动点歌机(jukeboxes). 此种设备会在/proc/scsi/scsi 中以"Type:MediumChanger" 列出. 控制此类设备的用户层工具包是 scsi-changer. 更多细节参见" Documentation/scsi/scsi-changer.txt" 文档. 不确定的选"N". SCSI Enclosure Support
- "Enclosure" 是一种用于管理SCSI 设备的背板装置. 比如移动硬盘盒就是一种常见的"Enclosure" 设备. 此项主要用于向用户层报告一些"Enclosure" 设备的状态, 这些状态对于SCSI 设备的正常运行并非必须. 此项依赖于CONFIG_ENCLOSURE_SERVICES 选项. Probe all LUNs on each SCSI device
- 默认强制在每个SCSI 设备上探测所有的逻辑设备数量(LogicalUnitNumber), 其值会被该模块的内核引导参数"max_luns" 覆盖. 只在一个SCSI 设备上有多个逻辑设备时才需要选它, 一般的SCSI 设备并不需要. 一个SCSI 设备上有多个逻辑设备的典型例子: 多口USB 读卡器,CD 点唱机(jukebox), 处于"massstorage" 模式的智能手机, 量产为多个设备后的U 盘. 注意: 此项并不影响符合SCSI-3 或更高标准的设备, 因为这些设备会明确的向内核报告逻辑设备数. Verbose SCSI error reporting (kernel size+=12K)
- 以易读的方式报告SCSI 错误, 内核将会增大12K SCSI logging facility
- 启用SCSI 日志( 默认并不开启, 需要"echo[bitmask] >/proc/sys/dev/scsi/logging_level"), 可用于跟踪和捕获SCSI 设备的错误. 关于[bitmask] 的说明可以查看"drivers/scsi/scsi_logging.h" 文件. Asynchronous SCSI scanning
- 异步扫描的意思是, 在内核引导过程中,SCSI 子系统可以在不影响其他子系统引导的同时进行SCSI 设备的探测( 包括同时在多个总线上进行检测), 这样可以加快系统的引导速度. 但是如果SCSI 设备驱动被编译为模块, 那么异步扫描将会导致内核引导出现问题( 解决方法是加载scsi_wait_scan 模块, 或者使用"scsi_mod.scan=sync" 内核引导参数). 不确定的选"N". SCSI Transports
-
SCSI
接口类型,
下面的子项可以全不选,
内核中若有其他部分依赖它,
会自动选上
-
Parallel SCSI (SPI) Transport Attributes
- 传统的并行SCSI(Ultra320/160 之类), 已逐渐被淘汰 FiberChannel Transport Attributes
-
光纤通道接口
-
SCSI target support for FiberChannel TransportAttributes
- 为光纤通道添加"target" 模式驱动
CONFIG_SCSI_FC_TGT_ATTRS
iSCSI Transport Attributes
- iSCSI 协议是利用TCP/IP 网络传送SCSI 命令和数据的I/O 技术 SAS Transport Attributes
- 串行SCSI 传输属性支持( SAS 对于SPI 的关系犹如SATA 对于IDE), 这是目前的主流接口 SAS Domain Transport Attributes
-
为使用了
SASDomain
架构的驱动程序提供帮助.SASDomain
即整个SAS
交换构架,
由"SASdevice"
和"SASexpanderdevice"
组成,
其中Device
又区分为Initiator
和Target,
它们可以直接对接起来,
也可以经过Expander
进行连接,Expander
起到通道交换或者端口扩展的作用.
看不懂就说明你不需要它.
-
ATA support for libsas (requires libata)
- 在libsas 中添加ATA 支持, 从而让libata 和libsas 协同工作. Support for SMP interpretation for SAShosts
- 在libsas 中添加SMP 解释器, 以允许主机支持SASSMP 协议.
CONFIG_SCSI_SAS_ATA
CONFIG_SCSI_SAS_HOST_SMP
SRP Transport Attributes
-
SCSI
RDMA
协议(SCSIRDMA Protocol)
通过将SCSI
数据传输阶段映射到Infiniband
远程直接内存访问(RemoteDirect Memory Access)
操作加速了SCSI
协议.
-
SCSI target support for SRP TransportAttributes
- 为SRP 添加"target" 模式驱动
CONFIG_SCSI_SRP_TGT_ATTRS
CONFIG_SCSI_SPI_ATTRS
CONFIG_SCSI_FC_ATTRS
CONFIG_SCSI_ISCSI_ATTRS
CONFIG_SCSI_SAS_ATTRS
CONFIG_SCSI_SAS_LIBSAS
CONFIG_SCSI_SRP_ATTRS
SCSI low-level drivers
-
底层SCSI
驱动程序
-
iSCSI Initiator over TCP/IP
- iSCSI 协议利用TCP/IP 网络在"initiator" 与"targets" 间传送SCSI 命令和数据. 此选项便是iSCSIinitiator 驱动. 相关的用户层工具/ 文档/ 配置示例, 可以在 open-iscsi 找到. iSCSI Boot Sysfs Interface
- 通过sysfs 向用户空间显示iSCSI 的引导信息. { 此处省略的部分按照实际使用的控制器进行选择} VMware PVSCSI driver support
- VMware 半虚拟化的SCSIHBA 控制器 Microsoft Hyper-V virtual storage driver
- 微软的Hyper-V 虚拟存储控制器 Intel(R) C600 Series Chipset SAS Controller
- Intel C600 系列芯片组6Gb/s SAS 控制器 virtio-scsi support
- virtio 虚拟HBA 控制器
CONFIG_ISCSI_TCP
CONFIG_ISCSI_BOOT_SYSFS
CONFIG_VMWARE_PVSCSI
CONFIG_HYPERV_STORAGE
CONFIG_SCSI_ISCI
CONFIG_SCSI_VIRTIO
PCMCIA SCSI adapter support
- 通过PCMCIA 卡与计算机连接的SCSI 设备 SCSI Device Handlers
- 针对某些特定SCSI 设备的驱动, 具体子项请按照实际使用的控制器进行选择 OSD-Initiator library
- OSD(Object-BasedStorage Device) 协议是一个T10SCSI 命令集, 和SCSI 处于同一级别, 也跟SCSI 很类似, 分成osd-initiator/osd-target 两部分, 用于对象存储文件系统, 此选项实现了 OSD-Initiator库(libosd.ko). 更多细节参见" Documentation/scsi/osd.txt" 文件. 看不懂就说明你不需要.[ 提示] 此选项依赖于CONFIG_CRYPTO_SHA1 和CONFIG_CRYPTO_HMAC 模块.
CONFIG_RAID_ATTRS
CONFIG_SCSI
CONFIG_SCSI_TGT
CONFIG_SCSI_PROC_FS
CONFIG_BLK_DEV_SD
CONFIG_CHR_DEV_ST
CONFIG_CHR_DEV_OSST
CONFIG_BLK_DEV_SR
CONFIG_CHR_DEV_SG
CONFIG_CHR_DEV_SCH
CONFIG_SCSI_ENCLOSURE
CONFIG_SCSI_MULTI_LUN
CONFIG_SCSI_CONSTANTS
CONFIG_SCSI_LOGGING
CONFIG_SCSI_SCAN_ASYNC
CONFIG_SCSI_LOWLEVEL
CONFIG_SCSI_LOWLEVEL_PCMCIA
CONFIG_SCSI_DH
CONFIG_SCSI_OSD_INITIATOR
Serial ATA and Parallel ATA drivers
-
SATA
与PATA(IDE)
设备.
桌面级PC
以及低端服务器的硬盘基本都是此种接口
-
Verbose ATA error reporting
- 输出详细的ATA 命令描述信息. 大约会让内核增大6KB. 禁用它将会导致调试ATA 设备错误变得困难. ATA ACPI Support
-
与ATA
相关的ACPI
对象支持.
这些对象与性能/
安全/
电源管理等相关.
不管你使用的是IDE
硬盘还是SATA
硬盘,
都建议开启(
可以使用内核引导参数"libata.noacpi=1"
关闭).
-
SATA Zero Power Optical Disc Drive (ZPODD)support
- 这是 SATA-3.1 版规范新增的节能相关内容, 用新的电源管理策略降低了整个系统的电力需求, 可以让处于空闲状态的光驱耗电量近乎于零. 这需要主板和光驱两者都支持SATA-3.1 规范才行.
CONFIG_SATA_ZPODD
SATA Port Multiplier support
- SATA 端口复用器( PortMultiplier) 是一个定义在SATA 规范里面的可以选择的功能, 可以把一个活动主机连接多路复用至多个设备连接, 相当于一个SATAHUB. 不确定的选"N". AHCI SATA support
- AHCI SATA 支持. 这是最佳的SATA 模式(NCQ 功能依赖于它). 某些主板还需要在BIOS 中将硬盘明确设为AHCI 模式. 使用SATA 硬盘者必选"Y".[ 提示] 由于各厂商芯片组内的SATA 控制器都遵循同一种规范, 所以并不需要各种各样针对不同SATA 控制器的驱动, 就这一个驱动基本就能通吃所有SATA 控制器了, 这比丰富多彩的网卡驱动省事多了. Platform AHCI SATA support
- 这是用于嵌入式系统的与AHCI 接口兼容的SATA 驱动. 并不是常见的芯片组中的SATA 控制器驱动. 不确定的选"N". { 此处省略几个特殊且不常见的SATA 控制器驱动} ATA SFF support (for legacy IDE and PATA)
-
使用SATA
硬盘的用户可无视此项,
选"N"
即可.
对于依然使用老旧的IDE/PATA
硬盘的用户而言,
按照实际情况在子项中选择相应的控制器驱动即可.
-
{
此处省略几个罕见的Pacific/Promise
芯片组}
ATA BMDMA support
- 这是IDE 控制器的事实标准. 除了上世纪的古董外, 绝大多数芯片组都遵守这个标准, 选"Y", 然后从子项中选择恰当的芯片组/ 控制器. { 此处省略的PIO-onlySFF 芯片组都是早就绝迹的老古董} ACPI firmware driver for PATA
- 通过ACPIBIOS 去操作IDE 控制器. 仅用于某些比较奇特的IDE 控制器. 选"N". Generic ATA support
- 这是通用的IDE 控制器驱动. 如果你无法确定IDE 控制器的具体型号( 比如需要面对未知的硬件状况), 或者不想使用针对特定芯片组的IDE 驱动, 就选"Y" 吧.
CONFIG_ATA_BMDMA
CONFIG_PATA_ACPI
CONFIG_ATA_GENERIC
CONFIG_ATA_VERBOSE_ERROR
CONFIG_ATA_ACPI
CONFIG_SATA_PMP
CONFIG_SATA_AHCI
CONFIG_SATA_AHCI_PLATFORM
CONFIG_ATA_SFF
Multiple devices driver support (RAID and LVM)
-
多设备支持(
RAID
和
LVM).RAID
和LVM
的功能是使用多个物理设备组建成一个单独的逻辑设备
-
RAID support
-
"
SoftwareRAID"(
需要使用
mdadm
工具)
支持.
也就是"
软
RAID".
使用硬件RAID
卡的用户并不需要此项.
-
Autodetect RAID arrays during kernel boot
- 在内核启动过程中自动检测RAID 模式. 如果你没有使用RAID, 那么选中此项将会让内核在启动过程中增加几秒延迟. 如果你使用了"raid=noautodetect" 内核引导参数关闭了自动检测, 或者此处选了"N", 那么你必须使用"md=???" 内核引导参数明确告诉内核RAID 模式及配置. Linear (append) mode
- 线性模式( 简单的将一个分区追加在另一个分区之后), 一般不使用这种模式. RAID-0 (striping) mode
- RAID-0( 等量分割) 模式, 可以获取最高性能, 但是却损害了可靠性, 一般也不使用这种模式. RAID-1 (mirroring) mode
- RAID-1( 镜像) 模式. 包含内核的引导分区只能使用这种模式. RAID-10 (mirrored striping) mode
- RAID 1+0 模式 RAID-4/RAID-5/RAID-6 mode
- RAID-4/RAID-5/RAID-6 模式 Multipath I/O support
- 多路IO 支持是指在服务器和存储设备之间使用冗余的物理路径组件创建" 逻辑路径", 如果这些组件发生故障并造成路径失败, 多路径逻辑将为I/O 使用备用路径以使应用程序仍然可以访问其数据. 该选项已废弃, 并已被CONFIG_DM_MULTIPATH 所取代. 选"N". Faulty test module for MD
- 用于MD(Multi-device) 的缺陷测试模块, 仅用于调试.
CONFIG_MD_AUTODETECT
CONFIG_MD_LINEAR
CONFIG_MD_RAID0
CONFIG_MD_RAID1
CONFIG_MD_RAID10
CONFIG_MD_RAID456
CONFIG_MD_MULTIPATH
CONFIG_MD_FAULTY
Block device as cache
-
将一个块设备用作其他块设备的缓存(
Bcache).
此缓存使用btree(
平衡树)
索引,
并专门为SSD
进行了优化.
仅在你打算使用高速
SSD作为普通硬盘的缓存时才需要此功能.
详情参见"
Documentation/bcache.txt"
文档.
-
Bcache debugging
- 仅供内核开发者调试使用 Extended runtime checks
- 仅供内核开发者调试使用 Debug closures
- 仅供内核开发者调试使用
CONFIG_BCACHE_DEBUG
CONFIG_BCACHE_EDEBUG
CONFIG_BCACHE_CLOSURES_DEBUG
Device mapper support
-
Device-mapper
是一个底层的卷管理器,
提供了一种从逻辑设备到物理设备的映射框架,
用户可以很方便的根据自己的需要制定实现存储资源的管理策略.
它不像RAID
那样工作在设备层,
而是通过块和扇区的映射机制,
将不同磁盘的不同部分组合成一个大的块设备供用户使用.
LVM2
和
EVMS
都依赖于它.
此外,
那些集成在南桥(
例如ICH8R/ICH9R/ICH10R
系列等)
中所谓的"
硬RAID"(
准确的称呼应该是"
DeviceMapper RAID",
又称为"FakeRAID"/"BIOS RAID")
也依赖于它.
-
Device mapper debugging support
- 仅供内核开发者调试使用 Crypt target support
- 此模块允许你创建一个经过透明加密的逻辑设备( 使用 cryptsetup 工具), 要使用加密功能, 除此项外, 还需要在"CryptographicAPI" 里选中相应的加密算法, 例如CONFIG_CRYPTO_AES. 更多文档请参考 LUKSFAQ. Snapshot target
- 允许卷管理器为DM 设备创建可写的快照( 定格于特定瞬间的一个设备虚拟映像). LVM2Snapshot 需要它的支持. 更多详情参见" Documentation/device-mapper/snapshot.txt" 文档. 不确定的选"N". Thin provisioning target
-
"
Thinprovisioning"(
某些地方翻译为"
精简配置")
的意思是允许分配给所有用户的总存储容量超过实际的存储容量(
使用
thin-provisioning-tools
工具).
例如给100
个用户分配空间,
每个用户最大允许10G
空间,
共计需要1000G
空间.
但实际情况是95%
的用户都只使用了不到1G
的空间,
那么实际准备1000G
空间就是浪费.
有了"thinprovisioning"
的帮助,
你实际只需要准备150G
的空间就可以了,
之后,
可以随着用户需求的增加,
添加更多的实际存储容量,
从而减少存储投资和避免浪费.
更多详情参见"
Documentation/device-mapper/thin-provisioning.txt"
文档.
-
Keep stack trace of thin provisioning block lockholders
- 仅用于调试目的
CONFIG_DM_DEBUG_BLOCK_STACK_TRACING
Cache target
-
dm-cache
通过将频繁使用的热点数据缓存到一个容量较小但性能很高的存储设备上,
从而提升块设备的性能.
它支持
writeback和
writethrough
两种模式,
并可以使用多种缓存策略
(policy)
以判断哪些是热点数据以及哪些数据需要从缓存中移除.
更多详情参见"
Documentation/device-mapper/cache.txt"
文档.
不确定的选"N".
-
MQ Cache Policy
- MQ 缓存策略. 这是目前唯一真正可用的缓存策略. Cleaner Cache Policy
- Cleaner 简单的把所有数据都同步写入到原始设备上, 相当于关闭缓存.
CONFIG_DM_CACHE_MQ
CONFIG_DM_CACHE_CLEANER
Mirror target
- 允许对逻辑卷进行镜像, 同时实时数据迁移工具 pvmove 也需要此项的支持. RAID 1/4/5/6/10 target
- RAID 1/4/5/6/10 支持. 即使使用ICH8R/ICH9R/ICH10R 这样的南桥, 也不推荐使用"DeviceMapper RAID"( 既无性能优势又依赖于特定硬件), 应该直接使用更成熟的CONFIG_BLK_DEV_MD 模块.
CONFIG_DM_DEBUG
CONFIG_DM_CRYPT
CONFIG_DM_SNAPSHOT
CONFIG_DM_THIN_PROVISIONING
CONFIG_DM_CACHE
CONFIG_DM_MIRROR
CONFIG_DM_RAID
Mirror userspace logging
- device-mapper 用户空间日志功能由内核模块和用户空间程序两部分组成, 此选项是内核模块(API 定义于"linux/dm-dirty-log.h" 文件). 不确定的选"N". Zero target
- "Zerotarget" 类似于"/dev/zero", 所有的写入都被丢弃, 所有的读取都可以得到无限多个零. 可用于某些恢复场合. Multipath target
-
设备映射多路径(DM-Multipath)
支持.
不确定的选"N".
-
I/O Path Selector based on the number of in-flightI/Os
- 这是一个动态负载均衡路径选择器: 选择当前正在处理中的I/O 数量最小的通路. I/O Path Selector based on the service time
- 这是一个动态负载均衡路径选择器: 选择完成此I/O 操作预期时间最少的通路.
CONFIG_DM_MULTIPATH_QL
CONFIG_DM_MULTIPATH_ST
I/O delaying target
- 对读/ 写操作进行延迟, 并可将其发送到不同的设备. 仅用于测试DM 子系统. DM uevents
- 为DM 事件透过 netlink 向用户层的udevd 发出uevent 通知, 这样就允许udevd 在"/dev/" 目录中执行相应的操作. Flakey target
- 模拟间歇性的I/O 错误, 以用于调试DM 子系统. Verity target support
- Verity target 可以创建一个只读的逻辑设备, 然后根据预先生成的哈希校验和( 存储在其他设备上), 校验底层设备上的数据正确性. 要使此模块正常工作, 还需要在"CryptographicAPI" 部分选中相应的哈希算法.
CONFIG_BLK_DEV_MD
CONFIG_BCACHE
CONFIG_BLK_DEV_DM
CONFIG_DM_LOG_USERSPACE
CONFIG_DM_ZERO
CONFIG_DM_MULTIPATH
CONFIG_DM_DELAY
CONFIG_DM_UEVENT
CONFIG_DM_FLAKEY
CONFIG_DM_VERITY
Generic Target Core Mod (TCM) and ConfigFSInfrastructure
-
"
SoftwareRAID"(
需要使用
mdadm
工具)
支持.
也就是"
软
RAID".
使用硬件RAID
卡的用户并不需要此项.
- 通用TCM 存储引擎与ConfigFS 虚拟文件系统(/sys/kernel/config) 支持. 看不懂就说明你不需要. Fusion MPT device support
- FusionMPT(Message Passing Technology) 是LSI Logic 公司为了更容易实现SCSI 和光纤通道而提出的技术, 支持Ultra320SCSI/ 光纤通道/SAS. IEEE 1394 (FireWire) support
- 火线( IEEE1394) 是苹果公司开发的串行接口, 类似于USB, 但PC 上并不常见, 算得上是个没有未来的技术了. I2O device support
- 智能输入输出( IntelligentInput/Output) 架构让硬件驱动分成了两部分:OSM( 特定于操作系统)+HDM( 特定于硬件, 与操作系统无关). 由于 I2O设备上集成有专用的I/O 处理器, 从而加快I/O 速度( 因为避免了CPU 的参与).I2O 属于已被废弃的技术, 目前能见到的此类设备都属于老古董了. Macintosh device drivers
- 苹果的Macintosh 电脑上的专有设备驱动 Network device support
-
网络设备.
除非你不想连接任何网络,
否则必选"Y".
-
Network core driver support
-
如果你不想使用任何高级网络功能(
拨号网络/EQL/VLAN/bridging/bonding/
光纤通道/
虚拟网络等),
仅仅是一般性质的联网(
普通服务器,
通过路由器或者局域网上网的常规个人电脑),
可以选"N".
此外,
某些网卡的驱动会依赖于其下的CONFIG_MII
子项(
会被自动选中).
-
Bonding driver support
- 链路聚合技术拥有多个不同的称谓:Linux 称为"Bonding",IEEE 称为" 802.3ad",Sun 称为"Trunking",Cisco 称为" Etherchannel". 该技术可以将多个以太网通道聚合为一个单独的虚拟适配器, 例如将两块网卡聚合成一个逻辑网卡, 可以用来实现负载均衡或硬件冗余. Dummy net driver support
- Dummy 网络接口本质上是一个可以配置IP 地址的bit-bucket( 位桶, 所有发送到此设备的流量都将被湮灭), 以使应用程序看上去正在和一个常规的网络接口进行通信. 使用 SLIP( 小猫拨号, 目前应该已经绝迹了) 或 PPP( 常用于 PPPoEADSL) 的用户需要它 EQL (serial line load balancing) support
- 串行线路的负载均衡. 如果有两个MODEM 和两条SLIP/PPP 线路, 该选项可以让你同时使用这两个通道以达到双倍速度( 网络的对端也要支持EQL 技术). 曾经昙花一现的 ISDN 就这项技术的一个实例. Fibre Channel driver support
- 光纤通道(FibreChannel) 是一种高速网络串行协议, 主要用于存储局域网(SAN), 它与SCSI 协议兼容, 并意在取代SCSI. 与传统的SCSI 技术相比, 除了提供更高的数据传输速度, 更远的传输距离, 更多的设备连接支持, 更稳定的性能, 更简易的安装以外, 最重要的是支持最新的网络区域存储(SAN) 技术. 如果你的机器上有光纤通道卡(FC 卡), 除了需要开启此项外, 还需要开启相应的FC 卡驱动, 以及CONFIG_CHR_DEV_SG 选项. Generic Media Independent Interface device support
- 媒体独立接口( MediaIndependentInterface) 又称介质无关接口, 是 IEEE-802.3( 规定了以太网相关协议的具体内容) 定义的以太网行业标准. 它包括一个数据接口, 以及一个位于 MAC和 PHY 之间的控制接口.[ 提示] 大多数以太网卡都有MII 收发器, 其驱动都依赖于此项, 也会自动选中此项. Intermediate Functional Block support
- IFB 是一个中间层驱动, 可以用来灵活的配置资源共享. 更多信息参见iproute2 文档. 看不懂就说明你不需要. Ethernet team driver support
- 允许通过"iplink add link [ address MAC ] [ NAME ] typeteam" 命令, 将多个以太网卡( 称为"port") 组合在一起, 创建一个虚拟的" team" 网络设备, 其目的是取代传统的"Bonding"(CONFIG_BONDING) 驱动."ip" 是iproute2 包中的一个命令. 不确定的选"N". MAC-VLAN support
- MAC-VLAN 是通过MAC 地址来划分 VLAN 的方式, 在Linux 则用来给网卡添加多个MAC 地址. 你可以使用"iplink add link <real dev> [ address MAC ] [ NAME ] typemacvlan" 命令创建一个虚拟的"macvlan" 设备( 系统会自动打开网卡的混杂模式), 然后就可以在同一个物理网卡上虚拟出多个以太网口. Virtual eXtensible Local Area Network (VXLAN)
- " vxlan" 虚拟接口可以在第三层网络上创建第二层网络( 跨多个物理IP 子网的虚拟二层子网), 是一种在UDP 中封装MAC 的简单机制, 主要用于虚拟化环境下的隧道虚拟网络(tunnelvirtual network). Network console logging support
-
网络控制台(netconsole)
的作用是通过网络记录内核日志信息.
详情参见"
Documentation/networking/netconsole.txt"
文档.
不确定的选"N".
-
Dynamic reconfiguration of loggingtargets
- 允许通过configfs 导出的用户空间接口, 在运行时更改日志目标( 网口,IP 地址, 端口号,MAC 地址).
CONFIG_NETCONSOLE_DYNAMIC
Netpoll traffic trapping
- netpoll 的目的是让内核在网络和I/O 子系统尚不能完整可用时, 依然能发送和接收数据包. 主要用于网络控制台(netconsole) 和远程内核调试(KGDBoE) 中. 不确定的选"N". Virtual Ethernet over NTB
- PCI-E 非透明桥(CONFIG_NTB) 上的虚拟网卡. 不确定的选"N". RapidIO Ethernet over messaging driver support
- 在标准的 RapidIO 通信方式上发送以太网数据包. 不确定的选"N". Universal TUN/TAP device driver support
- TUN/TAP 可以为用户空间提供包的接收和发送服务, 可以用来虚拟一张网卡或点对点通道. 当程序打开"/dev/net/tun" 设备时, 驱动程序就会注册相应的 "tunX"或 "tapX" 网络设备, 当程序关闭"/dev/net/tun" 设备时, 驱动程序又会删除相应的"tunX" 或"tapX" 网络设备以及所有与之相关联的路由. 详情参见" Documentation/networking/tuntap.txt" 文档. 看不懂就表明你不需要. Virtual ethernet pair device
- 该驱动提供了一个本地以太网隧道( 设备会被成对的创建). Virtio network driver
- virtio 虚拟网卡驱动. 可以用于 lguest 或者基于 QEMU 的虚拟机管理程序( 例如KVM/Xen).
CONFIG_BONDING
CONFIG_DUMMY
CONFIG_EQUALIZER
CONFIG_NET_FC
CONFIG_MII
CONFIG_IFB
CONFIG_NET_TEAM
CONFIG_MACVLAN
CONFIG_VXLAN
CONFIG_NETCONSOLE
CONFIG_NETPOLL_TRAP
CONFIG_NTB_NETDEV
CONFIG_RIONET
CONFIG_TUN
CONFIG_VETH
CONFIG_VIRTIO_NET
ARCnet support
- ARCnet 是1977 年由Datapoint 公司开发的一种局域网技术, 它采用令牌总线方案来管理LAN 上工作站和其他设备之间的共享线路, 主要用于工业控制领域中. ATM drivers
- 可怜的ATM( 异步传输模式), 曾经在90 年代风靡一时, 现在已经消失的无影无踪了. { 这里省略几个专用于Android/MeeGo 系统的PF_CAIF 类型套接字相关的选项} Distributed Switch Architecture drivers
- 分布式交换架构驱动, 其子项都是Marvell 系列以太网交换机芯片组的驱动 Ethernet driver support
-
最常见的以太网卡驱动
-
{
省略的部分请按照实际的硬件状况进行选择,
这里仅以两个常见公司的以太网芯片为例进行说明}
AMD devices
-
AMD
出品的以太网控制芯片
-
AMD PCnet32 PCI support
- 这是VMware/VirtualBox 虚拟机中常用的网卡
CONFIG_PCNET32
Broadcom devices
-
博通(Broadcom)
公司的网卡
-
Broadcom 440x/47xx ethernet support
- Broadcom 44xx/47xx 10/100M PCI Broadcom NetXtremeII support
- NetXtreme II 1 Gigabit ( BCM5706/5708/5709/5716 ) Broadcom CNIC support
- NetXtremeII 系列网卡的 TCP减负引擎( TCPOffloadEngine) 特性支持. 不过, TOE并不适合高连接数 /小文件的 Web服务器类应用, 它的主要目的是和IP 存储协议(iSCSI/NFS) 一起使用.[ 注意]TOE 与"LargeReceive Offload" 是两个不同的东西, 不要混淆. Broadcom Tigon3 support
- 这是最流行的驱动, 其涵盖的型号特别多, 但是"Tigon3" 的名称却非常具有迷惑性. 简单说来, 除了B44,BNX2,BNX2X 中明确列出的型号外, 其他型号用的都是这个驱动. Broadcom NetXtremeII 10Gb support
- NetXtreme II 10 Gigabit ( BCM57710/57711/57711E/57712/57800/57810)
CONFIG_B44
CONFIG_BNX2
CONFIG_CNIC
CONFIG_TIGON3
CONFIG_BNX2X
CONFIG_NET_VENDOR_AMD
CONFIG_NET_VENDOR_BROADCOM
FDDI driver support
-
AMD
出品的以太网控制芯片
- 光纤分布式数据接口(FDDI) HIPPI driver support
- 高性能并行接口(HIghPerformance Parallel Interface) 是一个在短距离内高速传送大量数据的点对点协议. 常用于集群和超级计算机. General Instruments Surfboard 1000
- SURFboard 1000 插卡式CableMedem(ISA 接口), 这玩意早就绝种了 PHY Device support and infrastructure
- 数据链路层芯片简称为MAC 控制器, 物理层芯片简称之为PHY, 通常的网卡把MAC 和PHY 的功能做到了一颗芯片中, 但也有一些仅含PHY 的" 软网卡". 此选项就是对这些" 软网卡" 的支持. 请根据实际情况选择其下的子项. Micrel KS8995MA 5-ports 10/100 managed Ethernetswitch
- MicrelKS8995MA 5 端口10/100M 以太网交换芯片 PLIP (parallel port) support
- PLIP(ParallelLine InternetProtocol) 用于将两台电脑通过并口进行联网, 组成一个简单的客户机/ 服务器结构. 详情参见" Documentation/networking/PLIP.txt". 现在的电脑都使用网卡进行互联, 并口早就经被丢进历史的垃圾箱了. PPP (point-to-point protocol) support
-
点对点协议(
Pointto PointProtocol)
是SLIP
的继任者,
使用PPP
需要用户层程序
pppd
的帮助.PPP
实际上有两个版本:
基于普通模拟电话线的"
异步PPP"
和基于数字线路(
例如ISDN
线路)
的"
同步PPP".
使用电脑直接拨号的
PPPoEADSL 用户
需要此项.
-
PPP BSD-Compress compression
- 为PPP 提供BSD( 等价于LZW 压缩算法, 没有gzip 高效) 压缩算法支持, 需要通信双方的支持才有效. 大多数ISP 都不支持此算法. PPP Deflate compression
- 为PPP 提供Deflate( 等价于gzip 压缩算法) 压缩算法支持, 需要通信双方的支持才有效. 这是比BSD 更好的算法( 压缩率更高且无专利障碍). PPP filtering
- 允许对通过PPP 接口的包进行过滤. 仅在你需要使用pppd 的pass-filter/active-filter 选项时才需要开启. 不确定的选"N". PPP MPPE compression (encryption)
- 为PPP 提供MPPE 加密协议支持, 它被用于微软的P2P 隧道协议中. 此特性需要 PPTPClient 工具的支持. PPP multilink support
- 多重链路协议(RFC1990) 允许你将多个线路( 物理的或逻辑的) 组合为一个PPP 连接一充分利用带宽, 这不但需要pppd 的支持, 还需要ISP 的支持 PPP over ATM
- 在ATM 上跑的PPP. 果断"N". PPP over Ethernet
- 这就是ADSL 用户最常见的PPPoE, 也就是在以太网上跑的PPP 协议. 这需要 RP-PPPoE 工具的帮助 PPP over IPv4 (PPTP)
- 点对点隧道协议( Point-to-PointTunneling Protocol) 是一种主要用于VPN 的数据链路层网络协议. 此功能需要 ACCEL-PPTP 工具的支持. PPP over L2TP
- 第二层隧道协议( L2TP) 是一种通过UDP 隧道传输PPP 流量的技术, 对于VPN 用户来说, L2TPVPN 是比PPTPVPN 的更好解决方案. PPP support for async serial ports
- 基于普通模拟电话线或标准异步串口(COM1,COM2) 的" 异步PPP" 支持.PPPoE ADSL 使用的就是这个. 不能与下面的CONFIG_PPP_SYNC_TTY 同时并存. PPP support for sync tty ports
- 基于同步tty 设备( 比如SyncLink 适配器) 的" 同步PPP" 支持. 常用于高速租用线路( 比如T1/E1). 不确定的选"N".
CONFIG_PPP_BSDCOMP
CONFIG_PPP_DEFLATE
CONFIG_PPP_FILTER
CONFIG_PPP_MPPE
CONFIG_PPP_MULTILINK
CONFIG_PPPOATM
CONFIG_PPPOE
CONFIG_PPTP
CONFIG_PPPOL2TP
CONFIG_PPP_ASYNC
CONFIG_PPP_SYNC_TTY
SLIP (serial line) support
- 一个在串行线上( 例如电话线) 传输IP 数据报的TCP/IP 协议. 最原始的通过电话线拨号上网就用这个协议, 如今基本绝迹了. 不确定的选"N". CSLIP compressed headers
- CSLIP 协议基于SLIP, 但比SLIP 快, 它将TCP/IP 头( 而非数据) 进行压缩传送, 需要通信双方的支持才有效 Keepalive and linefill
- 让SLIP 驱动支持RELCOMlinefill 和keepalive 监视, 这在信号质量比较差的模拟线路上是个好主意 Six bit SLIP encapsulation
- 这种线路非常罕见, 选"N". USB Network Adapters
- USB 网络适配器 Wireless LAN
-
无线网卡
-
{
省略的部分请按照实际的硬件状况进行选择,
这里仅以Intel
公司的主流无线网卡为例进行说明}
Intel Wireless WiFi Next Gen AGN -Wireless-N/Advanced-N/Ultimate-N (iwlwifi)
-
这是目前主流Intel
无线网卡的驱动.
此驱动依赖于二进制
uCode微代码,
它通常被安装到"/lib/firmware"
目录,
不过你最好亲自用眼睛检查一下"/etc/hotplug/firmware.agent"
脚本中的"FIRMWARE_DIR"
变量的设置是否正确.
-
Intel Wireless WiFi DVM Firmware support
- DVM 固件支持( 这也是当前唯一可用的固件). 选"Y/M". Intel Wireless WiFi MVM Firmware support
- MVM 固件支持( 这是专用于7000 系列无线网卡的固件).
CONFIG_IWLDVM
CONFIG_IWLMVM
Debugging Options
- 仅供调试使用, 其下所有选项都选"N". iwlwifi experimental P2P support
- iwlwifi 驱动实验性的P2P 支持. 不确定的选"N".
CONFIG_IWLWIFI
CONFIG_IWLWIFI_P2P
WiMAX Wireless Broadband devices
-
这是目前主流Intel
无线网卡的驱动.
此驱动依赖于二进制
uCode微代码,
它通常被安装到"/lib/firmware"
目录,
不过你最好亲自用眼睛检查一下"/etc/hotplug/firmware.agent"
脚本中的"FIRMWARE_DIR"
变量的设置是否正确.
- WiMAX 无线设备 Wan interfaces support
- 广域网(WideArea Network) 网卡支持. 这种网卡很罕见. 不确定的选"N". IEEE 802.15.4 drivers
- IEEE802.15.4 描述了低速率无线个人局域网的物理层和媒体接入控制协议 Xen network device frontend driver
- XEN 半虚拟化网络设备前端驱动( 通常是被"domain0" 导出的) Xen backend network device
- XEN 半虚拟化网络设备后端驱动, 通常被用在"domain0" 内核上, 用于向其他domain 导出半虚拟化网络设备. VMware VMXNET3 ethernet driver
- VMware vmxnet3 虚拟以太网卡驱动 Microsoft Hyper-V virtual network driver
- Microsoft Hyper-V 虚拟以太网卡驱动 ISDN support
- 上世纪在ADSL 流行之前曾经有过短暂流行, 但现在已经绝迹了
CONFIG_NET_CORE
CONFIG_ARCNET
CONFIG_ATM_DRIVERS
CONFIG_ETHERNET
CONFIG_FDDI
CONFIG_HIPPI
CONFIG_NET_SB1000
CONFIG_PHYLIB
CONFIG_MICREL_KS8995MA
CONFIG_PLIP
CONFIG_PPP
CONFIG_SLIP
CONFIG_SLIP_COMPRESSED
CONFIG_SLIP_SMART
CONFIG_SLIP_MODE_SLIP6
CONFIG_WLAN
CONFIG_WAN
CONFIG_IEEE802154_DRIVERS
CONFIG_XEN_NETDEV_FRONTEND
CONFIG_XEN_NETDEV_BACKEND
CONFIG_VMXNET3
CONFIG_HYPERV_NET
CONFIG_ISDN
Input device support
-
如果你不想使用任何高级网络功能(
拨号网络/EQL/VLAN/bridging/bonding/
光纤通道/
虚拟网络等),
仅仅是一般性质的联网(
普通服务器,
通过路由器或者局域网上网的常规个人电脑),
可以选"N".
此外,
某些网卡的驱动会依赖于其下的CONFIG_MII
子项(
会被自动选中).
-
输入设备
-
Generic input layer (needed for keyboard, mouse, ...)
-
通用输入层.
只要你有任何输入设备(
键盘,
鼠标,
手写板,
触摸板,
游戏杆,
方向盘,
游戏键盘...),
就必须选"Y".
-
Support for memoryless force-feedbackdevices
- 游戏玩家使用的力反馈设备, 例如: LogitechWingMan Force 3D 飞行摇杆, ThrustMasterFireStorm Dual Power 2. 如果你有此类设备, 除了本项之外, 还需要开启特定于硬件的驱动. Polled input device skeleton
- 使用轮询机制的输入设备支持, 此项主要是为源码树之外的驱动准备的, 内核自带的驱动若有需要会自动选中. 不确定的选"N". Sparse keymap support library
- 使用"sparsekeymap" 的输入设备支持, 此项主要是为源码树之外的驱动准备的, 内核自带的驱动若有需要会自动选中. 不确定的选"N". Matrix keymap support library
- 使用"matrixkeymap" 的输入设备支持, 此项主要是为源码树之外的驱动准备的, 内核自带的驱动若有需要会自动选中. 不确定的选"N". Mouse interface
-
鼠标接口(/dev/input/mouseX,/dev/input/mice).
用鼠标的必选.[
提示]
如果系统上有多个鼠标,
那么,mouseX
对应单个特定的鼠标,
而mice
则是所有鼠标的集合(
所有鼠标的事件都会被发送到这个设备文件中).
-
Provide legacy /dev/psaux device
- 仍然支持传统的/dev/psaux 接口, 这是为兼容老旧的程序而设置. 选"N". Horizontal screen resolution
- 作为鼠标使用的数字化转换器(digitizer) 或手写板(graphictablet) 需要知道Xwindow 的水平分辩率. 一般可理解为显示屏的水平分辨率. Vertical screen resolution
- 作为鼠标使用的数字化转换器(digitizer) 或手写板(graphictablet) 需要知道Xwindow 的垂直分辩率. 一般可理解为显示屏的垂直分辨率.
CONFIG_INPUT_MOUSEDEV_PSAUX
CONFIG_INPUT_MOUSEDEV_SCREEN_X
CONFIG_INPUT_MOUSEDEV_SCREEN_Y
Joystick interface
- 游戏杆( joystick) 和游戏键盘( gamepad) 支持(/dev/input/jsX) Event interface
- 将所有的输入设备事件都通过"/dev/input/eventX" 以一种通用的方式进行处理.Xorg 需要使用此接口. 不确定的选"Y". Event debugging
- 将所有输入设备的动作( 键盘按下, 鼠标移动等) 都记录到系统日志当中. 主要用于调试, 同时也会带来安全漏洞( 键盘输入中很可能包含你的密码). 选"N". Keyboards
-
键盘驱动
-
AT keyboard
- 标准AT 键盘或者 PS/2 键盘. 使用USB 或者ADB 键盘的可以选"N". { 此处被省略的键盘都很罕见, 基本上不必考虑}
CONFIG_KEYBOARD_ATKBD
Mice
- 鼠标驱动 Joysticks/Gamepads
- 游戏杆,6 自由度摇杆, 游戏键盘, 方向盘, 射击武器... 等各种游戏装置 Tablets
- 平板输入设备 Touchscreens
- 触摸屏输入设备 Miscellaneous devices
-
其他杂项输入设备
-
PC Speaker support
- 标准蜂鸣器. 建议开启. { 此处被省略的其他设备都很罕见, 基本上不必考虑}
CONFIG_INPUT_PCSPKR
CONFIG_INPUT_FF_MEMLESS
CONFIG_INPUT_POLLDEV
CONFIG_INPUT_SPARSEKMAP
CONFIG_INPUT_MATRIXKMAP
CONFIG_INPUT_MOUSEDEV
CONFIG_INPUT_JOYDEV
CONFIG_INPUT_EVDEV
CONFIG_INPUT_EVBUG
CONFIG_INPUT_KEYBOARD
CONFIG_INPUT_MOUSE
CONFIG_INPUT_TABLET
CONFIG_INPUT_TOUCHSCREEN
CONFIG_INPUT_MISC
Hardware I/O ports
-
硬件I/O
端口
-
Serial I/O support
-
串行I/O
硬件支持.
标准AT
键盘,PS/2
鼠标,
串口鼠标,Sun
键盘,
游戏杆,6
自由度摇杆等设备都依赖于它.
不确定的选"Y".
-
i8042 PC Keyboard controller
- 标准AT 键盘,PS/2 鼠标, 这两种设备需要它的支持. Serial port line discipline
- RS232 串口(COM). 串口鼠标, 游戏杆,6 自由度摇杆等设备都依赖于它. ct82c710 Aux port controller
- 一种德州仪器TravelMate 笔记本上使用QuickPort 接口的鼠标 Parallel port keyboard adapter
- 并口键盘适配器, 用于将AT/XT 键盘或PS/2 鼠标转接到并口上. 非常罕见. PCI PS/2 keyboard and PS/2 mouse controller
- 接在移动式扩展坞(Dockingstation) 上的PS/2 键盘或鼠标 PS/2 driver library
- 为PS/2 接口上的设备提供驱动( 比如PS/2 鼠标和标准AT 键盘) Raw access to serio ports
- 以raw 方式访问serio 接口(echo-n "serio_raw" >/sys/bus/serio/devices/serioX/drvctl), 例如i8042 键盘控制器的AUX 端口. 看不懂的就别选了. Altera UP PS/2 controller
- Altera University Program PS/2 端口支持. 不确定的选"N". TQC PS/2 multiplexer
- TQC 板上的PS/2 端口复用器(multiplexer) ARC PS/2 support
- ARC FPGA 平台上的PS/2 控制器
CONFIG_SERIO_I8042
CONFIG_SERIO_SERPORT
CONFIG_SERIO_CT82C710
CONFIG_SERIO_PARKBD
CONFIG_SERIO_PCIPS2
CONFIG_SERIO_LIBPS2
CONFIG_SERIO_RAW
CONFIG_SERIO_ALTERA_PS2
CONFIG_SERIO_PS2MULT
CONFIG_SERIO_ARC_PS2
Gameport support
- 15 针电脑游戏接口( Gameport). 图
CONFIG_SERIO
CONFIG_GAMEPORT -
串行I/O
硬件支持.
标准AT
键盘,PS/2
鼠标,
串口鼠标,Sun
键盘,
游戏杆,6
自由度摇杆等设备都依赖于它.
不确定的选"Y".
CONFIG_INPUT
Character devices
-
通用输入层.
只要你有任何输入设备(
键盘,
鼠标,
手写板,
触摸板,
游戏杆,
方向盘,
游戏键盘...),
就必须选"Y".
-
字符设备
-
Enable TTY
-
字符终端和串口都需要
TTY
的支持.
选"Y",
除非你知道自己在干什么.[
提示]
你想在控制台上显示汉字吗?
试试
CJKTTY
补丁吧!
-
Virtual terminal
-
虚拟终端可以在一个物理终端设备上虚拟出多个"
显示器+
键盘"
的组合(
可以使用"Alt+Fn"
组合键在多个虚拟终端间切换).
除非是嵌入式系统,
否则必选"Y".
-
Enable character translations inconsole
- 在虚拟控制台(console) 上支持字体映射和Unicode 转换. 建议选"Y". Support for console on virtual terminal
- 内核默认将第一个虚拟终端(/dev/tty0) 用作系统控制台( 可以通过"console=tty3" 这样的参数去修改), 将诸如模块错误/ 内核错误/ 启动信息之类的警告信息发送到这里, 而且以单用户模式登录时也需要使用这个控制台. 除非是嵌入式系统, 否则必选"Y". Support for binding and unbinding consoledrivers
- 虚拟终端是通过控制台驱动程序与物理终端交互的, 但在某些系统上可以使用多个控制台驱动程序( 如framebuffer 控制台驱动程序), 该选项使得你可以选择其中之一. 如果你需要使用多个控制台驱动, 可以选"Y", 不确定的选"N". 参见" Documentation/console/console.txt" 和" Documentation/fb/fbcon.txt" 获取更多细节.
CONFIG_CONSOLE_TRANSLATIONS
CONFIG_VT_CONSOLE
CONFIG_VT_HW_CONSOLE_BINDING
Unix98 PTY support
-
伪终端(PTY)
是指一个"
软件终端",
它是由slave(
等价于一个物理终端)
和master(
被一个诸如xterms
之类的进程用来读写slave
设备)
两部分组成的软设备.
需要使用telnet
或ssh
远程登录者必选.
-
Support multiple instances ofdevpts
- 允许多个"devpts" 文件系统实例( 使用"-onewinstance" 挂载选项), 以允许相互隔离的PTY 命名空间( 比如在虚拟化容器中). 不确定的选"N".
CONFIG_DEVPTS_MULTIPLE_INSTANCES
Legacy (BSD) PTY support
- 使用过时的BSD 风格的/dev/ptyxx 作为master,/dev/ttyxx 作为slave, 这个方案有一些安全问题, 选"N". Non-standard serial port support
- 非标准串口支持. 这样的设备非常罕见, 选"N". HSDPA Broadband Wireless Data Card - Globe Trotter
- 一种PCMCIA 接口的 HSDPA(WCDMA)3G 无线上网卡 Multi-Tech multiport card support
- Multi-Tech 公司生产的多端口卡( 拥有多个串口) 实验性支持. 不确定的选"N". HDLC line discipline support
- Microgate SyncLink. 不确定的选"N". GSM MUX line discipline support
- GSM MUX( 多路复用器) 支持. 不确定的选"N". Trace data router for MIPI P1149.7 cJTAGstandard
- 仅用于调试内含modem 设备的手机系统. Trace data sink for MIPI P1149.7 cJTAG standard
- 仅用于调试内含modem 设备的手机系统.
CONFIG_VT
CONFIG_UNIX98_PTYS
CONFIG_LEGACY_PTYS
CONFIG_SERIAL_NONSTANDARD
CONFIG_NOZOMI
CONFIG_ISI
CONFIG_N_HDLC
CONFIG_N_GSM
CONFIG_TRACE_ROUTER
CONFIG_TRACE_SINK
KCopy
-
虚拟终端可以在一个物理终端设备上虚拟出多个"
显示器+
键盘"
的组合(
可以使用"Alt+Fn"
组合键在多个虚拟终端间切换).
除非是嵌入式系统,
否则必选"Y".
-
内核Copy
-
Memory-to-memory copies using kernel assist
- 高性能的进程间内存复制( 可以减少一次向共享内存的复制动作). 主要用于高性能并行计算领域, 比如基于消息传递接口( MessagePassing Interface) 协议的开发的并行程序. 不确定的选"N".
CONFIG_KCOPY
/dev/kmem virtual device support
- "/dev/kmem" 虚拟设备是内核看到的虚拟内存的全镜像, 可以用来访问内核内存. 一般可以用来查看内核变量或者用作rootkit 之类(! 危险!). 仅供调试, 不确定的选"N". Serial drivers
-
串口(COM)
驱动.
串口在台式机主板上正在逐渐消亡,
而在笔记本和服务器上早就已经绝迹了.
大多数人应该将所有子项都选"N".
-
8250/16550 and compatible serial support
-
这是标准串口
(COM)
驱动.
只要你想使用串口,
就必选此项.
不过,
大多数人应该选"N".
-
Support 8250_core.* kerneloptions
- 选"N". 8250/16550 PNP device support
- 即插即用串口支持, 不确定的选"Y". Console on 8250/16550 and compatible serialport
- 将串口当做系统控制台( 接受所有内核消息, 单用户模式登录) 使用( 需要使用"console=ttyS1" 参数). 仅在没有显示接口嵌入式设备上有用. 不确定的选"N".
CONFIG_SERIAL_8250_DEPRECATED_OPTIONS
CONFIG_SERIAL_8250_PNP
CONFIG_SERIAL_8250_CONSOLE
DMA support for 16550 compatible UARTcontrollers
- 与标准8250/16650 兼容的通用异步收发传输器( UniversalAsynchronousReceiver/Transmitter) 的 DMA 支持. 在嵌入式设计中,UART 用来主机与辅助设备通信, 如汽车音响与外接AP 之间的通信, 与PC 机通信包括与监控调试器和其它器件( 如EEPROM) 通信. 不确定的选"Y". 8250/16550 PCI device support
- PCI 串口支持. 选"N" 表示仅支持传统的标准串口. 8250/16550 PCMCIA device support
- 16-bit PCMCIA 串口支持. 选"N" 表示仅支持传统的标准串口. Maximum number of 8250/16550 serialports
- 允许的最大串口数量, 保持默认值即可. Number of 8250/16550 serial ports to register atruntime
- 内核在启动时注册的串口数量( 可以通过"8250.nr_uarts" 参数修改), 保持默认即可. Extended 8250/16550 serial driveroptions
-
非标准的串口驱动选项(
例如HUB6,
中断共享,
多端口,
超过4
个COM
口).
不确定的选"N".
-
Support more than 4 legacy serialports
- 如果你的板子上有超过4 个COM 接口就选"Y". Support for sharing serialinterrupts
- 有些板子上集成了共享IRQ 的硬件支持. 如果有就选"Y". Autodetect IRQ on standard ports(unsafe)
- 让内核去猜串口的IRQ 号. 不安全, 选"N". Support RSA serial ports
- RSA 串口. 看不懂的选"N".
CONFIG_SERIAL_8250_MANY_PORTS
CONFIG_SERIAL_8250_SHARE_IRQ
CONFIG_SERIAL_8250_DETECT_IRQ
CONFIG_SERIAL_8250_RSA
Support for Synopsys DesignWare 8250 quirks
- Synopsys DesignWare APB UART 中非标准特性的支持. Medfield High Speed UART support
- Medfield 是Intel 以x86 为架构开发的SoC 手机芯片. { 此处被省略的都是非标准的串口设备, 按实际情况选择即可}
CONFIG_SERIAL_8250
CONFIG_SERIAL_8250_DMA
CONFIG_SERIAL_8250_PCI
CONFIG_SERIAL_8250_CS
CONFIG_SERIAL_8250_NR_UARTS
CONFIG_SERIAL_8250_RUNTIME_UARTS
CONFIG_SERIAL_8250_EXTENDED
CONFIG_SERIAL_8250_DW
CONFIG_SERIAL_MFD_HSU
TTY driver to output user messages via printk
-
这是标准串口
(COM)
驱动.
只要你想使用串口,
就必选此项.
不过,
大多数人应该选"N".
- 通过"/dev/ttyprintk" 设备使用printk 发送用户消息. 用于在内核中嵌入用户消息. 不确定的选"N". Parallel printer support
- 并口打印机 Support for user-space parallel port device drivers
- 用户空间的原始并口设备(/dev/parportN) 支持, 这样用户空间的程序就可以用原始模式直接访问并口( 相当于并口版本的CONFIG_CHR_DEV_SG). 并口打印机/CD-ROM/ 硬盘都不依赖于此项, 所以大部分人可以关闭该选项. Xen Hypervisor Console support
-
XEN
虚拟控制台设备驱动
-
Xen Hypervisor Multiple Consoles support
- 如果你需要多个虚拟控制台, 可以选"Y".
CONFIG_HVC_XEN_FRONTEND
Virtio console
- Virtio 虚拟控制台设备驱动. 此外, 该驱动还可以作为普通的串口设备(/dev/vportNpX), 用于客户机和宿主机之间的通信. Virtio 的目标是为各种半虚拟化的虚拟机管理程序( 特别是 KVM) 提供一组通用的模拟设备. IPMI top-level message handler
-
智能平台管理接口(
IntelligentPlatform Management Interface)
是标准的传感器(
温度,
电压,
风扇,
电源,
机箱入侵)
管理规范.IPMI
的核心是专用的基板管理控制器(BMC)
硬件,BMC
并不依赖于服务器的CPU/BIOS/OS,
是一个独立在系统内运行的管理子系统,
只要有BMC
与IPMI
固件便可工作.BMC
通常是一个安装在服务器主板上的独立的板卡(
也有少数服务器主板内置).IPMI
良好的独立特性便克服了以往基于操作系统的管理方式所受的限制,
例如操作系统不响应或未加载的情况下,
仍然可以进行开关机等操作.
更多详情参见"
Documentation/IPMI.txt"
文档.
此项技术主要用于服务器领域,
个人PC
和笔记本上是没有的.
-
Generate a panic event to all BMCs on apanic
-
当内核panic(
发生紧急情况)
时,IPMI
消息处理器将会向每一个已注册的底板管理控制器(BMC)
接口生成一个描述该panic
的IPMI
事件,
这些事件可以引发日志记录/
报警/
重启/
关机等动作.
-
Generate OEM events containing the panicstring
- 当发生紧急情况(panic) 时,IPMI 消息处理器将会产生OEM 类型(f0) 的事件
CONFIG_IPMI_PANIC_STRING
Device interface for IPMI
- 为IPMI 消息处理器提供一个IOCTL 接口以便用户空间进程也可以使用IPMI, 目前支持poll() 和select() IPMI System Interface handler
- 向系统提供接口(KCS,SMIC), 建议选"Y". IPMI Watchdog Timer
- 启用IPMIWatchdog 定时器. 如果硬件有这种功能, 推荐选"Y". IPMI Poweroff
- 允许通过IPMI 消息处理器关闭机器
CONFIG_IPMI_PANIC_EVENT
CONFIG_IPMI_DEVICE_INTERFACE
CONFIG_IPMI_SI
CONFIG_IPMI_WATCHDOG
CONFIG_IPMI_POWEROFF
Hardware Random Number Generator Core support
-
当内核panic(
发生紧急情况)
时,IPMI
消息处理器将会向每一个已注册的底板管理控制器(BMC)
接口生成一个描述该panic
的IPMI
事件,
这些事件可以引发日志记录/
报警/
重启/
关机等动作.
-
硬件随机数发生器设备(/dev/hw_random)
支持.
此设备并不会直接向内核的随机数发生器填充(
这是"
rngd"
守护进程的职责).
详情参见"
Documentation/hw_random.txt"
文档.
不确定的选"Y".
-
Timer IOMEM HW Random Number Generatorsupport
- Technologic Systems 的TS-7800 单板计算机, 这是一个嵌入式设备. Intel HW Random Number Generator support
- Intel 基于i8xx 芯片组的硬件随机数发生器 AMD HW Random Number Generator support
- AMD 基于76x 芯片组的硬件随机数发生器 Atmel Random Number Generator support
- Atmel AT91 硬件随机数发生器 VIA HW Random Number Generator support
- VIA 芯片组的硬件随机数发生器 VirtIO Random Number Generator support
- Virtio 虚拟的硬件随机数发生器
CONFIG_HW_RANDOM_TIMERIOMEM
CONFIG_HW_RANDOM_INTEL
CONFIG_HW_RANDOM_AMD
CONFIG_HW_RANDOM_ATMEL
CONFIG_HW_RANDOM_VIA
CONFIG_HW_RANDOM_VIRTIO
EXYNOS HW random number generator support
- 基于 EXYNOS 的SOC 嵌入式系统上的硬件随机数发生器 TPM HW Random Number Generator support
- 可信赖平台模块( TrustedPlatform Module) 提供的硬件随机数发生器 /dev/nvram support
- 直接存取主板上"CMOSRAM" 的接口, 太危险! 建议选"N". Siemens R3964 line discipline
- 与使用西门子R3964 协议的设备同步通信, 除非你有一些诸如PLC 之类的特殊设备, 否则别选 Applicom intelligent fieldbus card support
- Applicom international 公司生产的用于现场总线(fieldbus) 的连接卡. 不确定的选"N". PCMCIA character devices
- PCMCIA 接口的字符设备 ACP Modem (Mwave) support
- IBM Thinkpad 上的一种软猫, 古董产品 RAW driver (/dev/raw/rawN)
- 裸设备的含义是将一个原始块设备( 可以是一整块磁盘, 也可以是一个分区) 当做一个线性的字节流来访问. 它是一种没有经过格式化, 不经过操作系统缓存, 也不能通过文件系统来访问的特殊字符设备. 与FreeBSD 不同,Linux 反对使用裸设备, 且被列入了废除计划( 建议的做法是使用"O_DIRECT" 标志打开对应的块设备文件, 例如"/dev/hda1"). 不确定的选"N". HPET - High Precision Event Timer
-
高精度事件定时器(
HPETTimer),
又被称为"MultimediaTimer",
是一种取代传统"ACPITimer"(CONFIG_X86_PM_TIMER)
的硬件时钟发生器,
提供14.31818MHz
固定频率.2007
年以后的芯片组一般都支持(
有的主板还需要在BIOS
里面明确开启HPET
支持),
建议开启.
-
Allow mmap of HPET
- 允许对HPET 寄存器进行映射. 但是某些包含HPET 硬件寄存器的页中同时还含有其他不该暴露给用户的信息, 在此种情况下, 需要选"N".
CONFIG_HPET_MMAP
Hangcheck timer
- 宕机检测定时器周期性地检查系统任务调度程序以确定系统的运行状况, 如果超过阈值, 计算机将重新启动. 不确定的选"N". TPM Hardware Support
-
基于硬件的可信赖平台模块(
TrustedPlatformModule),
它实际上是一个含有密码运算部件和存储部件的小芯片上的系统,
由CPU,
存储器,I/O,
密码运算器,
随机数产生器和嵌入式操作系统等部件组成.
使用此功能需要
TrouSerS
工具的帮助.
-
TPM Interface Specification 1.2 Interface
- TCG TIS 1.2 TPM 规范支持 TPM Interface Specification 1.2 Interface (I2C -Infineon)
- 仅需要对Infineon 的TPM 设备选"Y". National Semiconductor TPM Interface
- 仅需要对National 的TPM 设备选"Y". Atmel TPM Interface
- 仅需要对Atmel 的TPM 设备选"Y". Infineon Technologies TPM Interface
- 仅需要对Infineon 的TPM 设备(SLD9630 TT 1.1 或SLB 9635 TT 1.2) 选"Y". 此驱动支持的硬件列表. STMicroelectronics ST33 I2C TPM
- 意法半导体(STMicroelectronics) 出品的I2C 总线的TPM 安全芯片.
CONFIG_TCG_TIS
CONFIG_TCG_TIS_I2C_INFINEON
CONFIG_TCG_NSC
CONFIG_TCG_ATMEL
CONFIG_TCG_INFINEON
CONFIG_TCG_ST33_I2C
Telecom clock driver for ATCA SBC
- 没见过这种硬件, 选"N".
CONFIG_TTY
CONFIG_DEVKMEM
CONFIG_TTY_PRINTK
CONFIG_PRINTER
CONFIG_PPDEV
CONFIG_HVC_XEN
CONFIG_VIRTIO_CONSOLE
CONFIG_IPMI_HANDLER
CONFIG_HW_RANDOM
CONFIG_HW_RANDOM_EXYNOS
CONFIG_HW_RANDOM_TPM
CONFIG_NVRAM
CONFIG_R3964
CONFIG_APPLICOM
CONFIG_MWAVE
CONFIG_RAW_DRIVER
CONFIG_HPET
CONFIG_HANGCHECK_TIMER
CONFIG_TCG_TPM
CONFIG_TELCLOCK
I2C support
-
字符终端和串口都需要
TTY
的支持.
选"Y",
除非你知道自己在干什么.[
提示]
你想在控制台上显示汉字吗?
试试
CJKTTY
补丁吧!
-
I2C
与SMBus
支持.I2C(
读着"I-squared-C")
是用于单片机(
又称"
微控制器")
的低速串行总线协议,
它为微控制器(Microcontroller)
与各种不同的低速设备通信提供了一种廉价的总线(
因为只需要使用两个引脚,
称为"2
线"),
因此广泛的应用于嵌入式环境.
SMBus(SystemManagement Bus)
差不多相当于是I2C
的子集,
常用于硬件监控(
电压/
风扇转速/
温度/
电池等)
以及内存模块的配置(
使用I2CEEPROM),
因此所有PC
主板都依赖于SMBus
协议.
系统硬件监控工具
lm_sensors
和
i2c-tools
依赖于此模块,
硬件传感器和"VideoForLinux"
也需要该模块的支持.
详情参见"
Documentation/i2c/summary"
文档及整个"i2c"
文件夹.
不确定的选"Y".
-
Enable compatibility bits for old user-space
- 为了与lm-sensors 3.1.2 之前的版本兼容而设置. 某些2011 年之前版本的i2c 相关程序也需要此兼容性. I2C device interface
- I2C 设备通常都是由内核控制的, 但此选项可以向用户空间提供I2C 设备接口, 以允许用户空间的程序通过/dev/i2c-* 字符设备文件使用I2C 总线. 详情参见" Documentation/i2c/dev-interface" 文档. 不确定的选"N". I2C bus multiplexing support
-
多路复用I2C
总线支持.
不确定的选"N".
-
Multiplexer I2C Chip support
- I2C 多路复用芯片, 其下的子项按实际情况选择就OK 了
Autoselect pertinent helper modules
-
有一些I2C
驱动程序需要"I2Calgorithm"
的帮助才能工作.
而"I2C
算法"
本质上是I2C
接口的纯软件抽象.
开启此项后,
如有需要,
则会自动选上这些算法,
而无需你再手动选择.
推荐选"Y".
仅在你想使用额外的算法时,
才选"N".
-
SMBus-specific protocols
- SMBus 特有的扩展支持. 目前唯一实际支持的扩展是SMBus 报警协议. 建议选"Y".
CONFIG_I2C_SMBUS
I2C Algorithms
- I2C 算法, 子项可以全不选, 若有其他部分依赖其子项时, 会自动选上 I2C Hardware Bus support
- I2C 硬件支持 I2C/SMBus Test Stub
- 用于帮助开发SMBusclient 驱动( 特别是某些传感器芯片). 详情参见" Documentation/i2c/i2c-stub" 文档. 不确定的选"N". I2C Core debugging messages
- 向系统日志中传递大量的I2CCore 调试信息. 仅用于调试I2C 设备故障 I2C Algorithm debugging messages
- 向系统日志中传递大量的I2CAlgorithm 调试信息. 仅用于调试I2C 设备故障 I2C Bus debugging messages
- 向系统日志中传递大量的I2CBus 调试信息. 仅用于调试I2C 设备故障
CONFIG_I2C_COMPAT
CONFIG_I2C_CHARDEV
CONFIG_I2C_MUX
CONFIG_I2C_HELPER_AUTO
CONFIG_I2C_STUB
CONFIG_I2C_DEBUG_CORE
CONFIG_I2C_DEBUG_ALGO
CONFIG_I2C_DEBUG_BUS
SPI support
- 串行外设接口(SerialPeripheral Interface) 是一种标准的四线同步双向串行总线. SPI类似于 I2C, 但比I2C 的"2 线" 稍微复杂一些,SPI 需要4 个引脚("4 线"), 不但传输速率比I2C 更高, 还能实现全双工通信. 大多数SPI 设备不支持动态设备检测, 有些甚至是只读或者只写的.SPI 常用于微控制器(Microcontroller) 与外围设备(RTC, 传感器,EEPROM,FLASH, 解/ 编码器, 模数转换器, 数字信号处理器) 之间的通信,MMC 和SD 卡也可以通过SPI 协议访问, 而MMC 接口的DataFlash 卡则必须通过SPI 才能访问. 仅用于嵌入式环境,PC 平台上没有这样的设备. Qualcomm MSM SSBI bus support
- 高通 (Qualcomm)骁龙系列智能手机处理器内嵌的单线串行总线接口(Single-wireSerial Bus Interface) HSI support
- 高速同步串行接口( Highspeed synchronous Serial Interface) 是移动产业处理器接口( MIPI) 联盟的高速同步接口工作组发布的一项技术规范.MIPI(MobileIndustry ProcessorInterface) 是2003 年由ARM,Nokia,ST,TI 等公司成立的一个联盟, 目的是把手机内部的接口( 如摄像头, 显示屏接口, 射频/ 基带接口等) 标准化, 从而减少手机设计的复杂程度和增加设计灵活性.MIPI 联盟下面有不同的工作组, 分别定义了一系列的手机内部接口标准, 比如摄像头接口CSI, 显示接口DSI, 射频接口DigRF, 麦克风/ 扬声器接口SLIMbus 等. 统一接口标准的好处是手机厂商根据需要可以从市面上灵活选择不同的芯片和模组, 更改设计和功能时更加快捷方便. 目前,MIPI 联盟的董事成员包括英特尔, 摩托罗拉, 诺基亚, 三星, 意法半导体, 德州仪器. PPS support
- 秒脉冲(PulsePer Second) 是GPS 天线的一项功能, 用于获取GPS 卫星的授时.PPS 的精度可以到纳秒级, 而且没有累积误差. PTP clock support
- 精密时间协议( PrecisionTime Protocol) 是 IEEE1588 定义的一种基于以太网的高精度时间同步协议.PTP 采用硬件与软件结合设计, 可以提供比纯软件方式的NTP( 网络时间协议) 高的多的精度( 微秒级). 与GPS 授时相比, 在提供和GPS 相同的精度情况下,PTP 不需要为每个设备安装GPS 那样昂贵的组件, 只需要一个高精度的本地时钟和提供高精度时钟戳的部件, 成本较低. 一般的PC 和服务器上没有PTP 硬件. GPIO Support
-
每个芯片都会有至少一个引脚(PIN),
像CPU
或者芯片组这种复杂的芯片,
其引脚会有成白上千个,
这些PIN
就是芯片与外部沟通的渠道,
每个PIN
都会有它特定的功能.
GPIO(
GeneralPurpose I/O)
就是芯片上的一种通用功能的引脚,
其功能可由使用者通过编程的方式自定义(
所谓"
可编程引脚"),
比如使用两条PIN
就可以组成I2C,
使用4
条PIN
就可以组成SPI.
嵌入式系统经常需要控制结构简单但数量众多的外部设备(
比如LED
的亮与灭),
使用传统的串口或者并口就太"
大炮打蚊子",
而GPIO
则非常适合用于控制此类数量众多的简单设备.GPIO
在嵌入式设备中使用广泛,
但PC
平台的芯片组大多也集成有GPIO
引脚.
详情参见"
Documentation/gpio.txt"
文档.
-
Debug GPIO calls
- 仅供调试使用 /sys/class/gpio/... (sysfs interface)
- 为GPIO 设备添加sysfs 接口. 主要用于调试和问题排查. 不确定的选"N". Generic memory-mapped GPIO controller support (MMIO platformdevice)
- 这是最简单的GPIO 控制器驱动( platform总线驱动), 仅支持单独一个"data" 寄存器, 用于读/ 写GPIO 的状态. 不确定的选"Y". { 这里被省略的部分, 按主板上实际集成的芯片选择即可}
CONFIG_DEBUG_GPIO
CONFIG_GPIO_SYSFS
CONFIG_GPIO_GENERIC_PLATFORM
Dallas's 1-wire support
- Dallas 公司发明的单总线是比I2C 更简单的总线, 仅使用一个引脚(1-wire), 使用Master-Slave 结构, 用于连接慢速的单引脚设备, 比如 iButton 和热传感器. 主要用于嵌入式系统. Power supply class support
-
允许用户空间程序通过sysfs/uevent
接口对电源(
电池,
交流电,USB)
进行监控.
建议选"Y".
-
Power supply debug
- 仅供调试使用 Generic PDA/phone power driver
- 通用的PDA/phone 电源切换驱动. 用于在内部电池和外部电源(AC/USB) 之间进行切换. Generic battery support using IIO
- 为使用IIO 总线(CONFIG_IIO) 的电池提供的通用驱动 Test power driver
- 仅供测试使用 SBS Compliant gas gauge
- 与智能电池系统( SmartBattery System) 规范兼容的气压计( 集成在电池组中) 支持. GPIO charger
- 支持充电器通过GPIO 引脚报告其在线状态. Board level reset or power off
- 允许通过操作板载的主电源, 关闭或重启整个系统. { 这里被省略的部分, 按实际电池控制芯片选择即可}
CONFIG_POWER_SUPPLY_DEBUG
CONFIG_PDA_POWER
CONFIG_GENERIC_ADC_BATTERY
CONFIG_TEST_POWER
CONFIG_BATTERY_SBS
CONFIG_CHARGER_GPIO
CONFIG_POWER_RESET
Adaptive Voltage Scaling class support
- 自适应电压调节(AdaptiveVoltageScaling) 技术能够动态的对设备工作电压进行精细的调整, 拥有比 DVFS 更佳的电力利用效率, 是一种降低功耗与优化性能并举的电源与性能管理技术.AVS 在OMAP 设备上也被称为" SmartReflex". 目前仅用于嵌入式领域. Hardware Monitoring support
-
当前主板大多都有一个监控硬件温度/
电压/
风扇转速等状况的设备,
请按照主板实际使用的芯片选择相应的子项.
如果你不知道究竟需要使用哪个驱动,
可以使用
Superiotool
和
sensors-detect
工具进行检测.
另外,
该功能还需要CONFIG_I2C
的支持.
更多详情参见"
Documentation/hwmon/userspace-tools"
文档.
-
Hardware Monitoring Chip debugging messages
- 在系统日志中输出大量的I2C 调试信息, 仅用于故障调试 { 被省略的部分, 按实际的硬件监控芯片选择即可} GPIO fan
- 连接在GPIO 引脚上的风扇 PMBus support
- 电源管理总线(PowerManagementBus) 是一种基于SMBus(CONFIG_I2C) 的开放标准的数字电源管理协议, 可以用于配置/ 监控/ 操作电源变换器, 目前全球有超过 40个 IC厂商提供满足 PMBus标准的产品. 最新的 PMBus+1.3 标准增加AVS(CONFIG_POWER_AVS) 支持, 可以动态控制设备的工作电压. 根据你的实际硬件状况选择子项. ACPI 4.0 power meter
- 将 ACPI4.0(2009 年6 月发布) 中定义的瓦特表( 用于测量功耗) 当做硬件监控设备导出到用户空间. 需要固件支持ACPI4.0 规范, 并且有一个瓦特表. 不确定的选"N". ASUS ATK0110
- 许多华硕主板都有这种ACPI 硬件监控接口. 此驱动可以通过主板固件读取风扇/ 电压/ 温度信息.
CONFIG_HWMON_DEBUG_CHIP
CONFIG_SENSORS_GPIO_FAN
CONFIG_PMBUS
CONFIG_SENSORS_ACPI_POWER
CONFIG_SENSORS_ATK0110
Generic Thermal sysfs driver
-
为ACPI
规范中定义的"thermal"(
热)
提供一个通用的sysfs
接口,
以方便与诸如温度传感器和风扇之类的设备通信.
由于目前所有PC
和服务器都已支持ACPI,
并且发热控制也越来越重要,
所以建议选"Y".
详情参见"
Documentation/thermal/sysfs-api.txt"
文档.
-
Default Thermal governor
- 选择默认的热调节器, 建议选"step_wise". Fair-share thermal governor
- 此调节器根据设备对所属区域的" 贡献"(contribution) 进行调节. Step_wise thermal governor
- 此调节器以线性方式进行调节, 也就是每次调节都只在紧邻的两档之间进行切换. User_space thermal governor
- 此调节器让用户空间程序去决定如何调节 generic cpu cooling support
- 通用的CPU 降温机制( 通过降低频率来实现, 而不是通过ACPI 接口). 显然通过ACPI 接口是更好的机制, 所以建议选"N". Thermal emulation mode support
- "Thermal" 模拟. 仅供调试使用, 切勿用于生产系统!! Intel PowerClamp idle injection driver
- Intel PowerClamp "idle" 指令注入驱动. 仅供调试使用.
CONFIG_THERMAL_GOV_FAIR_SHARE
CONFIG_THERMAL_GOV_STEP_WISE
CONFIG_THERMAL_GOV_USER_SPACE
CONFIG_CPU_THERMAL
CONFIG_THERMAL_EMULATION
CONFIG_INTEL_POWERCLAMP
Watchdog Timer Support
-
选"Y"
并选中下面相应的驱动之后,
再创建一个主/
次设备号为10/130
的字符设备"/dev/watchdog",
即可拥有一只看门狗.
其工作原理是:
当/dev/watchdog
设备被打开后,
如果喂狗守护进程超过60
秒没有喂狗(
写入"/dev/watchdog"),
那么底层的看门狗硬件将会触发整个机器硬重启(
相当于按下面板上的"RESET"
按钮).
这对于提高服务器的在线率来说意义重大.
详情参见"
Documentation/watchdog/watchdog-api.txt"
文档.
-
WatchDog Timer Driver Core
- 看门狗核心驱动, 它为所有特定于具体硬件的看门狗驱动提供了统一的框架和"/dev/watchdog" 接口( 未来还会包括sysfs 接口). 使用看门狗的必选. Disable watchdog shutdown on close
- 默认情况下( 此项="N") 如果喂狗进程关闭"/dev/watchdog" 文件, 那么表示停止看门狗功能. 开启此项后, 看门狗一旦启用就不能被停止( 即使关闭"/dev/watchdog" 文件也不会停止). Software watchdog
- 内核提供的" 软看门狗". 使用它不需要有任何硬件的支持, 但可靠性不如硬件看门狗, 仅能应对喂狗进程的崩溃, 不能应对内核本身的崩溃. 在某些情况下( 例如Oracle 数据库),CONFIG_HANGCHECK_TIMER 是比" 软看门狗" 更好的选择. { 此处省略的看门狗硬件请按照实际使用的芯片进行选择}
CONFIG_WATCHDOG_CORE
CONFIG_WATCHDOG_NOWAYOUT
CONFIG_SOFT_WATCHDOG
Sonics Silicon Backplane support
- SSB(Sonics Silicon Backplane) 是一种仅在嵌入式环境中使用的总线. Broadcom specific AMBA
- Broadcom 特有的 AMBA(AdvancedMicrocontroller Bus Architecture) 总线支持. 仅用于嵌入式环境 Multifunction device drivers
-
MFD(
多功能设备)
的含义是"
在单个芯片上集成多个功能(GPIO,
触摸屏,
键盘,
电流调节,
电源管理...)".
此种芯片通常通过一个或多个IRQ
线和低速数据总线(SPI/I2C/GPIO)
与主CPU
进行通信.
对于主系统来说,
它们通过数据总线显示为一个单独的MFD
设备.
但透过MFD
框架,
又可以拥有多个相互独立的子设备(
子功能).MFD
多用于嵌入式环境.
-
Intel ICH LPC
- LPC(LowPin Count) 总线是Intel 于1998 年发布的一个旨在取代传统ISA 总线的接口规范, 用于连接南桥和 SuperI/O 芯片( 用于连接低速外设: 串口, 并口,PS/2 键鼠, 软盘控制器,TPM( 可信平台模块), 温度传感器, 风扇速度监测器) 以及Flash 芯片(BIOS). 以往南桥必须保留ISA 总线, 以连接老旧的ISA 插槽和 SuperI/O芯片( 可以使用 Superiotool 和 sensors-detect 工具检测) 以及Flash 芯片. 但是ISA 需要占用大量针脚, 主板的线路设计也比较复杂. 随着ISA 插槽的消失,LPC 就顺理成章的出现了, 它与ISA 在软件层面是类似的, 同时LPC 工作速率由PCI 总线速率同步驱动, 但是引脚数大大降低, 以方便在拥挤的现代主板上布局, 这也是取名"LowPinCount" 的原因. 此选项支持几乎所有Intel 芯片组的LPC 总线, 以方便其他驱动控制MFD( 目前仅有GPIO 和watchdog). 具体支持的芯片可以查看"drivers/mfd/lpc_ich.c" 文件. Intel SCH LPC
- 用于Intel Atom 处理器的Intel SCH(System Controller Hub) LPC 总线支持. 目前仅支持SMBus 和GPIO. { 此处省略的硬件请按照实际使用的芯片进行选择}
CONFIG_LPC_ICH
CONFIG_LPC_SCH
Voltage and Current Regulator Support
- 通用的电压与电流调节器框架. 除了提供通用的电压与电流调节接口外, 还能通过sysfs 向用户空间提供电压与电流的状态信息. 目的在于通过动态调节电压和电流, 降低能耗, 延长电池寿命. 建议笔记本用户选"Y". Multimedia support
-
多媒体设备:
摄像头,
视频采集,
模拟电视,
数字电视,
机顶盒,
收音机,
遥控器,
数字视频广播(DVB)...
内核多媒体子系统由
LinuxTV
项目负责维护.
-
Cameras/video grabbers support
- 摄像头, 视频采集卡 Analog TV support
- 模拟电视信号接收器, 包括那些既能接收模拟信号又能接收数字信号的电视卡 Digital TV support
- 数字电视信号接收器, 包括那些既能接收模拟信号又能接收数字信号的电视卡 AM/FM radio receivers/transmitterssupport
- AM/FM 无线电接收机和发射机, 包括那些带有收音机功能的电视卡 Remote Controller support
- 基于红外线/ 射频的遥控器, 用于控制视频采集卡或者电视卡. 大多数电视卡和视频采集卡都需要它的支持, 即使这些卡实际并不需要遥控器. Media Controller API
- 此API 用于查询多媒体设备内部的拓扑结构, 并进行动态配置. 主要用于嵌入式环境中的摄像头配置. V4L2 sub-device userspace API
- 此API 用于配置视频的格式/ 尺寸/ 帧率. 主要用于嵌入式环境中的摄像头配置. Enable advanced debug functionality on V4L2drivers
- 开启 V4L2 驱动程序的高级调试特性, 不确定的选"N". Enable old-style fixed minor ranges on drivers/videodevices
- 仅在你使用mknod 而不是udev 进行设备管理时才需要开启. 不确定的选"N". V4L2 int device (DEPRECATED)
- 仅用于旧式的图像传感器驱动(omap24xxcam 和tcm825x), 反对使用此项. 选"N". DVB Network Support
- DVB( 数字视频广播) 是一系列国际公认的数字电视标准. 此项提供了DVB 网络(DVB 标准的一部分) 支持, 可用于数字机顶盒(Set-Top-Box) 的自动固件升级以及通过DVB 卡访问互联网. maximum number of DVB/ATSC adapters
- 最大允许的 DVB/ATSC 电视卡数量. 取值范围是[1,255], 但经过测试的范围是[4,32]. 不确定的请保持默认值"8". Dynamic DVB minor allocation
- 为DVB 设备节点动态分配次设备号, 这样每张DVB
CONFIG_MEDIA_CAMERA_SUPPORT
CONFIG_MEDIA_ANALOG_TV_SUPPORT
CONFIG_MEDIA_DIGITAL_TV_SUPPORT
CONFIG_MEDIA_RADIO_SUPPORT
CONFIG_MEDIA_RC_SUPPORT
CONFIG_MEDIA_CONTROLLER
CONFIG_VIDEO_V4L2_SUBDEV_API
CONFIG_VIDEO_ADV_DEBUG
CONFIG_VIDEO_FIXED_MINOR_RANGES
CONFIG_VIDEO_V4L2_INT_DEVICE
CONFIG_DVB_NET
CONFIG_DVB_MAX_ADAPTERS
CONFIG_DVB_DYNAMIC_MINORS
CONFIG_CONNECTOR
CONFIG_MTD
CONFIG_PARPORT
CONFIG_PNP
CONFIG_BLK_DEV
CONFIG_IDE
CONFIG_ATA
CONFIG_MD
CONFIG_TARGET_CORE
CONFIG_FUSION
CONFIG_I2O
CONFIG_MACINTOSH_DRIVERS
CONFIG_NETDEVICES
CONFIG_I2C
CONFIG_SPI
CONFIG_SSBI
CONFIG_HSI
CONFIG_PPS
CONFIG_PTP_1588_CLOCK
CONFIG_GPIOLIB
CONFIG_W1
CONFIG_POWER_SUPPLY
CONFIG_POWER_AVS
CONFIG_HWMON
CONFIG_THERMAL
CONFIG_WATCHDOG
CONFIG_SSB
CONFIG_BCMA
CONFIG_REGULATOR
CONFIG_MEDIA_SUPPORT