> 文章列表 > I.MX6ULL_Linux_系统篇(20) kernel分析-menuconfig

I.MX6ULL_Linux_系统篇(20) kernel分析-menuconfig

I.MX6ULL_Linux_系统篇(20) kernel分析-menuconfig

linux内核的功能非常丰富,大多功能可以通过menuconfig图形界面来选择配置,但是我们面对众多的功能,往往不能快速确定配置项位置或无法理解配置项功能,本篇将对配置项做一下简要解析!(作者不建议任何人阅读本篇文章,如果你想了解配置项的功能,那请您去分析自己所使用的配置项及源码!!!)

顶层路径

使用如下命令进入内核配置界面:

make menuconfig

General setup  --->

        常规设置

Enable loadable module support  --->

        可加载模块支持,内核模块是一小段编译后的代码,可以插入到运行的内核中,而不是永久地内置到内核中。您可以使用“modprobe”工具添加(有时删除)它们。如果您在这里说Y,那么内核的许多部分都可以构建为模块(通过回答M而不是Y(如果指示)):这对于不经常使用的选项非常有用,这些选项不需要启动。有关更多信息,请参阅modprobe、lsmod、modinfo、insmod和rmmod的手册页。如果您在这里说Y,则需要运行“makemodules_install”将模块放在/lib/modules/下,modprobe可以在其中找到它们(您可能需要是root用户才能这样做)。如果不确定,请说Y。

Enable the block layer  --->

        启用块层,为内核提供块层支持。禁用此选项可从内核中删除块层支持。如果禁用此选项,这可能对嵌入有用:
                块设备文件将变得不可用
                一些文件系统(如ext3)将变得不可用。
        此外,SCSI字符设备和USB存储将被禁用,因为它们使用各种块层定义和设施。在这里说Y,除非你知道你真的不想装载磁盘之类的东西。

System Type  --->

        系统类型

Bus support  --->

        总线支持

Kernel Features  --->

        内核功能

Boot options  --->

        启动选项

CPU Power Management  --->

        CPU电源管理

Floating point emulation  --->

        浮点模拟

Userspace binary formats  --->

        用户空间二进制格式

Power management options  --->

        电源管理选项

Networking support  --->

        网络支持,除非你真的知道你在做什么,否则你应该在这里说Y。原因是有些程序需要内核网络支持,即使在没有连接到任何其他计算机的单机上运行。如果您是从较旧的内核升级,您也应该考虑更新您的网络工具,因为内核和工具的更改通常是同步进行的。这些工具包含在包网络工具中,其位置和版本号在<file:Documentation/Changes>中给出。
对于Linux网络的一般介绍,强烈建议阅读NET-HOWTO,可从<http://www.tldp.org/docs.html#howto>.

Device Drivers  --->

        设备驱动程序

Firmware Drivers  --->

        固件驱动

File systems  --->

        文件系统

Kernel hacking  --->

        内核调试

Security options  --->

        安全选项

Cryptographic API  --->

        加密API

Library routines  --->

        库例程

Virtualization

        虚拟化

General setup

 

()  Cross-compiler tool prefix

        交叉编译器工具前缀,与运行“makeCROSS_COMPILE=prefix-”相同,但存储在此内核构建目录中以供默认make运行。除非您希望配置的内核构建目录自动选择交叉编译器,否则不需要设置此选项。

Compile also drivers which will not load

        同时编译不会加载的驱动程序,有些驱动程序可以在不同于预期运行平台的平台上编译。尽管它们无法在那里加载(甚至在加载时由于缺少硬件支持而无法使用),但开发人员与分销商相反,可能希望构建这样的驱动程序来编译和测试它们。如果您是一名开发人员,并且想要构建所有可用的东西,请在此处输入Y。如果您是用户/分销商,请在此处输入N以排除要分发的无用驱动程序。

()  Local version - append to kernel release

        本地版本-附加到内核版本,在内核版本的末尾附加一个额外的字符串。例如,当您键入uname时,将显示此消息。在此设置的字符串将按顺序附加在对象和源树中文件名匹配localversion*的任何文件的内容之后。总字符串最多可包含64个字符。

Automatically append version information to the version string

        自动将版本信息附加到版本字符串,这将尝试通过查找属于当前顶层版本的git标记来自动确定当前树是否为发布树。如果找到基于git的树,格式为-gxxxxxxxx的字符串将添加到本地版本。由此生成的字符串将附加在任何匹配的localversion*文件之后,并附加在CONFIG_localversion中设置的值之后。(这里使用的实际字符串是运行命令产生的前八个字符:$gitrevparse--verify HEAD,这是在脚本“scripts/setlocalversion”中完成的。)

Kernel compression mode (LZO)  --->

        linux内核是一种自解压的可执行文件。有几种压缩算法可用,它们在效率、压缩和解压缩速度上有所不同。压缩速度仅在构建内核时相关。每次启动时减压速度都是相关的。如果您对bzip2或lzma压缩内核有任何问题,请发送邮件给我(Alain Knaff)<alain@knaff.lu>. (此功能的旧版本(仅限bzip2)由Christian Ludwig提供,版本为2.4)高压缩选项对磁盘空间(嵌入式系统)较低但ram大小不重要的用户最有用。如果有疑问,请选择“gzip”

((none)) Default hostname

        此选项在用户空间调用sethostname(2)之前确定默认系统主机名。内核传统上在这里使用“(none)”,但您可能希望在这里使用不同的默认值,以使最小的系统更易于使用,配置更少。

Support for paging of anonymous memory (swap)

        支持匿名内存分页(交换),此选项允许您选择是否希望在内核中支持所谓的交换设备或交换文件,这些设备或文件用于提供比计算机中实际RAM更多的虚拟内存。如果不确定,请说Y。

System V IPC

        进程间通信原语,进程间通信是一套库函数和系统调用,它允许进程(运行程序)同步和交换信息。这通常被认为是一件好事,有些程序不会运行,除非你在这里说Y。特别是,如果您想在Linux下运行DOS仿真器dosemu(请阅读dosemu-HOWTO,可从<http://www.tldp.org/docs.html#howto>),你需要在这里说Y。您可以在“info IPC”中找到有关IPC的文档,也可以在《Linux程序员指南》第6.4节中找到,可从<http://www.tldp.org/guides.html>.

POSIX Message Queues

        POSIX消息队列,消息队列的POSIX变体是IPC的一部分。在POSIX消息队列中,每个消息都有一个优先级,该优先级决定了进程接收消息的顺序。如果您想编译和运行例如为Solaris编写的程序,并使用其POSIX消息队列(函数mq_*),请在此处输入Y。POSIX消息队列作为名为“mqueue”的文件系统可见,如果您想对消息队列执行文件系统操作,可以将其安装在某个位置。如果不确定,请说Y。

Enable process_vm_readv/writev syscalls

        启用process_vm_readv/writev系统调用,启用此选项将添加系统调用process_vm_readv和process_vm_writev,它们允许具有正确权限的进程直接读取或写入另一个进程的地址空间。有关详细信息,请参阅手册页。

open by fhandle syscalls

        由fhandle系统调用打开,如果您在这里说“是”,则用户级程序将能够将文件名映射到句柄,然后在以后将该句柄用于不同的文件系统操作。这对于实现用户空间文件服务器非常有用,现在用户空间文件服务使用句柄而不是名称来跟踪文件。即使文件名被重命名,句柄也将保持不变。启用open_by_handle_at(2)和name_to_handle_at(2)系统调用。

uselib syscall

        uselib系统调用,此选项启用uselibsyscall,这是libc5和更早版本的动态链接器中使用的系统调用。glibc不使用此系统调用。如果要运行基于libc5或更早版本的程序,可能需要启用此系统调用。当前运行glibc的系统可以安全地禁用此功能。

Auditing support

        审计支持,启用可与另一个内核子系统(如SELinux)一起使用的审计基础设施(这需要用于记录avc消息输出)。在没有CONFIG_AUDITSYSCALL的情况下不执行系统调用审核。

IRQ subsystem  --->

        -Expose hardware/virtual IRQ mapping via debugfs

        IRQ子系统,此选项将显示硬件irq编号和Linux irq编号之间的映射关系。映射通过文件“irq_domain_mapping”中的debugfs公开。如果你不知道这意味着什么,你就不需要它。

Timers subsystem  --->

        -Timer tick handling (Idle dynticks system (tickless idle))  --->

                计时器滴答声处理(空闲动态滴答声系统(滴答声空闲))

        -Old Idle dynticks config

                旧闲置动态信号配置,这是一个旧的配置条目,用于启用动态信号空闲。我们将其保留一段时间,以加强与旧配置文件的向后兼容性。

        -High Resolution Timer Support

                高分辨率计时器支持,此选项启用高分辨率计时器支持。如果您的硬件不支持,则此选项只会增加内核映像的大小。

CPU/Task time and stats accounting  --->

        CPU/任务时间和统计统计

        -Cputime accounting (Simple tick based cputime accounting)  --->

                Cputime会计(简单的基于刻度的Cputime核算)

        -BSD Process Accounting

                BSD过程会计,如果您在这里说Y,则用户级程序将能够(通过特殊的系统调用)指示内核将进程记帐信息写入文件:每当进程退出时,内核都会将有关该进程的信息附加到文件中。这些信息包括创建时间、所属用户、命令名、内存使用情况、控制终端等(完整列表在<file:include/linux/acct.h>中的结构acct中)。用户级程序可以使用这些信息进行有用的操作。这通常是个好主意,所以Y说。

        -Export task/process statistics through netlink

                通过netlink导出任务/流程统计信息,通过通用网络链接接口导出任务/进程的选定统计信息。与BSD进程会计不同,统计信息在任务/进程的生命周期内作为对命令的响应提供。与BSD会计一样,它们在任务退出时被发送到用户空间。如果不确定,请说N。

RCU Subsystem  --->

        RCU (Read-copy update)是2002年10月添加到Linux内核中的一种同步机制。作为数据同步的一种方式,在当前的Linux内核中发挥着重要的作用。RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加锁操作。这样在同一时间可以有多个线程同时读取该链表,并且允许一个线程对链表进行修改(修改的时候,需要加锁)。RCU适用于需要频繁的读取数据,而相应修改数据并不多的情景,例如在文件系统中,经常需要查找定位目录,而对目录的修改相对来说并不多,这就是RCU发挥作用的最佳场景。

        -RCU Implementation (Preemptible tree-based hierarchical RCU)  --->

                RCU实现(基于可抢占树的分层RCU)

        -Task_based RCU implementation using voluntary context switch

                使用自愿上下文切换实现基于任务的RCU

        -Consider userspace as in RCU extended quiescent state

                将用户空间视为RCU扩展静态状态

        -(32) Tree-based hierarchical RCU fanout value 

                基于树的分级RCU扇出值

       - (16) Tree-based hierarchical RCU leaf-level fanout value

                基于树的分级RCU叶级扇出值

        -Disable tree-based hierarchical RCU auto-balancing

                禁用基于树的分级RCU自动平衡

        -Accelerate last non-dyntick-idle CPU's grace periods

                加速最后一个非动态空闲CPU的宽限期

        -Enable RCU priority boosting

                启用RCU优先级提升

        -(0) Real-time priority to use for RCU worker threads

                用于RCU工作线程的实时优先级

        -Offload RCU callback processing from boot-selected CPUs 

                从启动选定的CPU卸载RCU回调处理

Kernel .config support

        此选项允许将完整的Linux内核“.config”文件内容保存在内核中。它提供了在运行的内核或磁盘内核中使用哪些内核选项的文档。可以使用脚本scripts/extract-ikconfig从内核映像文件中提取此信息,并将其用作重建当前内核或构建另一个内核的输入。如果已启用,也可以通过读取/proc/config.gz从正在运行的内核中提取它(如下)。

Enable access to .config through /proc/config.gz

        通过/proc/config.gz启用对.config的访问。

(18) Kernel log buffer size (16 => 64KB, 17 => 128KB)

        内核日志缓冲区大小,选择最小内核日志缓冲区大小为2的幂。最终大小受LOG_CPU_MAX_BUF_SHIFT配置参数的影响,请参见下文。“log_buf_len”引导参数也可能强制任何更大的大小。示例:17=>128 KB 16=>64 KB 15=>32 KB 14=>16 KB 13=>8 KB 12=>4 KB

(12) CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)

        CPU内核日志缓冲区大小贡献,此选项允许根据CPU数量增加默认环形缓冲区大小。该值将每个CPU的贡献定义为2的幂。使用的空间通常只有几行,但当报告问题时,可能会更多,例如回溯。增加的大小意味着必须分配新的缓冲区,而原始的静态缓冲区未使用。只有在具有更多CPU的系统上才有意义。因此,只有当贡献之和大于LOG_BUF_SHIFT定义的默认内核环形缓冲区的一半时,才使用该值。默认值设置为需要64个以上的CPU来触发分配。此外,当使用“log_buf_len”内核参数时,该选项将被忽略,因为它强制使用环形缓冲区的精确大小(二次幂)。可能的CPU数量用于此计算,忽略热插拔,使计算在最坏情况下达到最佳状态,同时允许从启动时使用简单算法。示例转换值及其含义:
每个CPU 17=>128 KB
每个CPU 16=>64 KB
每个CPU 15=>32 KB
每个CPU 14=>16 KB
每个CPU 13=>8 KB
每个CPU 12=>4 KB

Control Group support  --->

        控制组支持,此选项增加了对将多组进程分组在一起的支持,以便与进程控制子系统(如CPU、CFS、内存控制或设备隔离)一起使用。详情看:
        -文档/调度器/计划设计-CFS.txt(CFS)
        -文档/cgroups/(分组、隔离和资源控制功能)

        -Example debug cgroup subsystem

                此选项启用一个简单的cgroup子系统,该子系统导出有关cgroups框架的有用调试信息。

        -Freezer cgroup subsystem

                提供冻结和解冻cgroup中所有任务的方法。

        -Device controller for cgroups

                为cgroup中的进程可以mknod或打开的设备提供cgroup实现白名单。

        -Cpuset support

                此选项将允许您创建和管理CPUSET,它允许将系统动态划分为CPU和内存节点集,并分配任务仅在这些集内运行。这主要适用于大型SMP或NUMA系统。

        -Simple CPU accounting cgroup subsystem

                提供一个简单的资源控制器,用于监视cgroup中任务所消耗的总CPU。

        -Memory Resource Controller for Control Groups

                提供管理匿名内存和页面缓存的内存资源控制器。(请参阅文档/cgroups/memory.txt)

        -Enable perf_event per-cpu per-container group (cgroup) monitoring

                此选项扩展了每cpu模式,将监视限制为属于指定cgroup并在指定cpu上运行的线程。

        -Group CPU scheduler

                此功能允许CPU调度器识别任务组并控制分配给此类任务组的CPU带宽。它使用cgroups对任务进行分组。

        -Block IO controller

                通用块IO控制器cgroup接口。这是常见的cgroup接口,应该由各种IO控制策略使用。目前,CFQ IO调度器使用它来识别任务组并控制磁盘带宽分配(比例时间片分配)给这些任务组。它还被块层中的生物节流逻辑用于实现设备上IO速率的上限。此选项仅启用通用块IO控制器基础结构。还需要启用实际的IO控制逻辑/策略。要在CFQ中启用磁盘带宽的比例权重划分,请设置CONFIG_CFQ_GROUP_IOSCHED=y;要启用节流策略,请设置CONFIG_BLK_DEV_throttling=y。有关详细信息,请参阅文档/cgroups/blkio-controller.txt。

Checkpoint/restore support

        检查点/恢复支持,为了检查点/恢复,启用其他内核功能。特别是,它添加了辅助prctl代码来设置进程文本、数据和堆段大小,以及一些额外的/proc文件系统条目。

Namespaces support

        提供使用相同id使任务与不同对象一起工作的方法。例如,当在不同的命名空间中使用时,相同的IPC id可能引用不同的对象,或相同的用户id或pid可能引用不同任务。

        -UTS namespace

                在这个名称空间任务中,可以看到uname()系统调用提供的不同信息

        -IPC namespace

                在此名称空间中,任务使用与不同名称空间中的不同IPC对象对应的IPC ID。

        -User namespace

                这允许容器(即vserver)使用用户名称空间为不同的服务器提供不同的用户信息。当内核中启用了用户名称空间时,建议同时启用MEMCG和MEMCG_KMEM选项,并且用户空间使用内存控制组来限制非特权用户可以使用的内存量。

        -PID Namespaces

                支持进程id命名空间。这允许多个进程具有相同的pid,只要它们位于不同的pid命名空间中。这是一个容器的构造块。

        -Network namespace

                允许用户空间创建网络堆栈的多个实例。

Automatic process group scheduling

        自动进程组调度,此选项通过自动创建和填充任务组来优化常见桌面工作负载的调度程序。这种工作负载的分离将激进的CPU燃烧器(如构建作业)与桌面应用程序隔离开来。任务组自动生成当前基于任务会话。

Enable deprecated sysfs features to support old userspace tools

        启用已弃用的sysfs功能以支持旧的用户空间工具

Kernel->user space relay support (formerly relayfs)

        内核->用户空间中继支持(以前称为relayfs),此选项支持某些文件系统(如debugfs)中的中继接口支持。它旨在为工具和设施提供一种有效的机制,以将大量数据从内核空间传递到用户空间。

Initial RAM filesystem and RAM disk (initramfs/initrd) support

        初始RAM文件系统和RAM磁盘(initramfs/initrd)支持

Initramfs source file(s)

        这可以是带有.cpio后缀的单个cpio归档文件,也可以是用于构建initramfs映像的目录和文件的空格分隔列表。cpio存档应该包含一个文件系统存档,用作initramfs映像。目录应包含要包含在initramfs映像中的文件系统布局。文件应包含符合内核树中“usr/gen_init_cpio”程序所描述格式的条目。如果指定了多个目录和文件,则initramfs映像将是所有目录和文件的聚合。有关更多详细信息,请参阅<file:Documentation/reearlyuserspace/README>。如果不确定,请留空。

Support initial ramdisks compressed using gzip

Support initial ramdisks compressed using bzip2

Support initial ramdisks compressed using LZMA

Support initial ramdisks compressed using XZ

Support initial ramdisks compressed using LZO

Support initial ramdisks compressed using LZ4

        支持initramfs多种压缩格式,如gzip,bzip2,lzma,xz,lzo,lz4

Optimize for size

        启用此选项将向编译器传递“-Os”而不是“-O2”,从而生成更小的内核。

Configure standard kernel features (expert users)  --->

        此选项允许禁用或调整某些基本内核选项和设置。这适用于可以容忍“非标准”内核的专用环境。只有当你真的知道自己在做什么时,才使用这个。

        -Enable 16-bit UID system calls

                这将启用传统的16位UID系统调用包装器。

        -Multiple users, groups and capabilities support

                此选项支持非root用户、组和功能。如果您在这里说N,那么所有进程都将使用UID 0、GID 0和所有可能的功能运行。这里说N还编译了对与UID、GID和功能(如setuid、setgid和capset)相关的系统调用的支持。如果不确定,在这里说Y。

        -sgetmask/ssetmask syscalls support

                sysgetmask和syssetmask是过时的系统调用,在libc中不再支持,但在某些体系结构中仍默认启用。如果不确定,请在此处保留默认选项。

        -Sysfs syscall support

                sysfs是libc中不再支持的过时系统调用。请注意,禁用此选项更安全,但可能会破坏与某些系统的兼容性。

        -Sysctl syscall support

                sysctl使用二进制路径,这些路径被发现对正确维护和使用具有挑战性。/proc/sys中使用带有ascii名称的路径的接口现在是该信息的主要路径。几乎没有使用二进制sysctl接口,因此如果您试图节省一些空间,禁用它可能是安全的,从而使内核稍微更小。

        -Load all symbols for debugging/ksymoops

                在这里说Y,让内核打印出符号崩溃信息和符号堆栈回溯。这会稍微增加内核的大小,因为所有符号都必须加载到内核映像中。

        -Include all symbols in kallsyms

                通常,kallsymes只包含用于更好的OOPS消息和回溯的函数符号(即,来自text和inittext部分的符号)。这在大多数情况下都足够了。只有在极少数情况下(例如,使用调试器时),才需要所有符号(例如,数据段中的变量名称等)。此选项确保所有符号都加载到内核映像中(即,来自所有部分的符号),以增加内核大小(取决于内核配置,可能是300KiB或类似的大小)。说N,除非你真的需要所有符号。

        -Enable support for printk

                此选项启用正常的printk支持。删除它会从内核映像中删除大部分消息字符串,并使内核或多或少保持沉默。由于这使得诊断系统问题变得非常困难,因此强烈不鼓励在这里说N。

        -BUG() support

                禁用此选项将消除对BUG和WARN的支持,减少内核映像的大小,并可能会忽略许多致命条件。您应该只考虑对没有报告错误设施的嵌入式系统禁用此选项。只要说Y。

        -Enable ELF core dumps

                启用对生成核心转储的支持。禁用可节省约4k。

        -Enable full-sized data structures for core

                禁用此选项可以减少各种核心内核数据结构的大小。这节省了小型计算机的内存,但可能会降低性能。

        -Enable futex support

                禁用此选项将导致构建内核时不支持“快速用户空间互斥体”。生成的内核可能无法正确运行基于glibc的应用程序。

        -Enable eventpoll support

                禁用此选项将导致构建内核时不支持epoll系列系统调用。

        -Enable signalfd() system call

                启用允许在文件描述符上接收信号的signalfd()系统调用。

        -Enable timerfd() system call

                启用timerfd()系统调用,该调用允许接收文件描述符上的计时器事件。

        -Enable eventfd() system call

                启用eventfd()系统调用,允许接收内核通知(即KAIO)或用户空间通知。

Enable bpf() system call

        启用bpf()系统调用,允许通过文件描述符操作eBPF程序和映射。

Use full shmem filesystem

        shmem是一个用于管理共享内存的内部文件系统。它有掉期支持,并管理资源限制。如果启用了tmpfs,它也会作为tmpfs导出到用户空间。禁用此选项将shmem和tmpfs替换为更简单的ramfs代码,这可能适用于没有交换的小型系统。

Enable AIO support

        此选项启用POSIX异步I/O,某些高性能线程应用程序可能会使用此选项。禁用此选项可节省约7k。

Enable madvise/fadvise syscalls

        此选项启用madvise和fadvise系统调用,应用程序使用这些调用向内核建议其未来的内存或文件使用情况,从而提高性能。如果构建的嵌入式系统中没有应用程序使用这些系统调用,则可以禁用此选项以节省空间。

Embedded system

        如果为嵌入式系统编译内核,则应启用此选项,以便可以使用某些专家选项进行配置。

Kernel Performance Events And Counters  --->

        -Kernel performance events and counters

                为软件和硬件提供的各种性能事件启用内核支持。内置或通过使用通用跟踪点支持软件事件。大多数现代CPU通过性能计数器寄存器支持性能事件。这些寄存器统计某些类型的硬件事件的数量:例如执行的指令、缓存未命中或预测错误的分支,而不会减慢内核或应用程序的速度。这些寄存器还可以在经过阈值数量的事件时触发中断,因此可以用于评测在该CPU上运行的代码。Linux Performance Event子系统提供了这些软件和硬件事件功能的抽象,可通过系统调用获得,并由tools/perf/中的“perf”实用程序使用。它提供每任务和每CPU计数器,并在这些计数器之上提供事件功能。

        -Debug: use vmalloc to back perf mmap() buffers

                使用vmalloc内存备份perf mmap()缓冲区。主要用于在不需要vmalloc代码的平台上调试vmalloc。

Enable VM event counters for /proc/vmstat

        要显示事件计数,需要VM事件计数器。此选项允许禁用EXPERT系统上的VM事件计数器/proc/vmstat仅在禁用VM事件计数器时显示页面计数。

Enable SLUB debugging support

        SLUB具有广泛的调试支持功能。禁用这些功能可以显著节省代码大小。这也会禁用SLUB sysfs支持/sys/sslab将不存在,并且不支持缓存验证等。

Disable heap randomization

        随机化堆放置使堆利用更加困难,但它也破坏了古老的二进制文件(包括任何基于libc5的文件)。此选项将引导默认值更改为禁用堆随机化,并且可以在运行时通过将/proc/sys/kernel/randomize_va_saspace设置为2来覆盖。在非古代发行版(2000年后发行)上,N通常是一个安全的选择。

Choose SLAB allocator (SLUB (Unqueued Allocator))  --->

        此选项允许选择板坯分配器。

SLUB per cpu partial cache

        每cpu部分缓存加速了处理器本地的对象分配和释放,代价是释放的延迟更加不确定。溢出时,这些缓存将被清除,这需要获取可能导致延迟峰值的锁。对于实时系统,通常会选择“否”。

Provide system-wide ring of trusted keys

        提供可向其中添加受信任密钥的系统密钥环。密钥环中的密钥被认为是可信的。内核可以从编译后的数据和硬件密钥存储中随意添加密钥,但如果这些密钥可以通过密钥环中已经存在的密钥进行验证,则用户空间只能添加额外的密钥。此密钥环中的密钥用于模块签名检查。

Profiling support

        在这里说“Y”以启用配置文件(如OProfile)使用的扩展配置文件支持机制。

Kprobes

        Kprobes允许您捕获几乎任何内核地址并执行回调函数。registerkprobe()建立probepoint并指定回调。Kprobes对于内核调试、非侵入式检测和测试非常有用。如果有疑问,请说“N”。

Optimize very unlikely/likely branches

        此选项启用了透明的分支优化,使某些几乎总是正确或几乎总是错误的分支条件在内核内执行更加便宜。某些性能敏感的内核代码,如跟踪点、调度程序功能、网络代码和KVM都有这样的分支,并支持此优化技术。如果检测到编译器支持“asm-goto”,内核将仅使用nop指令编译此类分支。当条件标志切换为真时,nop将转换为跳转指令以执行条件指令块。这种技术降低了处理器分支预测的开销和压力,通常会使内核更快。病情的更新速度较慢,但这种情况总是非常罕见。(在32位x86上,添加到编译器标志的必要选项可能会稍微增加内核的大小。)

Stack Protector buffer overflow detection (None)  --->

        此选项打开“堆栈保护器”GCC功能。这个特性在函数开始时,在返回地址之前的堆栈上放置一个金丝雀值,并在实际返回之前验证该值。基于堆栈的缓冲区溢出(需要覆盖此返回地址)现在也会覆盖金丝雀,金丝雀会被检测到,然后通过内核死机消除攻击。

GCOV-based kernel profiling  --->

        -Enable gcov-based kernel profiling

                此选项启用基于gcov的代码评测(例如,用于代码覆盖率测量)。|如果不确定,请说N。另外,指定CONFIG_GCOV_PROFILE_ALL=y以获取整个内核的评测数据。要启用特定文件或目录的评测,请在相应的Makefile中添加一行类似于以下内容的代码:

对于单个文件(例如main.o):
GCOV_PROFILE_main.o:=y
对于一个目录中的所有文件:
GCOV_PROFILE:=y
即使指定了CONFIG_GCOV_PROFILE_ALL,也要排除分析文件,请使用:

GCOV_PROFILE_main.o:=n
以及:
GCOV_PROFILE:=n
请注意,必须安装debugfs文件系统才能访问评测数据。

Enable loadable module support

Forced module loading

        允许加载没有版本信息的模块(即modprobe--force)。强制模块加载设置“F”(强制)污染标志,这通常是一个非常糟糕的主意。

Module unloading

        如果没有此选项,您将无法卸载任何模块(请注意,某些模块可能无论如何都不可卸载),这会使内核更小、更快、更简单。如果不确定,请说Y。

Forced module unloading 

        该选项允许您强制卸载模块,即使内核认为它是不安全的:内核将删除模块,而无需等待任何人停止使用它(使用-f选项来rmmod)。这主要针对内核开发人员和绝望的用户。如果不确定,请说N。

Module versioning support

        通常,您必须使用与内核一起编译的模块。在这里说Y有时可以使用为不同内核编译的模块,通过向模块添加足够的信息来(希望)发现任何可能使其与正在运行的内核不兼容的更改。如果不确定,请说N。

Source checksum for all modules

        包含MODULE_VERSION的模块会在其modinfo部分中插入一个额外的“srcversion”字段,该字段包含创建该模块的源文件的总和。这有助于维护人员准确地查看用于构建模块的源(因为其他人有时会在不更新版本的情况下更改模块源)。使用此选项,将为所有模块创建这样的“srcversion”字段。如果不确定,请说N。

Module signature verification

        加载时检查模块的有效签名:签名只需附加到模块。有关详细信息,请参阅Documentation/module-signing.txt!!!警告!!!如果启用此选项,则必须确保模块在签名后不会被剥离。这包括一些打包程序(如rpmbuild)完成的debuginfo条带,以及包含在initramfs中以减少模块大小。

Compress modules on installation

        此选项在运行“makemodules_install”时压缩内核模块。模块将使用gzip或xz进行压缩,具体取决于“压缩算法”中的选择。模块初始化工具支持gzip格式,而kmod处理gzip和xz压缩模块。当从主内核源外部安装内核模块并使用Kbuild系统安装模块时,该内核模块在安装时也将被压缩。当在initrd或initramfs内部使用模块时,此选项几乎没有什么好处,通常压缩整个initrd或init ramfs会更有效。当签名模块被压缩时,这与签名模块完全兼容。模块init工具或kmod处理解压缩,并向其他层提供未压缩但已签名的有效负载。

Enable the block layer

Support for large (2TB+) block devices and files

        启用大小为2TB或更大的块设备或文件。需要此选项来支持大(2TB+)块设备的全部容量,包括RAID、磁盘、网络块设备、逻辑卷管理器(LVM)和环回。此选项还支持大于2TB的单个文件。ext4文件系统要求启用此功能,以便支持启用huge_file功能的文件系统。否则,它将拒绝以读写模式装载任何使用huge_file特性的文件系统,默认情况下,mke2fs.ext4会启用该特性。GFS2文件系统也需要此功能。如果不确定,请说Y。

Block layer SG support v4

        这里说Y将为任何块设备启用通用SG(SCSI通用)v4支持。与SG v3(又名block/scsi_ioctl.c drivers/scsi/SG.c)不同,SG v4可以处理复杂的scsi命令:带有双向数据传输和通用请求/响应协议(例如,串行连接scsi中的任务管理功能和SMP)的标记可变长度cdb。最近的UDEV版本需要此选项来正确访问设备序列号等。如果不确定,请说Y。

Block layer SG support v4 helper lib

        如果需要,子系统通常会启用此功能。用户通常不需要手动启用此功能。

Block layer data integrity support

        一些存储设备允许存储/检索额外的信息,以帮助保护数据。块层数据完整性选项提供了文件系统可以使用的挂钩,以确保更好的数据完整性。如果您的存储设备提供T10/SCSI数据完整性字段或T13/ATA外部路径保护,请在此处选择“是”。如果有疑问,请说N。

Block device command line partition parser

        启用此选项允许您从内核启动参数指定分区布局。这通常用于嵌入式设备,因为嵌入式设备没有任何标准化的方法来列出块设备上的分区。有关详细信息,请参阅Documentation/block/cmdline-partition.txt。

Partition Types  --->

         -Advanced partition selection

                如果您想在Linux下使用硬盘,而这些硬盘是在运行与Linux系统不同的体系结构的操作系统下分区的,请在此处输入Y。注意,这个问题的答案不会直接影响内核:说N只会导致配置器跳过所有关于外部分区方案的问题。如果不确定,请说N。

IO Schedulers  --->

        -Deadline I/O scheduler

                最后期限I/O调度器简单紧凑。它将为CSCAN服务提供请求的FIFO到期,切换到服务树中的新点,并在到期时从那里执行一批IO。

        -CFQ I/O scheduler

                CFQ I/O调度器尝试在系统中的所有进程之间平均分配带宽。它应该提供一个公平和低延迟的工作环境,适用于桌面和服务器系统。这是默认的I/O调度器。

        -Default I/O scheduler (CFQ)  --->

                选择默认情况下将用于所有块设备的I/O调度器。

System Type

 

 MMU-based Paged Memory Management Support

        选择是否希望通过分页内存管理支持基于MMU的虚拟寻址空间。如果不确定,请说“是”。

ARM system type (Allow multiple platforms to be selected)

        ARM系统类型(允许选择多个平台)

Multiple platform selection  --->

        -ARMv6 based platforms (ARM11)

        -ARMv7 based platforms (Cortex-A, PJ4, Scorpion, Krait)

#===============================================

Dummy Virtual Machine

Marvell Engineering Business Unit (MVEBU) SoCs

Annapurna Labs Alpine platform

Atmel SoCs

Broadcom SoC Support

Marvell Berlin SoCs

Conexant Digicolor SoC Support 

Calxeda ECX-1000/2000 (Highbank/Midway)

Hisilicon SoC Support

Texas Instruments Keystone Devices

Amlogic Meson SoCs

Freescale i.MX family  --->

Mediatek MT65xx & MT81xx SoC

TI OMAP/AM/DM/DRA Family

Qualcomm Support

Rockchip RK2928 and RK3xxx SOCs

Altera SOCFPGA family

ST SPEAr Family

STMicroelectronics Consumer Electronics SOCs

Samsung S5PV210/S5PC110 

Samsung EXYNOS

Renesas ARM SoCs

Allwinner SoCs

CSR SiRF

NVIDIA Tegra

ST-Ericsson U8500 Series

ARM Ltd. Versatile Express family

WonderMedia WM8850

Xilinx Zynq ARM Cortex A9 Platform

以上选项为各个硬件厂商的soc支持

#===============================================

Support for the Large Physical Address Extension

        支持大型物理地址扩展,如果您有一个支持LPAE页表格式的ARMv7处理器,并且您希望访问超过4GB限制的内存,请选择Y。生成的内核映像不会在没有LPA扩展的处理器上运行。 

Support Thumb user binaries

        支持Thumb用户二进制文件,如果您希望包含运行用户空间Thumb二进制文件的内核支持,请选择Y。Thumb指令集是标准ARM指令集的一种压缩形式,以稍低效率的代码为代价生成较小的二进制文件。如果你不知道这一切是什么,说Y是一个安全的选择。

Enable ThumbEE CPU extension

        启用ThumbEE CPU扩展

Emulate SWP/SWPB instructions

        模拟SWP/SWPB指令

Disable I-Cache (I-bit)

        禁用I-Cache(I-bit),在这里说Y以禁用处理器指令缓存。除非你有理由不去或不确定,否则说N。

Disable branch prediction

        禁用分支预测

Enable kuser helpers in vector page

        在矢量页面中启用kuser助手

Enable VDSO for acceleration of some system calls

        启用VDSO以加速某些系统调用

Enable the L2x0 outer cache controller

        启用L2x0外部缓存控制器

PL310 errata: Clean & Invalidate maintenance operations do not invalidate clean lines

        PL310勘误表:清洁和失效维护操作不会使清洁管线失效

PL310 errata: Background Clean & Invalidate by Way operation can cause data corruption

        PL310勘误表:后台清理和顺便失效操作可能导致数据损坏

PL310 errata: cache sync operation may be faulty

        PL310勘误表:缓存同步操作可能有故障

PL310 errata: no automatic Store Buffer drain

        PL310勘误表:无自动存储缓冲区排放

Restrict kernel memory permissions

        限制内核内存权限

ARM errata: Stale prediction on replaced interworking branch

        ARM勘误表:替换互通分支的过时预测

ARM errata: LoUIS bit field in CLIDR register is incorrect

        ARM错误:CLIDR寄存器中的LoUIS位字段不正确

ARM errata: TLBIASIDIS and TLBIMVAIS operations can broadcast a faulty ASID

        ARM勘误表:TLBIASIDIS和TLBIMVAIS操作可以广播故障ASID

ARM errata: possible faulty MMU translations following an ASID switch

        ARM勘误表:ASID开关后可能存在MMU转换故障

ARM errata: no automatic Store Buffer drain

        ARM勘误表:无自动存储缓冲区排放

ARM errata: Data cache line maintenance operation by MVA may not succeed

        ARM勘误表:MVA的数据缓存线维护操作可能不会成功

ARM errata: A data cache maintenance operation which aborts, might lead to deadlock

        ARM错误:数据缓存维护操作中止,可能导致死锁

ARM errata: TLBI/DSB failure on Cortex-A15

        ARM勘误表:Cortex-A15上的TLBI/DSB故障

ARM errata: incorrect instructions may be executed from loop buffer

        ARM勘误表:可能从循环缓冲区执行错误的指令

ARM errata: Cache maintenance by set/way operations can execute out of order

        ARM勘误表:按集合/方式操作的缓存维护可能会无序执行

Bus support

PCI support 

了解您是否有PCI主板。PCI是总线系统的名称,即CPU与机箱内其他设备进行通信的方式。其他总线系统包括ISA、EISA、MicroChannel(MCA)或VESA。如果你有PCI,说Y,否则说N。

PCCard (PCMCIA/CardBus) support

如果您想将PCMCIA或PC卡连接到您的Linux计算机,请在此处输入Y。这些是信用卡大小的设备,如网络卡、调制解调器或硬盘,通常与笔记本电脑一起使用。实际上,这些卡有两种:16位PCMCIA卡和32位CardBus卡。

Kernel Features

 

Symmetric Multi-Processing

        这支持具有多个CPU的系统。如果你有一个只有一个CPU的系统,请说N。如果你的系统有多个CPU,请说Y。如果你在这里说N,内核将在单处理器和多处理器机器上运行,但在多处理器机器中只使用一个CPU。如果您在这里说Y,内核将在许多但不是所有的单处理器机器上运行。在单处理器机器上,如果在这里说N,内核将运行得更快。

Allow booting SMP kernel on uniprocessor systems

        SMP内核包含在非SMP处理器上失败的指令。启用此选项允许内核修改自身以使这些指令安全。禁用它可以节省大约1K的空间。

Support cpu topology definition

        支持ARM cpu拓扑定义。MPIDR寄存器定义处理器之间的相关性,然后用于描述ARM系统的cpu拓扑。

Multi-core scheduler support

        多核调度器支持提高了CPU调度器在处理多核CPU芯片时的决策能力,但某些地方的开销略有增加。如果不确定,在这里说N。

SMT scheduler support

        改进了CPU调度程序在处理多线程时的决策,但某些地方的开销略有增加。如果不确定,在这里说N。

Architected timer support

        此选项支持ARM架构的计时器

Multi-Cluster Power Management 

        此选项为基于(多)集群的系统(如基于big.LITLE的系统)提供了通用电源管理基础设施。

big.LITTLE support (Experimental)

        此选项启用big.LITLE系统体系结构的支持选择。

Memory split (2G/2G user/kernel split)  --->

        内存拆分,如果你不能绝对确定你在做什么,就别提这个选项了!

(4) Maximum number of CPUs (2-32)

        最大CPU数量

Support for hot-pluggable CPUs

        支持热插拔CPU

Support for the ARM Power State Coordination Interface (PSCI)

        如果您希望Linux与ARM文档编号ARM DEN 0022A(“ARM处理器上的电源状态协调接口系统软件”)中描述的以CPU为中心的电源管理操作的PSCI规范的系统固件通信,请在此处输入Y。

Preemption Model (Preemptible Kernel (Low-Latency Desktop))

        抢占模型(抢占内核(低延迟桌面))

Timer frequency (100 Hz)  --->

        计时器频率

Compile the kernel in Thumb-2 mode

        通过启用此选项,内核将以Thumb-2模式编译。需要了解统一ARM Thumb语法的编译器/汇编器。

Use the ARM EABI to compile the kernel

        该选项允许使用最新的ARM ABI(又名EABI)编译内核。这仅在您使用的用户空间环境也使用EABI编译时有用。由于遗留ABI和EABI之间存在严重的不兼容性,特别是在结构成员对齐方面,该选项还更改了内核系统调用约定,以消除两个ABI的歧义,并允许向后兼容支持(使用CONFIG_OABI_COMPAT选择)。要使用此功能,您需要GCC 4.0.0或更高版本。

Allow old ABI binaries to run with this kernel (EXPERIMENTAL)

        此选项将保留旧的系统调用接口和新的(ARM EABI)接口。它还提供了一个兼容层来拦截具有结构参数的系统调用,这些参数在内存中的布局在传统ABI和新的ARMEABI之间有所不同(仅适用于非“thumb”二进制文件)。这个选项会给所有系统调用增加一点开销,并产生一个稍大的内核。当选择此选项时,seccomp筛选器系统将不可用,因为在筛选过程中还没有办法区分调用约定。如果你知道你将只使用纯EABI用户空间,那么你可以在这里说N。如果未选择此选项,并且您尝试执行遗留的ABI二进制文件,则结果将是不可预测的(事实上,可以预测它根本不起作用)。如果有疑问,请说N。

High Memory Support

        ARM处理器的地址空间只有4千兆字节大,它必须容纳用户地址空间、内核地址空间以及一些内存映射IO。这意味着,如果您拥有大量物理内存和/或IO,并非所有内存都可以由内核“永久映射”。未永久映射的物理内存称为“高内存”。根据所选择的内核/用户内存分割、最小vmalloc空间和实际的RAM量,您可能不需要此选项,这会导致内核速度稍微加快。

Allocate 2nd-level pagetables from highmem

        从highmem分配第二级页表

Enable hardware performance counter support for perf events

        为性能事件启用硬件性能计数器支持。如果禁用,perf事件将仅使用软件事件。

Allow for memory compaction

        允许压缩内存以分配巨大的页面。

Page migration

        允许在不更改虚拟地址的情况下迁移进程页面的物理位置。这在两种情况下都很有用。第一种是在NUMA系统上,使页面更接近处理器访问。第二种是当分配巨大的页面时,迁移可以重新定位页面以满足巨大的页面分配而不是回收。

Enable bounce buffers

        为无法访问CPU可用的全部内存范围的设备启用缓冲区。当选择ZONE_DMA或HIGHMEM时,默认情况下启用,但您可以说n来覆盖此选项。

Enable KSM for page merging

        启用内核同步合并:KSM定期扫描应用程序地址空间中应用程序建议可能可合并的区域。当它找到相同内容的页面时,它会用一个页面替换多个实例,从而节省内存,直到一个或另一个应用程序需要修改内容。建议与KVM或其他复制应用程序一起使用。有关更多信息,请参阅文档/vm/ksm.txt:ksm处于非活动状态,直到程序验证区域为MADV_MERGEABLE,并且root将/sys/kernel/mm/ksm/run设置为1(如果设置了CONFIG_SYSFS)。

(4096) Low address space to protect from user allocation

        这是低虚拟内存的一部分,应防止用户空间分配。防止用户写入低页可以帮助减少内核NULL指针错误的影响。对于具有大量地址空间的大多数ia64、ppc64和x86用户,65536的值是合理的,应该不会造成任何问题。在ARM和其他架构上,它不应高于32768。使用vm86功能或需要映射此低地址空间的程序将需要CAP_SYS_RAWIO或通过将值设置为0来禁用此保护。可以在启动后使用/proc/sys/vm/mmap_min_addr可调参数更改此值。

Enable cleancache driver to cache clean pages if tmem is present

        Cleancache可以被认为是一个页面粒度受害者缓存,用于内核的页面帧替换算法(PFRA)希望保留的干净页面,但由于内存不足,无法保留。因此,当PFRA“驱逐”页面时,它首先尝试使用cleancache代码将该页面中包含的数据放入“超验内存”,即内核无法直接访问或寻址的内存,其大小未知且可能随时间变化。当启用了cleancache的文件系统希望访问磁盘上文件中的页面时,它首先检查cleancache,看看它是否已经包含该页面;如果这样做了,页面将被复制到内核中,并避免磁盘访问。当超验内存驱动程序可用时(例如zcache或Xen超验内存),可以实现显著的I/O减少。如果没有可用的,则所有cleancache调用都将减少为一个指针,与NULL进行比较,从而导致可忽略的性能影响。如果不确定,请说Y以启用cleancache

Enable frontswap to cache swap pages if tmem is present

        Frontswap之所以如此命名,是因为它可以被认为是交换设备的“后备”存储的反面。数据存储在“超验存储器”中,这是一种内核无法直接访问或寻址的存储器,其大小未知且可能随时间变化。当超验存储器中的空间可用时,可以实现显著的交换I/O减少。如果没有可用的,则所有frontswap调用都将减少为一个指针,与NULL进行比较,从而导致可忽略的性能命中,并且交换数据将正常存储在匹配的交换设备上。如果不确定,请说Y以启用frontswap。

Contiguous Memory Allocator

        这启用了连续内存分配器,它允许其他子系统分配大的物理连续内存块。CMA保留了一个内存区域,只允许从中分配可移动页面。这样,内核可以将内存用于页面缓存,当子系统请求连续区域时,分配的页面将被迁移,以满足连续请求。

CMA debug messages (DEVELOPMENT) 

        在CMA中打开调试消息。这将为每个CMA调用生成KERN_DEBUG消息,并在处理调用(如dma_alloc_from_tiguous())时生成各种消息。此选项不影响警告和错误消息。

CMA debugfs interface

        打开CMA的DebugFS接口。

(7)   Maximum count of the CMA areas

        CMA允许为特定目的创建CMA区域,主要用作设备专用区域。此参数设置系统中CMA区域的最大数量。如果不确定,保留默认值“7”。

Common API for compressed memory storage

        压缩内存存储API。这允许使用zbud或zsmalloc。

Low density storage for compressed pages

        用于存储压缩页的专用分配器。它被设计为每个物理页面最多存储两个压缩页面。虽然这种设计限制了存储密度,但它具有简单且确定的回收财产,这使得在使用回收时,它比更高密度的方法更可取。

Memory allocator for compressed pages

        zsmalloc是一个基于slab的内存分配器,用于存储压缩的RAM页面。zsmalloc使用虚拟内存映射来减少碎片。然而,这会导致一个非标准的分配器接口,alloc()返回句柄而不是指针。必须映射此句柄才能访问分配的空间。

Use kernel mem{cpy,set}() for {copy_to,clear}_user()

        为CPU核心实现更快的copy_to_user和clear_user方法,其中8字STM指令比单个32位存储序列提供更高的内存写入吞吐量。一个可能的副作用是,如果共享相同地址空间的线程使用大缓冲区调用此类复制操作,则它们之间的调度延迟会略有增加。但是,如果CPU数据缓存使用写分配模式,则此选项不太可能提供任何性能增益。

Enable seccomp to safely compute untrusted bytecode

        这个内核特性对于在执行过程中可能需要计算不可信字节码的数字处理应用程序非常有用。通过使用进程可用的管道或其他传输作为支持读/写系统调用的文件描述符,可以使用seccomp将这些应用程序隔离在自己的地址空间中。一旦通过prctl(PR_SET_seccomp)启用seccomp,它就不能被禁用,并且该任务只能执行由每个seccomp模式定义的几个安全系统调用。

Xen guest support on ARM

        如果您想在ARM上的Xen上的虚拟机上运行Linux,请选择Y。

Boot options

Flattened Device Tree support

        包括对扁平设备树机器描述的支持。

Support for the traditional ATAGS boot data passing

        这是在启动时向内核传递数据的传统方式。如果您只依赖扁平化的设备树(或ARM_ATAG_DTB_COMPAT选项),则可以取消选择此选项以从内核二进制文件中删除ATAGS支持。如果不确定,请将此项留给y。

Provide old way to pass kernel parameters

        这在2001年被弃用,并宣布将持续5年。一些旧的引导加载程序仍然使用这种方式。

(0) Compressed ROM boot loader base address

        ROM zImage要放置在目标中的物理地址。通常使用ROM支持的zImage格式的平台通常在其defconfig文件中将其设置为适当的值。如果未启用ZBOOT_ROM,则此操作无效。

(0) Compressed ROM boot loader BSS address

        目标中的读/写存储器区域的基址,用于在解压缩器运行时必须可用的可ROM zImage。它必须足够大,以容纳整个解压缩内核加上额外的128KiB。通常使用ROM支持的zImage格式的平台通常在其defconfig文件中将其设置为适当的值。如果未启用ZBOOT_ROM,则此操作无效。

Use appended device tree blob to zImage (EXPERIMENTAL)

        使用此选项,引导代码将查找附加到zImage的设备树二进制文件(DTB)(例如cat zImage<filename>.DTB>zImage_w_DTB)。这意味着对于那些具有引导加载程序的系统来说,向后兼容是一种方便,而引导加载程序无法升级以适应使用设备树记录的引导协议。请注意,如果zImage中没有附加实际的DTB,那么内存中的剩余垃圾可能会在重新启动后看起来像DTB标头,因此在保护这个选项方面几乎没有。如果您不打算总是附加DTB,请不要在生产内核中保持此选项处于活动状态。正确地将位置传递到提供DTB的引导加载器的r2中总是比此选项更好。 

(noinitrd console=ttymxc0,115200) Default kernel command string

        在某些架构(EBSA110和CATS)上,引导加载程序目前无法向内核传递参数。对于这些体系结构,您应该在构建时通过在此处输入一些命令行选项。至少,您应该指定内存大小和根设备(例如,mem=64M root=/dev/nfs)。

Kernel command line type (Use bootloader kernel arguments if available)  --->

        内核命令行类型(如果可用,请使用bootloader内核参数)

Kexec system call (EXPERIMENTAL)

        kexec是一个系统调用,它实现了关闭当前内核和启动另一个内核的功能。它类似于重新启动,但与系统固件无关。就像重启一样,你可以用它启动任何内核,而不仅仅是Linux。确保机器中的硬件正确关闭是一个持续的过程,因此如果此代码最初不适用于您,请不要感到惊讶。

Build kdump crash kernel (EXPERIMENTAL)

        kexec启动后生成崩溃转储。这通常只能在特殊的崩溃转储内核中设置,这些内核使用kexec工具加载到主内核中的一个特殊保留区域中,然后在kdump/kexec崩溃后执行。崩溃转储内核必须编译到主内核未使用的内存地址。有关详细信息,请参阅Documentation/kdump/kdump.txt

Auto calculation of the decompressed kernel image address

        ZRELADDR是将放置解压缩内核映像的物理地址。如果选择AUTO_ZRELADDR,将在运行时通过用0xf8000000屏蔽当前IP来确定地址。这假设zImage被放置在从内存开始的第一个128MB中。

CPU Power Management

 

CPU Frequency scaling

        CPU频率缩放允许您动态更改CPU的时钟速度。这是一种很好的省电方法,因为CPU时钟速度越低,CPU消耗的电量就越少。请注意,此驱动程序不会自动更改CPU时钟速度,您需要在启动后启用动态cpufreq调控器(见下文),或者使用用户空间工具。有关详细信息,请查看<file:Documentation/cpu-freq>。如果有疑问,请说N。

CPU frequency translation statistics

        此驱动程序通过sysfs文件系统导出CPU频率统计信息。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为cpufreq_stats。

CPU frequency translation statistics details 

        这将在sysfs文件系统中显示详细的CPU频率转换表。

Default CPUFreq governor (ondemand)  --->

'performance' governor

        “性能”调节器

'powersave' governor

        “节能”调速器

'userspace' governor for userspace frequency scaling

        用于用户空间频率缩放的“用户空间”调控器

'ondemand' cpufreq policy governor

        “ondemand”cpufreq策略调控器

'interactive' cpufreq policy governor

        “交互式”cpufreq策略调控器

'conservative' cpufreq governor

        “保守”cpufreq调速器

*** CPU frequency scaling drivers ***

Generic DT based cpufreq driver

        这为频率管理添加了一个通用的基于DT的cpufreq驱动程序。它支持单处理器(UP)和对称多处理器(SMP)系统,它们在所有CPU上共享时钟和电压。

Freescale i.MX6 cpufreq support

Freescale i.MX7 cpufreq support

CPU frequency scaling driver for Freescale QorIQ SoCs

 

CPU idle PM support

        CPU空闲是支持软件控制的空闲处理器电源管理的通用框架。它包括可以在运行时交换的模块化跨平台调控器。如果您使用的是支持ACPI的平台,您应该在这里说Y。

Ladder governor (for periodic timer tick)

        梯型调速器(用于周期性计时器刻度)

Menu governor (for tickless system)

        菜单调节器

ARM CPU Idle Drivers  --->

        -Generic ARM/ARM64 CPU idle Driver

                选择此选项可为ARM启用通用cpuide驱动程序。它提供了一个通用的空闲驱动程序,其空闲状态在运行时通过DT节点进行配置。CPUidle suspend后端通过调用体系结构代码提供的CPU操作init idle hook来初始化。

Floating point emulation

*** At least one emulation must be selected ***

VFP-format floating point maths

        说Y在内核中包含VFP支持代码。如果您的硬件包含VFP单元,则需要此选项。有关发行说明和其他状态信息,请参阅<file:Documentation/arm/VFP/releasenotes.txt>。如果您的目标没有VFP硬件,请说N。

Advanced SIMD (NEON) Extension support

        说Y包括NEON的支持代码,即ARMv7高级SIMD扩展。

Support for NEON in kernel mode

        说Y,以在内核模式中包含对NEON的支持。

Userspace binary formats

Kernel support for ELF binaries

        ELF(可执行和可链接格式)是用于跨不同体系结构和操作系统使用的库和可执行文件的格式。在这里说Y将使内核能够运行ELF二进制文件,并将其放大约13KB。Linux下的ELF支持现在几乎已经取代了传统的Linuxa.out格式(QMAGIC和ZMAGIC),因为它是可移植的(但这并不意味着您可以从不同的体系结构或操作系统运行可执行文件),并且使构建运行时库变得非常容易。许多新的可执行文件仅以ELF格式分发。你肯定想在这里说Y。有关ELF的信息包含在ELF HOWTO中,可从<http://www.tldp.org/docs.html#howto>.  如果您发现在从Linux内核1.2升级并在这里说“是”之后,仍然无法运行任何ELF二进制文件(它们只是崩溃),那么您必须安装最新的ELF运行库,包括ld.so(查看文件<file:Documentation/Changes>以了解位置和最新版本)。

Write ELF core dumps with partial segments

        ELF核心转储文件描述了崩溃进程的每个内存映射,并且可以包含或忽略每个进程的内存内容。默认情况下,将省略未修改的文本映射的内容。对于ELF对象的未修改文本映射,仅在核心转储中包含文件的第一页,就可以识别文件中的构建ID位,而无需支付i/o成本和磁盘空间来转储所有文本。然而,6.7之前的GDB版本被这种格式的ELF核心转储文件所混淆。可以使用/proc/PID/coredump_filter伪文件控制每个进程的核心转储行为;此设置被继承。有关详细信息,请参阅Documentation/filess/proc.txt。此配置选项更改启动时看到的coredump_filter的默认设置。如果不确定,请说Y。

Kernel support for scripts starting with #!

        如果要执行以#!然后是到解释器的路径。您可以将此支持构建为一个模块;但是,在加载该模块之前,您不能运行脚本。因此,如果要从initramfs加载此模块,则在加载此模块之前,initramfs的部分必须仅包含编译的二进制文件。如果你在这里说M或N,大多数系统都不会启动。如果不确定,请说Y。

Kernel support for MISC binaries

        如果您在这里说Y,则可以将包装器驱动的二进制格式插入内核。当您使用需要解释器才能运行的程序(如Java、Python、.NET或Emacs Lisp)时,您会特别喜欢这一点。如果您经常在Linux DOS仿真器DOSEMU下运行DOS可执行文件(请阅读DOSEMU-HOWTO,可从<http://www.tldp.org/docs.html#howto>). 一旦向内核注册了这样一个二进制类,只需在shell提示符下键入其名称即可启动其中一个程序;Linux将自动将其提供给正确的解释器。你也可以做其他好事。阅读文件<file:Documentation/binfmt_misc.txt>了解如何使用此功能,<file:DDocumentation/java.txt>了解如何包含java支持的信息。和<file:Documentation/mono.txt>,了解有关如何包含基于mono的.NET支持的信息。要使用binfmt_misc,您需要挂载它:mount binfmt_misc-t binfmt_misc/proc/sys/fs/binfmt_micc您可以在这里说M,以获得模块支持,稍后在使用它时加载模块;该模块称为binfmt_misc。如果你现在不知道该回答什么,就说Y。

Enable core dump support

        此选项支持执行核心转储。你几乎肯定想在这里说Y。在从不需要调试或只运行完美代码的系统上不需要。

Power management options

Suspend to RAM and standby

        允许系统进入休眠状态,在休眠状态下,主存储器通电,从而保留其内容,例如暂停到RAM状态(例如ACPI S3状态)。

Hibernation (aka 'suspend to disk') 

        休眠(又名“挂起到磁盘”)

Opportunistic sleep

        当没有活动的唤醒源时,允许内核自动触发系统转换到全局睡眠状态。

User space wakeup sources interface

        允许用户空间在基于sysfs的界面的帮助下创建、激活和停用唤醒源对象。

Device power management core functionality

        启用允许I/O设备进入节能(低功耗)状态的功能,例如在指定的非活动时间段(自动暂停)后,并响应硬件生成的唤醒事件或驱动程序的请求而唤醒。此功能通常需要硬件支持,设备所在总线的总线类型驱动程序负责设备挂起请求和唤醒事件的实际处理。

Power Management Debug Support

        此选项启用电源管理代码中的各种调试支持。这在调试和报告PM错误(如暂停支持)时非常有用。

Extra PM attributes in sysfs for low-level debugging/testing

        添加额外的sysfs属性,允许用户从用户空间访问设备对象的某些电源管理字段。如果您不是对调试/测试电源管理感兴趣的内核开发人员,请说“不”。

Test suspend/resume and wakealarm during bootup

        此选项将允许您在启动期间暂停机器,并在几秒钟后使用RTC唤醒警报将其唤醒。使用类似“test_suspend=mem”的内核参数启用此功能。您可能希望静态链接系统的RTC驱动程序,以确保在测试运行时可用。

Advanced Power Management Emulation

        高级电源管理仿真

Enable workqueue power-efficient mode by default

        默认情况下启用工作队列节能模式

Networking support

Networking options  --->

 

 

-Packet socket

        分组协议由直接与网络设备通信的应用程序使用,而无需在内核中实现中间网络协议,例如tcpdump。如果您希望它们工作,请选择Y。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为af_packet。

-Packet: sockets monitoring interface

        支持ss工具使用的PF_PACKET套接字监视接口。如果不确定,请说Y。

-Unix domain sockets

        如果你在这里说Y,你将包括对Unix域套接字的支持;套接字是建立和访问网络连接的标准Unix机制。即使您的计算机未连接到任何网络,许多常用程序(如X Window系统和syslog)也会使用这些套接字。除非您正在使用嵌入式系统或类似的系统,否则您肯定想在这里说Y。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为unix。注意,如果您在这里说M,然后忽略加载模块,那么几个重要的服务将无法正常工作。除非你知道自己在做什么,否则说“是”。

-UNIX: socket monitoring interface

        支持ss工具使用的UNIX套接字监视接口。如果不确定,请说Y。

-Transformation user configuration interface

        支持本机Linux工具使用的转换(XFRM)用户配置界面(如IPsec)。

-Transformation sub policy support

        支持开发人员的子策略。通过将子策略与主策略一起使用,可以同时将两个策略应用于同一数据包。在内核中生存时间更短的策略应该是子策略。

-Transformation migrate database

        动态更新给定IPsec安全关联的定位器的功能。例如,在具有IPsec配置的移动IPv6环境中,移动节点更改其到Internet的连接点时,需要此功能。

-Transformation statistics

        此统计信息不是SNMP/MIB规范,但显示了开发人员在数据包处理过程中有关转换错误(或几乎错误)因素的统计信息。

-PF_KEY sockets

        PF_KEYv2 socket 系列,兼容KAME socket 。如果您要使用从KAME移植的IPsec工具,则需要它们。除非你知道自己在做什么,否则说“是”。

-TCP/IP networking

        这些是Internet和大多数本地以太网上使用的协议。强烈建议在这里说Y(这将使您的内核扩大约400 KB),因为有些程序(例如X窗口系统)使用TCP/IP,即使您的计算机未连接到任何其他计算机。你会得到一个所谓的回送设备,它可以让你自己ping(非常有趣!)。有关Linux网络的精彩介绍,请阅读Linux网络HOWTO,可从<http://www.tldp.org/docs.html#howto>. 如果您在这里说“是”,并在下面说“/proc文件系统支持”和“Sysctl支持”,您可以通过向/proc/sys/net/ipv4/*中的(虚拟)文件写入来更改TCP/IP代码行为的各个方面;这些选项在文件<file:Documentation/networking/ipsysctl.txt>中进行了解释。

-IP: multicasting

        这是一个同时寻址多台联网计算机的代码,可以将内核扩展大约2KB。如果你想参加MBONE,你需要多播,MBONE是一个在互联网上的高带宽网络,可以播放音频和视频广播。有关MBONE的更多信息,请访问WWW<http://www.savetz.com/mbone/>. 对大多数人来说,说N是安全的。

-IP: advanced router

        如果你打算将你的Linux盒子主要作为路由器运行,即作为转发和重新分发网络数据包的计算机运行,请说Y;然后,您将看到几个选项,这些选项允许对路由过程进行更精确的控制。这个问题的答案不会直接影响内核:回答N只会导致配置器跳过所有关于高级路由的问题。注意,如果您在内核中启用IP转发,您的盒子只能充当路由器;您可以通过对下面的“/proc文件系统支持”和“Sysctl支持”说Y并执行该行 echo“1”>/proc/sys/net/ipv4/ip_forward。在安装/proc文件系统后的启动时。如果启用IP转发,应该考虑rp_filter,如果源地址的路由表条目与到达的网络接口不匹配,它会自动拒绝传入的数据包。这具有安全优势,因为它可以防止所谓的IP欺骗,然而,如果您使用非对称路由(从您到主机的数据包与从该主机到您的数据包采用不同的路径),或者如果您操作的是在不同接口上具有多个IP地址的非路由主机,则可能会产生问题。要启用rp_filter,请使用:echo 1>/proc/sys/net/ipv4/conf/<device>/rp_filter或
echo 1>/proc/sys/net/ipv4/conf/all/rp_filter。注意,一些发行版在启动脚本中启用了它。有关rp_filter严格和松散模式的详细信息,请阅读<file:Documentation/networking/ipsysctl.txt>。如果不确定,请在此处输入N。

-IP: kernel level autoconfiguration

        这使得能够根据内核命令行或BOOTP或RARP协议提供的信息,在内核引导期间自动配置设备的IP地址和路由表。您只需要对需要网络访问才能启动的无盘机器说Y(在这种情况下,您还需要对“NFS上的根文件系统”说Y),因为所有其他机器都在其启动脚本中配置网络。

-IP: DHCP support

        如果您希望您的Linux设备通过NFS从网络上的其他计算机装载其整个根文件系统(包含目录/的文件系统),并且您希望在启动时使用DHCP协议(为执行此任务而设计的特殊协议)自动发现您的计算机的IP地址,请在此处输入Y。如果网卡的引导ROM是为引导Linux而设计的,并且是DHCP本身,在内核命令行上提供所有必要的信息,您可以在这里说N。如果不确定,请说Y。注意,如果要使用DHCP,则必须在网络上运行DHCP服务器。阅读<file:Documentation/filess/nfs/nfsroot.txt>了解详细信息。

-IP: BOOTP support

        如果您希望您的Linux设备通过NFS从网络上的其他计算机装载其整个根文件系统(包含目录/的文件系统),并且您希望在启动时使用BOOTP协议(一种为执行此任务而设计的特殊协议)自动发现计算机的IP地址,请在此处输入Y。如果网卡的引导ROM是为引导Linux而设计的,并且是BOOTP本身,在内核命令行上提供所有必要的信息,您可以在这里说N。如果不确定,请说Y。注意,如果要使用BOOTP,BOOTP服务器必须在网络上运行。阅读<file:Documentation/filess/nfs/nfsroot.txt>了解详细信息。

-IP: RARP support

        如果您希望您的Linux设备通过NFS从网络上的其他计算机装载其整个根文件系统(包含目录/的文件系统),并且您希望在启动时使用RARP协议(一种已被BOOTP和DHCP淘汰的旧协议)自动发现计算机的IP地址,请在此处输入Y。注意,如果您想使用RARP,RARP服务器必须在您的网络上运行。阅读<file:Documentation/filess/nfs/nfsroot.txt>了解详细信息。

-IP: tunneling

        隧道意味着将一种协议类型的数据封装在另一种协议中,并通过理解封装协议的信道发送。这个特定的隧道驱动程序实现了IP内的IP封装,这听起来有点无意义,但如果你想让你的(或其他)机器出现在与实际不同的网络上,或者使用移动IP设施(允许笔记本电脑在网络之间无缝移动,而不改变其IP地址),这可能很有用。对这个选项说Y将产生两个模块(=可以随时插入运行的内核或从运行的内核中删除的代码)。大多数人不需要这个,可以说N。

-IP: GRE demultiplexer

        这是根据GRE版本字段标准解复用GRE数据包的助手模块。ip_gre和pptp模块需要。

-IP: TCP syncookie support

        正常的TCP/IP网络容易受到称为“SYN洪泛”的攻击。这种拒绝服务攻击阻止了合法的远程用户在持续攻击期间连接到您的计算机,并且只需要攻击者很少的工作,攻击者可以在Internet上的任何位置进行操作。SYN cookie可防止此类攻击。如果您在这里说“是”,TCP/IP堆栈将使用称为“SYN cookie”的加密挑战协议,使合法用户能够继续连接,即使您的计算机受到攻击。合法用户无需更改其TCP/IP软件;SYN cookie对它们透明。有关SYN cookie的技术信息,请查看<http://cr.yp.to/syncookies.html>.  如果您被SYN淹没,内核报告的源地址很可能是攻击者伪造的;它仅被报告为帮助跟踪数据包到其实际来源,而不应被视为绝对真实。当服务器确实过载时,SYN cookie可能会阻止客户端上的正确错误报告。如果经常发生这种情况,最好将其关闭。如果您在这里说Y,您可以在运行时禁用SYN cookie,方法是对下面的“/proc file system support”和“Sysctl support”说Y,并在安装/proc文件系统后执行

echo 0>/proc/sys/net/ipv4/tcp_syncookies命令。如果不确定,请说N。

-IP: Foo (IP protocols) over UDP

        UDP上的Foo允许通过UDP直接封装任何IP协议,包括隧道(IPIP、GRE、SIT)。通过封装UDP网络机制和UDP优化(如ECMP和RSS),可以提供更好的服务。

-IP: FOU encapsulation of IP tunnels

        允许为IP隧道配置FOU或GUE封装。启用此选项后,可以将IP隧道配置为使用FOU或GUE封装。

-Generic Network Virtualization Encapsulation (Geneve)

        这允许创建Geneve虚拟接口,该接口在第3层网络上提供第2层网络。Geneve通常用于虚拟化环境中的虚拟网络基础设施。有关详细信息,请参阅:http://tools.ietf.org/html/draft-gross-geneve-01要将此驱动程序编译为模块,请在此处选择M:模块

-IP: AH transformation

        支持IPsec AH。

-IP: ESP transformation

        支持IPsec ESP。

-IP: IPComp transformation

        支持IPsec通常需要的IP有效负载压缩协议(IPComp)(RFC3173)。

-IP: IPsec transport mode

        支持IPsec传输模式。

-IP: IPsec tunnel mode

        支持IPsec隧道模式。

-IP: IPsec BEET mode

        支持IPsec BEET模式。

-Large Receive Offload (ipv4/tcp)

        支持大接收负载(ipv4/tcp)。

-INET: socket monitoring interface

        支持由ss等本机Linux工具使用的INET(TCP、DCCP等)套接字监控接口。ss包含在iproute2中,目前可在以下网站下载:http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2

-UDP: socket monitoring interface

        支持ss工具使用的UDP套接字监控接口。如果不确定,请说Y。

-TCP: advanced congestion control

        支持选择各种TCP拥塞控制模块。几乎所有的用户都可以在这里安全地说“不”,并且将进行安全的默认选择(CUBIC和新的Reno作为备用)。

-TCP: MD5 Signature Option support (RFC2385)

        RFC2385指定了一种为TCP会话提供MD5保护的方法。它的主要(唯一)用途是保护Internet上核心路由器之间的BGP会话。

-The IPv6 protocol  --->

 --IPv6: Router Preference (RFC 4191) support

        路由器首选项是路由器广告消息的可选扩展,它提高了主机选择适当路由器的能力,特别是当主机位于多主网络中时。

--IPv6: Enable RFC 4429 Optimistic DAD

        这是对乐观重复地址检测的实验支持。它允许更快地使用自动配置的地址。

--IPv6: AH transformation

--IPv6: ESP transformation

--IPv6: IPComp transformation

--IPv6: Mobility

--IPv6: IPsec transport mode

--IPv6: IPsec tunnel mode

--IPv6: IPsec BEET mode

--IPv6: MIPv6 route optimization mode

        支持MIPv6路由优化模式。

--Virtual (secure) IPv6: tunneling

        隧道意味着将一种协议类型的数据封装在另一种协议中,并通过理解封装协议的信道发送。这可以与xfrm模式隧道一起使用,为IPSEC提供安全隧道的概念,然后在顶部使用路由协议。

--IPv6: IPv6-in-IPv4 tunnel (SIT driver)

        隧道意味着将一种协议类型的数据封装在另一种协议中,并通过理解封装协议的信道发送。此驱动程序将IPv6封装为IPv4数据包。如果您想通过仅IPv4的路径连接两个IPv6网络,这非常有用。在这里说M将产生一个名为sit的模块。如果不确定,请说Y。

--IPv6: IPv6 Rapid Deployment (6RD)

        IPv6快速部署(6rd;draft-ietf-softwire-IPv6-6rd)建立在6to4(RFC3056)机制的基础上,以使服务提供商能够将IPv6单播服务快速部署到其提供客户驻地设备的IPv4站点。与6to4一样,它在IPv4封装中使用无状态IPv6,以传输仅IPv4的网络基础设施。与6to4不同,6rd服务提供商使用自己的IPv6前缀代替固定的6to4前缀。启用此选项后,SIT驱动程序通过提供额外的ioctl API来配置IPv6前缀,而不是为6to4配置静态2002::/16,从而提供了第6个功能。

--IPv6: IP-in-IPv6 tunnel (RFC2473)

        支持RFC 2473中描述的IPv6-in-IPv6和IPv4-IPv6隧道。

--IPv6: GRE tunnel

        隧道意味着将一种协议类型的数据封装在另一种协议中,并通过理解封装协议的信道发送。这个特定的隧道驱动程序实现了GRE(通用路由封装),此时允许在现有IPv6基础设施上封装IPv4或IPv6。如果另一个端点是Cisco路由器,这个驱动程序很有用:Cisco比其他Linux隧道驱动程序(上面的“IP隧道”)更喜欢GRE。此外,GRE允许通过隧道进行多播再分配。在这里说M将生成一个名为ip6_gre的模块。如果不确定,请说N。

--IPv6: Multiple Routing Tables

        支持多个路由表。

--IPv6: multicast routing

        实验性支持IPv6多播转发。如果不确定,请说N。

-Security Marking

        这允许对网络数据包进行安全标记,类似于nfmark,但被指定用于安全目的。如果您不确定如何回答这个问题,请回答N。

-Timestamping in PHY devices

        这允许通过具有硬件时间戳功能的PHY对网络分组进行时间戳。此选项在发送和接收路径中增加了一些开销。如果您不确定如何回答这个问题,请回答N。

-Network packet filtering framework (Netfilter)

        Netfilter是一个用于过滤和篡改通过Linux机箱的网络数据包的框架。数据包过滤最常用的方法是将Linux盒作为防火墙运行,以保护本地网络不受Internet的影响。这种内核支持提供的防火墙类型称为“数据包过滤器”,这意味着它可以根据类型、源、目的地等拒绝单个网络数据包。另一种防火墙是“基于代理的”防火墙,它更安全,但更具侵入性,设置起来更麻烦;它更密切地检查网络流量,对其进行修改,并了解分组过滤器所缺乏的更高级别的协议。此外,基于代理的防火墙通常需要更改本地客户端上运行的程序。基于代理的防火墙不需要内核的支持,但它们通常与数据包过滤器相结合,只有当您在这里说“Y”时,它才起作用。如果您打算使用您的Linux箱作为没有全局有效IP地址的本地计算机网络的Internet网关,您也应该在这里说Y。这被称为“伪装”:如果本地网络上的一台计算机想要向外部发送信息,您的计算机可以“伪装”为该计算机,即它将流量转发到预期的外部目的地,但修改数据包,使其看起来像来自防火墙箱本身。这两种方式都有效:如果外部主机回复,Linux箱将默默地将流量转发到正确的本地计算机。这样,您本地网络上的计算机对外部世界是完全不可见的,即使它们可以到达外部并接收回复。甚至可以使用端口转发机制从伪装的本地网络中运行全局可见的服务器。伪装也通常被称为NAT(网络地址转换)。Netfilter的另一个用途是透明代理:如果本地网络上的机器试图连接到外部主机,您的Linux系统可以将流量透明地转发到本地服务器,通常是缓存代理服务器。Netfilter的另外一个用途就是构建桥接防火墙。使用启用了网络数据包过滤的网桥可以让iptables“看到”桥接的流量。对于通过网桥在较低网络和以太网协议上进行过滤,请使用ebtables(在网桥netfilter配置下)。netfilter有各种模块,它们取代了以前的伪装(ipmasqadm)、包过滤(ipchains)、透明代理和端口转发机制。有关这些包的位置,请参阅“iptables”下的<file:Documentation/Changes>。

-The DCCP Protocol

        数据报拥塞控制协议(RFC 4340)来自http://www.ietf.org/rfc/rfc4340.txt:数据报拥塞控制协议(DCCP)是一种传输协议,它实现了拥塞控制、不可靠数据报的双向单播连接。它应该适合流媒体、互联网电话和在线游戏等应用程序使用。要将此协议支持编译为模块,请在此处选择M:该模块将被称为dccp。

-The SCTP Protocol

        RFC 2960中的流控制传输协议<http://www.ietf.org/rfc/rfc2960.txt>. “SCTP是一种可靠的传输协议,在IP等无连接分组网络之上运行。它为用户提供以下服务:--确认无错误的非重复用户数据传输,--数据分段以符合发现的路径MTU大小,--在多个流中按顺序传递用户消息,并可选择ind的到达顺序ividual用户消息,--可选地将多个用户消息绑定到单个SCTP数据包中,以及--通过在关联的一端或两端支持多归属来实现网络级容错。要将此协议支持编译为模块,请在此处选择M:该模块将被称为sctp。调试消息由内核的动态调试框架处理。

-The RDS Protocol

        RDS(可靠数据报套接字)协议通过Infiniband、iWARP或TCP提供可靠、有序的数据报传输。

-The TIPC Protocol

        透明进程间通信(TIPC)协议专门为集群内通信而设计。该协议源自爱立信,多年来一直在运营商级集群应用中使用。有关TIPC的更多信息,请参阅http://tipc.sourceforge.net.该协议支持也可以作为模块(=代码,可以随时插入运行的内核或从运行的内核中删除)提供。该模块将被称为tipc。如果您想将其编译为模块,请在此处输入M并阅读<file:Documentation/kbuild/modules.txt>。

-Asynchronous Transfer Mode (ATM)

        ATM是局域网和广域网的高速网络技术。它使用固定的数据包大小,并且面向连接,允许协商最小带宽要求。为了参与ATM网络,您的Linux系统需要一张ATM网卡。如果你有,在这里说Y,然后在下面告诉你的ATM卡的司机。注意,您需要一组用户空间程序来实际使用ATM。有关详细信息,请参阅文件<file:Documentation/networking/atm.txt>。

-Layer Two Tunneling Protocol (L2TP)

        RFC 2661中的第二层隧道协议<http://www.ietf.org/rfc/rfc2661.txt>.  L2TP以对最终用户和应用程序尽可能透明的方式,促进了跨介入网络的数据包隧道传输。L2TP通常用于通过IP隧道对PPP流量进行隧道传输。一个IP隧道可以承载数千个单独的PPP连接。L2TP也被用作VPN协议,受家庭工作者欢迎,可以连接到他们的办公室。L2TPv3允许其他协议以及PPP通过L2TP隧道传输。L2TPv3在RFC 3931中定义<http://www.ietf.org/rfc/rfc3931.txt>.   内核组件只处理L2TP数据包:用户域守护进程处理L2TP控制协议(隧道和会话设置)。一个这样的守护程序是OpenL2TP(http://openl2tp.org/). 如果不需要L2TP,请选择N。要将所有L2TP代码编译为模块,请在此处选择M。

-802.1d Ethernet Bridging

        如果您在这里说Y,那么您的Linux机箱将能够充当以太网网桥,这意味着它所连接的不同以太网段对参与者来说将显示为一个以太网。几个这样的网桥可以一起使用IEEE 802.1生成树算法创建更大的以太网络。由于这是一个标准,Linux网桥将与其他第三方网桥产品进行适当的合作。为了使用以太网网桥,您需要网桥配置工具;有关位置,请参阅<file:Documentation/networking/bridge.txt>。有关更多信息,请阅读桥梁迷你HOWTO。如果您在网桥支持的同时启用iptables支持,那么您可以将网桥转换为桥接IP防火墙。iptables将看到正在桥接的IP数据包,因此在设置防火墙规则时需要考虑这一点。当桥接时启用arptables支持将使arptablesFORWARD链中的ARP流量桥接。要将此代码编译为模块,请在此处选择M:该模块将被称为桥。

-802.1Q/802.1ad VLAN Support

        选择此选项,您将能够在以太网接口上创建802.1Q VLAN接口。802.1Q VLAN几乎支持常规以太网接口的所有功能,包括防火墙、桥接,当然还有IP流量。为了有效地使用VLAN,您需要“ip”实用程序。有关更多信息,请参阅VLAN网页:<http://www.candelatech.com/~greear/vlan.html>要将此代码编译为模块,请在此处选择M:该模块将被称为8021q。

-GVRP (GARP VLAN Registration Protocol) support

        选择此选项可启用GVRP端系统支持。GVRP用于将注册的VLAN自动传播到交换机。

-MVRP (Multiple VLAN Registration Protocol) support

        选择此选项可启用MVRP端系统支持。MVRP用于将注册的VLAN自动传播到交换机;它取代GVRP并且不向后兼容。

-DECnet Support

        DECnet网络协议被用于Digital(现在的Compaq)生产的许多产品中。它提供了可靠的流和有序的分组通信,在这些通信上运行与TCP/IP上运行的服务类似的各种服务。要查找一些用于内核层支持的工具,请查看Patrick Caulfield的网站:<http://linux-decnet.sourceforge.net/>.  更详细的文档可以在<file:documentation/networking/decnet.txt>中找到。使用decnet时,请务必在下面的“/proc文件系统支持”和“Sysctl支持”中选择Y,因为您需要Sysctl支持来帮助在运行时进行配置。DECnet代码也可以作为一个模块(=可以随时插入运行的内核或从运行的内核中删除的代码)使用。该模块称为decnet。

-ANSI/IEEE 802.2 LLC type 2 Support

        这是一种逻辑链路层类型2,面向连接的支持。如果希望支持PF_LLC套接字,请选择此选项。

-The IPX protocol

        这是对Novell网络协议IPX的支持,该协议通常用于Windows计算机的本地网络。如果要使用Linux Novell客户端ncpfs(可从<ftp://platan.vc.cvut.cz/pub/linux/ncpfs/>)或从Linux DOS仿真器DOSEMU(阅读DOSEMU-HOWTO,可从<http://www.tldp.org/docs.html#howto>).  为了实现前者,您还必须在下面对“NCP文件系统支持”说Y。IPX的作用域类似于IP,而运行在IPX之上的SPX则类似于TCP。要将您的Linux机箱变成功能齐全的NetWare文件服务器和IPX路由器,请在此处输入Y,然后从<ftp://ibiblio.org/pub/Linux/system/network/daemons/>或mars_nwe来自<ftp://www.compu-art.de/mars_nwe/>. 有关详细信息,请阅读IPX-HOWTO<http://www.tldp.org/docs.html#howto>.   IPX驱动程序会将内核放大大约16KB。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为ipx。除非您想将Linux机箱与本地Novell网络集成,否则请选择N。

-Appletalk protocol support

        AppleTalk是苹果电脑可以用来在网络上进行通信的协议。如果您的Linux盒子连接到这样的网络,并且您希望连接到该网络,请说Y。您需要使用netatalk包,以便您的Linux盒可以充当Mac的打印和文件服务器,以及访问AppleTalk打印机。退房<http://www.zettabyte.net/netatalk/>有关详细信息,请访问WWW。EtherTalk是用于AppleTalk over Ethernet的名称,而更便宜、更慢的LocalTalk是AppleTalk通过使用串行链接的专有Apple网络。Linux完全支持EtherTalk和LocalTalk。有关如何连接Linux、Windows计算机和Mac的一般信息,请访问WWW<http://www.eats.com/linux_mac_win.html>.  NET3-4-HOWTO,可从<http://www.tldp.org/docs.html#howto>,也包含有价值的信息。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为appletalk。您几乎肯定希望将其编译为一个模块,以便在不重新启动计算机的情况下重新启动AppleTalk堆栈。我听说GNU对苹果的抵制已经结束,所以即使是政治正确的人也可以在这里说Y。

-CCITT X.25 Packet Layer

        X.25是一组标准化的网络协议,其范围类似于帧中继;从您的机箱到X.25网络入口点的一条物理线路可以承载多个逻辑点对点连接(称为“虚拟电路”),以连接到与X.25网络连接的其他计算机。政府、银行和其他组织倾向于使用它相互连接或形成广域网(WAN)。许多国家都有公共X.25网络。X.25由两个协议组成:较高级别的数据包层协议(PLP)(如果你想,这里说Y)和较低级别的数据链路层协议LAPB(如果你想要,下面说Y为“LAPB数据链路驱动程序”)。有关X.25的详细信息,请访问<http://www.sangoma.com/tutorials/x25/>以及<http://docwiki.cisco.com/wiki/X.25>.   有关X.25 for Linux的信息包含在文件<file:Documentation/networking/x25.txt>和<file:DDocumentation/netweening/x25iface.txt>中。可以使用X.21协议的专用网卡(Linux尚未支持)连接到X.25网络,也可以使用普通调制解调器通过标准电话线(如下面的“X.25异步驱动程序”Y)或通过使用普通以太网卡和LAPB over Ethernet的以太网(下面的“LAPB数据链路驱动程序”和“LAPB over以太网驱动程序”为Y)。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为x25。如果不确定,请说N。

-LAPB Data Link Driver

        链路访问过程,平衡(LAPB)是X.25协议的数据链路层(即下层)部分。它提供了一种可靠的连接服务,可以与其他主机交换数据帧,并用于传输更高级别的协议(主要是X.25数据包层,即X.25的较高部分,但其他协议也是可能的)。通常,LAPB与专用的X.21网卡一起使用,但Linux目前仅支持通过以太网连接的LAPB。如果您想通过以太网使用LAPB连接,请在这里说Y,然后在下面的“LAPB over Ethernet driver”。阅读<file:Documentation/networking/lapb-module.txt>了解技术详细信息。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为lapb。如果不确定,请说N。

-Phonet protocols family

        电话网络协议(PhoNet)是诺基亚为其调制解调器开发的面向分组的通信协议。这是Maemo使用蜂窝数据连接所必需的(如果支持)。它也可以用于从Linux计算机控制诺基亚手机,尽管AT命令可能更容易使用。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为phonet。如果不确定,请说N。

-6LoWPAN Support

        这将在IEEE 802.15.4或蓝牙堆栈支持的低功耗无线个人局域网(“6LoWPAN”)上启用IPv6。

-IEEE Std 802.15.4 Low-Rate Wireless Personal Area Networks support

        IEEE Std 802.15.4定义了低数据速率、低功率和低复杂性的短距离无线个人区域网络。它旨在组织传感器、开关等自动化设备的网络。最大允许数据速率为250kb/s,典型的个人操作空间约为10m。这里说Y将LR-WPAN支持编译到内核中,或者说M将其编译为模块。

-QoS and/or fair queueing

        当内核有几个数据包要通过网络设备发送时,它必须决定首先发送哪些数据包,延迟哪些数据包以及丢弃哪些数据包。这是排队学科的工作,已经提出了几种不同的算法来“公平”地做到这一点。如果你在这里说N,你会得到标准的数据包调度程序,它是一个FIFO(先到先得)。如果你在这里说“是”,你将能够从几种可供选择的算法中进行选择,然后这些算法可以连接到不同的网络设备。例如,如果您的某些网络设备是实时设备,需要特定的最小数据流量,或者如果您需要限制符合指定条件的流量的最大数据流量,则这非常有用。该代码被认为是实验性的。要管理这些调度器,您需要iproute2+tc包中的用户级实用程序<https://www.kernel.org/pub/linux/utils/net/iproute2/>.  该文件包还包含一些文件;更多信息,请查看<http://www.linuxfoundation.org/collaborate/workgroups/networking/iproute2>这种服务质量(QoS)支持将使您能够在Linux路由器上使用区分服务(diffserv)和资源保留协议(RSVP),如果您还对下面的相应分类器说Y。文档和软件位于<http://diffserv.sourceforge.net/>.  如果您在这里说Y,并在下面对“/proc文件系统”说Y,那么您将能够从/proc/net/psched文件中读取有关数据包调度程序的状态信息。可用的调度程序列在以下问题中:;你可以对任何人说Y。如果不确定,现在说N。

-Data Center Bridging support

        这支持通过rtntlink在支持DCB的以太网适配器上配置数据中心桥接(DCB)功能。如果您有支持此接口的支持DCB的以太网适配器,并且您连接到支持DCB功能的交换机,请说“Y”。DCB是一系列以太网增强功能,允许支持DCB的NIC和交换机支持具有不同要求(高可靠性、无中断、尽力而为和低延迟)的网络流量,从而在以太网上共存。DCB的特点包括:增强的传输选择(也称为优先级分组)-提供了一个为流量等级分配带宽保证的框架。基于优先级的流控制(PFC)-一种MAC控制暂停帧,以802.1p优先级而不是链路(802.3x)的粒度工作。

-DNS Resolver support

        在这里说Y将包括对DNS解析器密钥类型的支持,该类型可用于在用户空间中执行DNS查找的调用。DNS解析器用于向DNS服务器查询信息。例如,将UNC主机名元素解析为CIFS的IP地址,或执行AFSDB记录的DNS查询,以便AFS可以定位单元的卷位置数据库服务器。CIFS和AFS模块使用DNS Resolver,稍后将支持SMB2。userspace upcall helper“/sbin/DNS.Resolver”通过/etc/request-key.conf支持DNS Resolver。有关详细信息,请参阅<file:Documentation/networking/DNS_Resolver.txt>。要将其编译为模块,请在此处选择M:该模块将被称为dnsresover。

-B.A.T.M.A.N. Advanced Meshing Protocol

        B.A.T.M.A.N.(移动自组织网络的更好方法)是用于多跳自组织网状网络的路由协议。网络可以是有线或无线的。看见http://www.open-mesh.org/获取更多信息和用户空间工具。

-Open vSwitch

        Open vSwitch是一种面向虚拟化环境的多层以太网交换机。除了支持传统硬件交换机中预期的各种功能外,它还支持细粒度编程扩展和基于流的网络控制。这种控制在各种应用程序中都很有用,但在多服务器虚拟化部署中尤其重要,因为多服务器虚拟部署通常以高度动态的端点为特征,并且需要维护多租户的逻辑抽象。OpenvSwitch数据路径为数据包转发提供了内核内的快速路径。它由用户空间守护程序ovs-vswitchd补充,该守护程序能够接受来自各种源的配置并将其转换为数据包处理规则。看见http://openvswitch.org了解更多信息和用户空间实用程序。要将此代码编译为模块,请在此处选择M:该模块将被称为openvswitch。

-Virtual Socket protocol

        虚拟套接字协议是一种类似于TCP/IP的套接字协议,允许虚拟机和管理程序或主机之间进行通信。您还应该在下面选择一个或多个虚拟机监控程序特定的传输。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为vsock。如果不确定,请说N。

-NETLINK: mmaped IO

        此选项支持内存映射的netlink IO。这通过避免在内核和用户空间之间复制数据来减少开销。

-NETLINK: socket monitoring interface

        支持ss工具使用的NETLINK套接字监控接口。如果不确定,请说Y。

-MultiProtocol Label Switching

        多协议标签交换通过逻辑电路路由数据包。MPLS最初被认为是一种以硬件速度路由数据包的方式(在硬件能够路由ipv4数据包之前),但它仍然是一种制作隧道的简单方式。如果你没有听说过MPLS,你可能想在这里说N。

-High-availability Seamless Redundancy (HSR)

        如果您在这里说Y,那么您的Linux箱将能够充当DANH(“实现HSR的双连接节点”)。为了实现这一点,您的Linux机箱需要(至少)两个物理以太网接口,并且它必须作为环形网络中的节点与其他支持HSR的节点连接在一起。通过hsr设备发送的所有以太网帧将在环上双向发送(通过两个从端口),从而提供一个冗余的即时故障切换网络。环中的每个HSR节点充当HSR帧的网桥,但过滤先前转发的帧。本规范是符合IEC 62439-3-2010(HSRv0)中所述HSR标准的“最大努力”,但尚未进行符合性测试。在安全关键系统中依赖此代码之前,您需要自己执行所有必要的测试!

-Switch (and switch-ish) device support (EXPERIMENTAL)

        该模块在核心网络代码和设备驱动程序之间提供粘合,以支持“交换机”一词的通用含义中的硬件交换机芯片。这包括支持L2/L3的设备,以及各种流量负载芯片,包括嵌入SR-IOV NIC中的交换机。

-Network priority cgroup

        Cgroup子系统,用于根据每个接口为网络优先级分配进程。

-Network classid cgroup

        Cgroup子系统,用作cls_Cgroup中使用的通用套接字类ID标记,用于netfilter匹配。

-enable BPF Just In Time compiler

        Berkeley Packet Filter过滤功能通常由解释器处理。该选项允许内核在过滤器加载到内存中时生成本机代码。这将加速数据包嗅探(libpcap/tcpdump)。注意:管理员应启用此功能更改/proc/sys/net/core/bpf_jit_enable

-Network testing  --->

        该模块将以可配置的速率从给定接口注入预配置的数据包。它用于网络接口压力测试和性能分析。如果你不理解刚才所说的,你就不需要它:比如N。关于如何使用数据包生成器的文档可以在<file:Documentation/networking/pktgen.txt>中找到。要将此代码编译为模块,请在此处选择M:该模块将被称为pktgen。

Amateur Radio support

        如果您想将您的Linux设备连接到业余无线电,请在此处回答Y。你想读<http://www.tapr.org/>更具体地说,关于Linux上的AX.25<http://www.linux-ax25.org/>.   注意,这个问题的答案不会直接影响内核:说N只会导致配置器跳过所有关于业余无线电的问题。

CAN bus subsystem support  --->

-Raw CAN Protocol (raw access with CAN-ID filtering)

        原始CAN协议选项通过BSD套接字API提供对CAN总线的访问。在没有使用更高级别协议的大多数情况下,您可能希望使用原始套接字。原始套接字有几个过滤器选项,例如ID掩码/错误帧。要接收/发送原始CAN消息,请使用AF_CAN和CAN_raw协议。

-Broadcast Manager CAN Protocol (with content filtering)

        广播管理器提供内容过滤、超时监控、发送RTR帧和循环CAN消息,无需永久用户交互。BCM可以通过BSD套接字API“编程”,并根据需要通知您,例如仅在内容更新/超时时。在总线上使用循环CAN消息的大多数情况下(例如,在汽车环境中),您可能希望使用bcm套接字。要使用广播管理器,请将AF_CAN与CAN_BCM协议一起使用。

-CAN Gateway/Router (with netlink configuration)

        CAN网关/路由器用于路由(和修改)CAN帧。它基于用于消息过滤和消息发送的PF_CAN核心基础设施,可以随时修改路由的CAN帧。CAN帧可以在CAN网络接口之间路由(一跳)。它们可以通过例如从iptables已知的网络链路配置接口配置的AND/OR/XOR/SET操作进行修改。

-CAN Device Drivers  --->

 

IrDA (infrared) subsystem support

        红外支持,如果您想建立对IrDA(TM)协议的支持,请在此处输入Y。红外数据协会(tm)规定了无线红外通信的标准,并得到大多数笔记本电脑和PDA的支持。要使用Linux支持IrDA(tm)协议,还需要一些用户空间实用程序,如irattach。有关更多信息,请参阅文件<file:Documentation/networking/irda.txt>。您还需要阅读IR-HOWTO,可在<http://www.tldp.org/docs.html#howto>.   如果您想与PDA交换数据位(vCal、vCard),则需要安装一些OBEX应用程序,例如OpenObex:<http://sourceforge.net/projects/openobex/>要将此支持编译为模块,请在此处选择M:该模块将被称为irda。

Bluetooth subsystem support  --->

        蓝牙是一种低成本、低功耗、短距离的无线技术。它被设计为电缆和其他短程技术(如IrDA)的替代品。蓝牙在个人区域范围内工作,通常可延伸至10米。有关蓝牙的更多信息,请访问<http://www.bluetooth.com/>.  Linux蓝牙子系统由几个层组成:
蓝牙核心
HCI设备和连接管理器、调度器
SCO音频链接
L2CAP(逻辑链路控制和适配协议)
LE(低能耗)链路上的SMP(安全管理器协议)
HCI设备驱动程序(硬件接口)
RFCOMM模块(RFCOMM协议)
BNEP模块(蓝牙网络封装协议)
CMTP模块(CAPI消息传输协议)
HIDP模块(人机接口设备协议)
在这里说Y将蓝牙支持编译到内核中,或者说M将其编译为模块(蓝牙)。要使用Linux蓝牙子系统,您需要几个用户空间实用程序,如hciconfig和bluetoothd。BlueZ包中提供了这些实用程序和对蓝牙内核模块的更新。有关详细信息,请参阅<http://www.bluez.org/>.

-Bluetooth Classic (BR/EDR) features

        经典蓝牙(BR/EDR)功能

-RFCOMM protocol support

        RFCOMM协议支持

-RFCOMM TTY support

        RFCOMM TTY支持

-BNEP protocol support

        BNEP协议支持

-Multicast filter support

        多播筛选器支持

-Protocol filter support

        协议筛选器支持

-HIDP protocol support

        HIDP协议支持

-Bluetooth Low Energy (LE) features

        蓝牙低能耗(LE)功能

-Bluetooth self testing support

        蓝牙自检支持

-Export Bluetooth internals in debugfs

        在debugfs中导出蓝牙内部

-Bluetooth device drivers  --->

        蓝牙设备驱动支持

RxRPC session sockets

        在这里说Y或M,以包括对RxRPC会话套接字的支持(只是传输部分,而不是表示部分:(取消)编组留给应用程序)。这些用于AFS内核文件系统和用户空间实用程序。该模块目前仅支持客户端操作,目前尚未完成。请参阅文档/网络/rxrpc.txt。

Wireless  --->

-cfg80211 - wireless configuration API

        cfg80211是Linux无线LAN(802.11)配置API。如果您有无线设备,请启用此选项。有关更多信息,请参阅无线wiki上的文档:http://wireless.kernel.org/en/developers/Documentation/cfg80211当作为模块构建时,它将被称为cfg80211。

-nl80211 testmode command

        nl80211测试模式命令有助于实现无线芯片的工厂校准或验证工具。仅为专门为此目的构建的内核选择此选项。本应最终落入用户手中的调试工具最好使用debugfs来实现。

-enable developer warnings

        此选项启用了一些其他警告,这些警告有助于cfg80211开发人员和驱动程序开发人员,但由于用户空间的竞争,可能会触发这些警告。例如,当驾驶员报告其与AP断开连接,但用户同时手动断开连接时,由于比赛原因,警告可能会触发。只有当您正在开发cfg80211或基于它的驱动程序(或mac80211)时,才说Y。

-cfg80211 regulatory debugging

        如果要调试法规更改,可以启用此功能。有关cfg80211法规的更多信息,请参阅无线wiki:http://wireless.kernel.org/en/developers/Regulatory

-cfg80211 certification onus

        您应该禁用此选项,除非您有能力并愿意确保您的系统保持符合此选项下可用功能的法规要求。某些选项可能仍在大量开发中,无论出于何种原因,监管合规性尚未或无法验证。有时,只有在最终系统安装到位后,才能进行监管验证。只有系统集成商或发行版完成了确保具有启用功能的系统的监管认证所需的工作,才能启用此选项。或者,如果您是无线研究人员,并且在当地监管机构控制和批准的环境中工作,则可以启用此选项。

-enable powersave by default

        默认情况下,此选项启用省电模式。如果这导致您的应用程序行为失常,您应该改为修复应用程序——它们需要注册网络延迟要求,请参阅Documentation/ppower/pm_qos_interface.txt。

-cfg80211 DebugFS entries

        如果要调试cfg80211的条目,可以启用此选项。

-use statically compiled regulatory rules database

        此选项生成表示net/wireless/db.txt中描述的无线监管规则的内部数据结构,并包含查询该数据库的代码。这是使用CRDA为内核定义监管规则的替代方案。使用此选项需要在构建时对db.txt进行一些分析,解析器将保持最新的无线regdb更新,但旧的无线regdb格式将被忽略。稍后可以替换解析器,以避免无线regdb版本上的冲突问题。

-cfg80211 wireless extensions compatibility

        如果需要使用基于cfg80211的驱动程序进行无线扩展的旧用户空间,请启用此选项。

-Generic IEEE 802.11 Networking Stack (mac80211)

        此选项启用独立于硬件的IEEE 802.11网络堆栈。

-Minstrel

        此选项启用“minstrel”TX速率控制算法

-Minstrel 802.11n support

        此选项启用“minstrel_ht”传输速率控制算法

-Minstrel 802.11ac support

        此选项启用“minstrel_ht”TX速率控制算法中的VHT

-Default rate control algorithm (Minstrel)  --->

        此选项选择mac80211将使用的默认速率控制算法。注意,如果有不同的算法可用,这个默认值仍然可以通过ieee80211_default_rc_algo模块参数覆盖。

-Enable mac80211 mesh networking (pre-802.11s) support

        该选项支持802.11s网格网络草案。该实施基于网格网络修正案草案2.08。然而,由于草案在批准后留下了一些待确定的标识符,因此没有人声称或甚至不可能遵守该草案。有关更多信息,请访问http://o11s.org/.

-Enable LED triggers

        此选项为不同的数据包接收/发送事件启用几个LED触发器。

-Export mac80211 internals in DebugFS

        选择此选项可查看有关debugfs中mac80211内部状态的详细信息。

-Trace all mac80211 debug messages

        选择此选项可以让mac80211使用跟踪点注册mac80211_msg跟踪子系统,以收集所有调试消息,而不必将其打印到内核日志中。此选项的开销是,所有消息都需要以二进制形式出现,并在运行时格式化以进行跟踪。

-Select mac80211 debugging features

        此选项收集各种mac80211调试设置。

WiMAX Wireless Broadband support

        选择以配置对使用WiMAX协议(IEEE 802.16)提供无线宽带连接的设备的支持。请注意,这些设备中的大多数需要向提供商注册服务计划。可以在菜单项“设备驱动程序”>“网络设备支持”>“WiMAX无线宽带设备”中启用不同的WiMAX驱动程序。如果不确定,可以选择M(模块)。

RF switch subsystem support  --->

        如果您想控制许多WiFi和蓝牙卡上的RF开关,请在此处输入Y。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为rfkill。

Plan 9 Resource Sharing Support (9P2000)

        如果您在这里说“是”,您将通过9P2000协议获得计划9资源共享的实验支持。参见<http://v9fs.sf.net>了解更多信息。

CAIF support

        “通信CPU到应用CPU接口”(CAIF)是一种基于分组的面向连接的MUX协议,由ST爱立信开发,用于其调制解调器。它作为套接字(PF_CAIF)从用户空间访问。如果您为使用CAIF作为传输的手机产品(如Android或MeeGo)构建,请在此处输入Y(或M)。如果不确定,请输入N。如果您选择将其构建为模块,则CAIF_NETDEV也需要构建为模块。您还需要对平台所需的任何CAIF物理设备说“是”。有关如何使用和配置CAIF的详细说明,请参阅文档/网络/CAIF。

Ceph core library

        在这里选择Y或M以包括cephlib,它为Ceph文件系统和rados块设备(rbd)提供了通用功能。更多信息请访问http://ceph.newdream.net/.

NFC subsystem support

        如果您想建立对NFC(近场通信)设备的支持,请在此处输入Y。要将此支持编译为模块,请在此处选择M:该模块将被称为nfc。

Device Drivers

 许多设备驱动选项需要自己去深入了解,此处不会详细每一个选项!!!

 

 

Generic Driver Options  --->

-Support for uevent helper

        uevent助手程序由内核为每个uevent分叉。在切换到基于netlink的uevent源之前,这用于将热插拔脚本挂接到内核设备事件中。它通常指向/sbin/hotplug中的shell脚本。今天不应该使用这种方法,因为通常的系统在很短的时间内会在启动或设备发现时创建许多事件。每个事件一个分叉的进程可能会创建太多的进程,从而导致高系统负载,或者在较小的系统上,已知在引导过程中会出现内存不足的情况。

-()    path to uevent helper

        要在默认情况下禁用用户空间帮助程序执行,请在此处指定一个空字符串。稍后在运行时,仍可通过/proc/sys/kernel/hotplug或/sys/kernel/uevent_helper更改此设置。

-Maintain a devtmpfs filesystem to mount at /dev

        维护devtmpfs文件系统以在/dev/处装载,这将在启动初期创建tmpfs/ramfs文件系统实例。在这个文件系统中,内核驱动程序核心使用其默认名称维护设备节点,并为所有已注册的设备分配主/次编号。用户空间可以根据需要修改文件系统内容,添加符号链接,并应用所需的权限。它提供了一个功能齐全的/dev目录,udev通常在上面运行,管理权限并添加有意义的符号链接。在非常有限的环境中,它可以提供足够的功能性/dev/而无需任何进一步的帮助。它还允许简单的救援系统,并可靠地处理动态的主要/次要数字。注意:如果未启用CONFIG_TMPFS,将使用更简单的ramfs文件系统。

-Automount devtmpfs at /dev, after the kernel mounted the rootfs

        内核安装rootfs后,在/dev/处自动安装devtmpfs,这将指示内核在内核安装根文件系统之后,直接在/dev/处自动安装devtmpfs文件系统。该行为可以用命令行参数覆盖:devtmpfs.mant=0|1。此选项不影响基于initramfs的引导,这里,在安装rootfs之后,始终需要手动安装devtmpfs文件系统。启用此选项后,即使rootfs上的/dev/目录完全为空,它也可以使用init=/bin/sh以救援模式启动系统。

-Select only drivers that don't need compile-time external firmware

        仅选择不需要编译时外部固件的驱动程序,如果您没有适用于需要的驱动程序的神奇固件,请选择此选项。

-Prevent firmware from being built

        阻止生成固件,说“是”以避免构建固件。固件通常随驱动程序一起提供,只有在更新固件时才能进行重建。如果不确定,在这里说Y。

-Userspace firmware loading support

        如果树内模块都不需要用户空间固件加载支持,但树外构建的模块需要支持,则提供此选项。

-Include in-kernel firmware blobs in kernel binary

        内核源代码树包括多个固件“blob”,供各种驱动程序使用。推荐的使用方法是运行“makefirmware_install”,将ihex文件转换为二进制文件后,将系统上firmware/中的所有所需二进制文件复制到/lib/firmware中,以便用户空间助手可以根据请求加载这些文件。启用此选项将直接将每个所需的固件blob构建到内核中,request_firmware()将在那里找到它们,而无需调用用户空间。如果您的根文件系统需要使用此类固件且不希望使用initrd的设备,这可能很有用。该选项控制使用request_firmware()的每个驱动程序的固件包含,并将其固件发布在内核源树中,从而避免了“Include firmware for xxx device”选项的泛滥。说“N”,让固件从用户空间加载。

-()    External firmware blobs to build into the kernel binary 

        该选项允许在用户无法或不想在运行时从用户空间提供固件的情况下(例如,当访问引导设备时需要固件,而用户不想使用initrd),将固件内置到内核中。该选项是一个字符串,采用固件文件的(空格分隔)名称——与源中MODULE_firmware()和request_firmware()中出现的名称相同。这些文件应该存在于EXTRA_FIRMWARE_DIR选项指定的目录下,默认情况下,该选项是内核源树的固件子目录。例如,您可以设置CONFIG_EXTRA_FIRMWARE=“usb8388.bin”,将usb8388.bin文件复制到固件目录中,然后构建内核。然后,任何request_firmware(“usb8388.bin”)都将在内部得到满足,而无需调用用户空间。警告:如果您在二进制内核映像中包含了GPL条款下不可用的其他固件文件,那么分发生成的映像可能违反了GPL,因为它结合了GPL和非GPL工作。在发布此类图像之前,您应该咨询自己的律师。

-Fallback user-helper invocation for firmware loading

        此选项启用/禁用用户助手(例如udev)的调用,以在内核中直接加载文件失败后作为回退加载固件文件。不再需要用户模式助手,除非您有一个位于非标准路径中的特殊固件文件。此外,上游已弃用udev支持。

-Allow device coredump

        此选项控制设备核心转储机制是否可用;如果禁用,即使启用了可以使用该机制的驱动程序,该机制也将被省略。对于更敏感的系统或不想访问信息而不拥有代码或保留任何数据的系统,请选择“N”。

-Driver Core verbose debug messages

        如果您希望驱动程序核心向系统日志生成一组调试消息,请在此处输入Y。如果您的驱动程序核心有问题,并希望了解更多情况,请选择此选项。

-Managed device resources verbose debug messages

        此选项启用内核参数devres.log。如果设置为非零,将打印devres调试消息。如果您在devres方面遇到问题或希望调试托管设备的资源管理,请选择此选项。可以从sysfs节点打开和关闭devres.log。

-Enable verbose FENCE_TRACE messages

        启用FENCE_TRACE打印。这将在控制台日志中添加额外的垃圾邮件,但将更容易诊断多个设备共享的dma缓冲区的锁定相关问题。

-DMA Contiguous Memory Allocator

        这启用了连续内存分配器,该分配器允许驱动程序分配大的物理连续内存块,以便与不支持I/O映射或散点聚集的硬件组件一起使用。您可以通过在内核的命令行上指定“CMA=0”来禁用CMA。有关更多信息,请参阅<include/linux/dma continental.h>。如果不确定,请说“n”。

*** Default contiguous memory area size: ***

-(0)   Size in Mega Bytes

        定义连续内存分配器的默认内存区域的大小(以MiB为单位)。如果选择大小为0,则默认情况下禁用CMA,但可以通过向内核传递CMA=size[MG]来启用CMA。

-Selected region size (Use mega bytes value only)  --->

        所选区域大小(仅使用兆字节值)

-(8)   Maximum PAGE_SIZE order of alignment for contiguous buffers

        默认情况下,DMA映射框架将所有缓冲区对齐为大于或等于请求缓冲区大小的最小PAGE_SIZE顺序。这对于高达几百KB的缓冲区很有效,但对于更大的缓冲区,这只会浪费内存。使用此参数,可以指定连续缓冲区的最大PAGE_SIZE顺序。较大的缓冲区将仅与此指定顺序对齐。顺序表示为2的幂乘以PAGE_SIZE。例如,如果系统默认为4KiB页面,则顺序值为8意味着缓冲区将仅对齐到1MiB。如果不确定,保留默认值“8”。

Bus devices  --->

-ARM CCI400 PMU support

        支持ARM CCI缓存一致性互连上的PMU事件监视。

-ARM CCN driver support

        PMU(perf)驱动程序支持ARM CCN(高速缓存相干网络)互连。

-Broadcom STB GISB bus arbiter

        Broadcom机顶盒片上系统内部总线仲裁器的驱动程序。此驱动程序提供超时和目标中止错误处理以及内部总线主解码。

-Freescale EIM DRIVER

        i.MX WEIM控制器的驱动程序。WEIM(无线外部接口模块)的工作方式类似于总线。您可以在其上连接许多不同的设备,例如NOR、onenand。

-Versatile Express configuration bus

        通用Express配置总线

Connector - unified userspace <-> kernelspace linker  --->

        连接器-统一用户空间<->内核空间链接器,这是在netlink套接字协议之上工作的统一用户空间<->内核空间连接器。连接器支持也可以构建为模块。如果是,模块将被称为cn。

-Report process events to userspace

        提供向用户空间报告流程事件的连接器。发送事件,如fork、exec、id更改(uid、gid、suid等),然后退出。

Memory Technology Device (MTD) support  --->

        内存技术设备(MTD)支持

-MTD tests support (DANGEROUS)

        此选项包括编译中的各种MTD测试。测试通常应编译为内核模块。模块在加载时执行各种检查和验证。警告:某些测试将擦除他们测试的整个MTD设备。除非你真的知道你在做什么,否则不要使用这些测试。

-RedBoot partition table parsing

        RedBoot是一个ROM监视器和引导加载器,它通过在设备上放置一个擦除块表来处理闪存设备中的多个“映像”,类似于分区表,该表给出了闪存中存储的所有映像的偏移量、长度和名称。如果您需要能够检测和分析此表的代码,并注册与表中每个图像对应的MTD“分区”,请启用此选项。您仍然需要特定设备的驱动程序调用解析函数。这不会自动发生。例如,SA1100地图驱动程序(CONFIG_MTD_SA1100)有一个选项。

-Command line partition table parsing

        允许通过内核命令行对MTD分区表进行通用配置。在有不同类型闪存可用的硬件上支持多个闪存资源。您仍然需要特定设备的驱动程序调用解析函数。这不会自动发生。例如,SA1100地图驱动程序(CONFIG_MTD_SA1100)有一个选项。命令行的格式如下:
         mtdparts=<mtddef>[;<mtddef]
        <mtddef>:=<mtd id>:<partdef>[,<partdef>]
        <partdef>:=<size>[@offset][<name>][ro]
        <mtd id>:=映射驱动程序/设备中使用的唯一id
        <size>:=标准linux memsize OR“-”表示所有剩余空间<name>:=(name)
        由于Linux处理命令行的方式,分区定义中不允许空格,包括mtd id和分区名称。
示例:
        1 flash resource (mtd-id "sa1100"), with 1 single writable partition: mtdparts=sa1100:-

        Same flash, but 2 named partitions, the first one being read-only: mtdparts=sa1100:256k(ARMboot)ro,-(root)

-ARM Firmware Suite partition parsing

        ARM固件套件允许用户将闪存设备划分为多个“映像”。每个这样的图像都有一个包含其名称和偏移量/大小等的标头。如果您需要能够检测和分析这些表的代码,并注册与检测到的每个图像对应的MTD“分区”,请启用此选项。您仍然需要特定设备的驱动程序调用解析函数。这不会自动发生。例如,“physmap”映射驱动程序(CONFIG_MTD_physmap)执行此操作。

-OpenFirmware partitioning information support

        这提供了一个分区解析函数,该函数从flash节点的子节点派生分区映射,如Documentation/devictree/bindings/mtd/partition.txt中所述。

-TI AR7 partitioning support

        TI AR7分区支持

*** User Modules And Translation Layers ***

-Caching block device access to MTD devices

        尽管大多数闪存芯片的擦除大小太大,不能用作块器件,但可以以这种方式使用基于RAM芯片的MTD器件。该块设备是执行该功能的MTD设备的用户。目前,日志闪存文件系统还需要在MTD设备安装时获取其句柄(尽管JFFS和JFFS2实际上没有使用mtdblock设备的任何功能)。随后,它可以扩展到在闪存芯片上执行读/擦除/修改/写入周期,以模拟更小的块大小。不用说,这是非常不安全的,但对于几乎从未写入过的文件系统可能有用。您不需要使用此选项与DiskOnChip设备一起使用。对于这些,请启用NFTL支持(CONFIG_NFTL)。

-FTL (Flash Translation Layer) support

        这为PCMCIA规范中的原始闪存转换层提供了支持。它在闪存设备上使用一种伪文件系统来模拟具有512字节扇区的块设备,在其上放置一个“正常”文件系统。您可能会发现,除非您生活在软件专利不合法的自由世界,否则此代码中使用的算法是获得专利的。在美国,您只允许在PCMCIA硬件上使用此算法,尽管根据GPL的条款,您显然可以根据您的意愿复制、修改和分发代码。只是不要使用它。

-NFTL (NAND Flash Translation Layer) support

        NFTL(NAND闪存转换层)支持

-INFTL (Inverse NAND Flash Translation Layer) support

        INFTL(反向NAND闪存转换层)支持

-Resident Flash Disk (Flash Translation Layer) support

        常驻闪存磁盘(闪存转换层)支持

-NAND SSFDC (SmartMedia) read only translation layer

        NAND SSFDC(SmartMedia)只读转换层

-SmartMedia/xD new translation layer

        SmartMedia/xD新转换层

-Log panic/oops to an MTD buffer

        将死机/Oops记录到MTD缓冲区,这使得恐慌和oops消息能够被记录到闪存分区中的循环缓冲区中,在稍后的某个时候可以将其读回。

-Swap on MTD device support

        在mtd分区之上提供易失性块设备驱动程序,适合交换。写入块的映射不会保存。驱动器通过将擦除计数器存储到OOB中来提供磨损均衡。

-Retain master device when partitioned

        由于历史原因,默认情况下,存在一个主分区或多个分区,但不能同时存在。人们担心的是,在多个分区中列出的数据是危险的;然而,SCSI做到了这一点,它通常对应用程序有用。即使设备已分区,此配置选项也会保留主设备。它还使分区设备的父设备成为主设备,而不是位于主设备后面的设备。

-RAM/ROM/Flash chip drivers  --->

        RAM/ROM/Flash芯片驱动程序

--通过通用闪存接口(CFI)探针检测闪存芯片

--检测非CFI AMD/JEDEC兼容闪存芯片

--闪存芯片驱动程序高级配置选项 --->

--支持CFI命令集0001(英特尔/夏普芯片)

--支持CFI命令集0002(AMD/Fujitsu/Spansion芯片)

--支持CFI命令集0020(ST(高级架构)芯片)

--在总线映射中支持RAM芯片

--在总线映射中支持ROM芯片

--支持总线映射中缺少的芯片

-Mapping drivers for chip access  --->

--支持闪存芯片的非线性映射

--物理内存映射中的闪存设备

--基于OF描述的物理内存映射中的内存设备

--JEDEC Flash设备映射到impA7

--平台设备RAM(mtd-RAM)的映射驱动程序

-Self-contained MTD device drivers  --->

        自带MTD设备驱动程序

-NAND ECC Smart Media byte order

        符合智能媒体规范的软件ECC。最初的Linux实现交换了字节0和1。

-NAND Device Support  --->

--GPMI NAND Flash Controller driver

        为IMX23、IMX28或IMX6启用NAND闪存支持。GPMI控制器非常强大,在BCH模块的帮助下,它可以执行硬件ECC。GPMI同时支持多个NAND闪存。GPMI可能与其他块(如SD卡)冲突。因此,当您启用GPMI时,请注意它。 

-OneNAND Device Support  ----

        OneNAND设备支持

-LPDDR & LPDDR2 PCM memory drivers  --->

        LPDDR和LPDDR2 PCM内存驱动程序

-SPI-NOR device support  --->

--Use small 4096 B erase sectors

        使用小4096 B擦除扇区

-Enable UBI - Unsorted block images  --->

        UBI是MTD层之上的一个软件层,它允许在MTD设备上使用类似LVM的逻辑卷,隐藏闪存芯片的一些复杂性,如磨损和坏块,并提供一些其他有用的功能。有关更多详细信息,请访问MTD网站(www.linux-MTD.infradead.org)。

Device Tree and Open Firmware support  --->

Parallel port support  ----

        如果您想使用连接到计算机并行端口(计算机上有25个孔的连接器)的设备,例如打印机、ZIP驱动器、PLIP链接(并行线Internet协议主要用于通过连接两台本地计算机的并行端口来创建一个小型网络)等,那么您需要在这里说Y;请阅读<file:Documentation/parport.txt>和<file:drivers/parport/BUGS parport>。有关连接到并行端口的许多设备的驱动程序的详细信息,请参阅<http://www.torque.net/linux-pp.html>可以在多个设备之间共享一个并行端口,并且可以安全地将所有相应的驱动程序编译到内核中。要将并行端口支持编译为模块,请在此处选择M:该模块将被称为parport。如果您有多个并行端口,并且希望指定该驱动程序在模块加载时使用的端口和IRQ,请查看<file:Documentation/parport.txt>。

Block devices  --->

Misc devices  --->

SCSI device support  --->

Serial ATA and Parallel ATA drivers (libata)  --->

        ATA是一种控制器,目前基本被SATA取代

Multiple devices driver support (RAID and LVM)  ----

        Multiple devices driver support (RAID and LVM)(RAID独立冗余磁盘阵列)(LVM是Linux系统用于对硬盘分区进行管理的一种机制)

Generic Target Core Mod (TCM) and ConfigFS Infrastructure  ----

Network device support  --->

Input device support  --->

Character devices  --->

I2C support  --->

SPI support  --->

SPMI support  ----

        SPMI(系统电源管理接口)是基带和应用处理器与电源管理集成电路(PMIC)之间的双线串行接口。

HSI support  ----

        “高速同步串行接口”是同步串行接口,主要用于连接应用程序引擎和蜂窝调制解调器。

PPS support  --->

        PPS(每秒脉冲)是一些GPS天线提供的特殊脉冲。Userland可以使用它来获得高精度的时间参考。一些天线的PPS信号与用于与主机通信的串行线的CD(载波检测)引脚相连。在这种情况下,请使用SERIAL_LINE客户端支持。一些天线的PPS信号与一些特殊的主机输入相连,因此您必须启用相应的客户端支持。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为pps_core.ko。

PTP clock support  --->

        IEEE 1588标准定义了一种通过以太网精确同步分布式时钟的方法。该标准定义了精确时间协议(PTP),可用于在几十微秒内实现同步。此外,借助于特殊的硬件时间戳单元,可以实现几百纳秒以内的同步。此驱动程序增加了对PTP时钟作为字符设备的支持。如果您想使用PTP时钟,那么还应至少启用一个时钟驱动器。要将此驱动程序编译为模块,请在此处选择M:该模块将被称为ptp。

Pin controllers  --->

GPIO Support  --->

Dallas's 1-wire support  ----

Dallas's的1线总线用于连接iButton和热传感器等慢速1针设备。如果你想要W1支持,你应该在这里说Y。该W1支架也可以作为模块构建。如果是,模块将被称为wire。

Power supply class support  --->

        在这里说Y以启用电源级别支持。这允许用户空间通过sysfs和uevent(如果可用)和/或APM内核接口(如果在下面选择)监控电源(电池、AC、USB)。

Adaptive Voltage Scaling class support  ----

        AVS是一种功率管理技术,它精细地控制设备的工作电压,以优化(即减少)其功耗。在给定的操作点,电压根据静态因素(芯片制造工艺)和动态因素(取决于温度的性能)进行调整。AVS在OMAP设备上也称为SmartReflex。

Hardware Monitoring support  --->

        硬件监控设备允许您监控系统的硬件运行状况。大多数现代主板都包含这样的设备。它可以包括温度传感器、电压传感器、风扇速度传感器和各种附加功能,例如控制风扇速度的能力。如果您希望获得此支持,您应该在此处输入Y,并在下面输入您的传感器芯片的特定驱动程序。要确定需要哪个特定驱动程序,请使用lm_sensors包中的传感器检测脚本。阅读<file:Documentation/hwmon/userspace tools>了解详细信息。此支持也可以构建为模块。如果是,则该模块将被称为hwmon。

Generic Thermal sysfs driver  --->

        通用Thermal Sysfs驱动程序为热管理提供了通用机制。通常它由一个或多个热区和冷却装置组成。每个热区都有自己的温度、跳闸点和冷却装置。所有具有ACPI热支持的平台都可以使用此驱动程序。如果你想要这种支持,你应该在这里说Y或M。

Watchdog Timer Support  --->

        如果您在这里说Y(并对以下选项之一),并使用mknod(“man mknod”)创建一个主要编号为10、次要编号为130的字符特殊文件/dev/watchdog,您将得到一个看门狗,即:随后打开文件,然后在超过1分钟的时间内未能写入该文件将导致机器重新启动。这对于需要在锁定后尽快恢复联机的联网机器可能很有用。有一个完全在软件中实现的看门狗(有时无法重新启动机器)和一个硬件看门狗板的驱动程序,它们更强大,也可以跟踪计算机内部的温度。有关详细信息,请阅读内核源代码中的<file:Documentation/owatch/api.txt>。看门狗通常与看门狗守护程序一起使用<ftp://ibiblio.org/pub/Linux/system/daemons/watchdog/>. 此守护程序还可以监视NFS连接,并可以在进程表已满时重新启动计算机。

Sonics Silicon Backplane  --->

        支持Sonics Silicon背板总线。如果要使用此总线为嵌入式系统配置内核,则只需启用此选项。如果在其他环境中需要,它将被自动选择。该模块将被称为ssb。

Broadcom specific AMBA  --->

        Broadcom专用高级微控制器总线架构的总线驱动程序。

Multifunction device drivers  --->

        多功能设备驱动程序

Voltage and Current Regulator Support  --->

        通用电压和电流调节器支持。该框架旨在为Linux内核内的电压和电流调节器提供通用接口。它旨在为客户端或用户驱动程序提供电压和电流控制,并通过sysfs接口向用户空间应用程序提供状态信息。其目的是允许系统动态控制调节器输出,以节省电力并延长电池寿命。这适用于电压调节器(电压输出可控)和电流吸收器(电流输出可控)。如果不选择此框架,则该框架可以安全地编译,以便客户端驱动程序仍然可以在没有软件可控调节器的系统中使用。

Multimedia support  --->

Graphics support  --->

Sound card support  --->

        如果你的电脑里有声卡,也就是说,如果它能发出不止一声的嘟嘟声,就说“Y”。确保你的声卡及其配置(i/O端口、中断和DMA通道)的所有信息都已关闭,因为你会被要求使用它。你想阅读sound HOWTO,可从<http://www.tldp.org/docs.html#howto>. 有关模块化音响系统的一般信息包含在文件<file:Documentation/sound/oss/Induction>中。文件<file:Documentation/sound/oss/README.oss>包含一些稍微过时但仍然有用的信息。更新的声音驱动程序文档可在<file:documentation/sound/alsa/*>中找到。如果您有一个PnP声卡,并且希望在启动时使用ISA PnP工具对其进行配置(请阅读<http://www.roestock.demon.co.uk/isapnptools/>),则需要将声卡支持编译为模块,并在PnP配置完成后加载该模块。要执行此操作,请在此处选择M并阅读<file:Documentation/sound/oss/README.modules>;该模块将被称为soundcore。

HID support  --->

USB support  --->

 

Ultra Wideband devices  ----

        UWB是一种高带宽、低功耗、点对点无线技术,使用宽带(3.1-10.6GHz)。它针对室内使用进行了优化(2米处为480Mbps,10米处为110Mbps)。它充当其他协议的传输层,例如无线USB(WUSB)。拓扑是对等的;然而,更高级别的协议(例如WUSB)可能会强加主/从关系。如果您的计算机具有基于UWB无线电控制器(USB或PCI),请在此处输入Y。您需要启用以下无线电控制器。选择所有这些都是可以的,不会造成伤害。有关更多帮助,请查看<file:Documentation/usb/>中的UWB和WUSB相关文件。要将UWB堆栈编译为模块,请在此处选择M。

MMC/SD/SDIO card support  --->

Sony MemoryStick card support  ----

        Sony MemoryStick卡支持,Sony MemoryStick是一种专有的存储/扩展卡协议。如果你想要MemoryStick支持,你应该在这里说“是”,同时也要告诉你的MemoryStike接口的特定驱动程序。

MXC support drivers  --->

        这是I.MX系列原厂相关驱动支持

LED Support  --->

Accessibility support  ----

        无障碍处理所有特殊类型的硬件设备或软件适配器,帮助残疾人(如盲人)使用计算机。这包括盲文设备、语音合成、键盘重新映射等。在这里说“Y”以查看可访问性选项。仅此选项不会添加任何内核代码。如果您选择“否”,将跳过并禁用此子菜单中的所有选项。

EDAC (Error Detection And Correction) reporting  ----

        EDAC(错误检测和纠正)报告,EDAC旨在报告核心系统中的错误。这些是CPU或支持芯片组或其他子系统中报告的低级错误:内存错误、缓存错误、PCI错误、热节流等。如果不确定,请选择“Y”。如果此代码报告您的系统出现问题,请参阅EDAC项目网页以获取更多信息,网址:<http://bluesmoke.sourceforge.net/>以及:<http://buttersideup.com/edacwiki>EDAC项目还有一个邮件列表,可以通过sourceforge页面找到。

Real Time Clock  --->

        RTC时钟支持

DMA Engine support  --->

Auxiliary Display support  ----

        在这里说Y,以查看辅助显示驱动程序的选项。仅此选项不会添加任何内核代码。如果您选择“否”,将跳过并禁用此子菜单中的所有选项。

Userspace I/O drivers  ----

        启用此选项以允许构建用户空间驱动程序核心代码。该代码允许用户空间程序轻松访问内核中断和内存位置,允许在用户空间中编写一些驱动程序。注意,中断处理也需要一个小的内核驱动程序才能正常工作。

Virtualization drivers  ----

        在这里说Y,以了解支持虚拟化环境的设备驱动程序的选项。如果您选择“否”,将跳过并禁用此子菜单中的所有选项。

Virtio drivers  --->

        和虚拟化相关

Microsoft Hyper-V guest support  ----

        Microsoft Hyper-V支持

Staging drivers  --->

        此选项允许您选择许多不属于“正常”Linux内核质量级别的驱动程序。这些驱动程序放在这里是为了让更广泛的受众使用它们。请注意,这些驱动程序正在大量开发中,可能工作,也可能不工作,并且可能包含用户空间界面,这些界面很可能会在不久的将来更改。使用这些驱动程序中的任何一个都会污染内核,这可能会影响社区和各种商业支持组织的支持选项。如果您希望处理这些驱动程序,以帮助改进它们,或报告与它们相关的问题,请查看drivers/stating/目录中的driver_name.README文件,以了解需要处理的内容,以及联系谁。

Platform support for Chrome hardware  ----

        Chrome硬件平台支持

Common Clock Framework  ---> 

        通用时钟框架

Hardware Spinlock drivers  ----

        硬件Spinlock驱动程序

Clock Source drivers  --->

        此选项支持基于ARM架构计时器的事件流生成。它用于唤醒执行wfe指令的CPU,其频率表示为时钟速率的2次幂除数。事件流的主要用途是基于wfe的用户空间锁定实现超时。在未生成预期事件的情况下,对wfe强制超时以防止任何编程错误也可能很有用。出于硬件验证目的,必须禁用此功能,以检测丢失事件的任何硬件异常。

Mailbox Hardware Support  ----

        邮箱硬件支持,邮箱是一种通过排队消息和中断驱动信号控制芯片处理器之间硬件通信的框架。如果您的平台支持硬件邮箱,请说Y。

IOMMU Hardware Support  ----

        如果要将IO内存管理单元的设备驱动程序编译到内核中,请在此处输入Y。这些设备通常允许重新映射DMA请求和/或重新映射来自系统上其他设备的中断。

Remoteproc drivers  --->

        在这里说y或m以支持STE调制解调器共享内存驱动程序。它可以是内置的或可加载的模块。如果不确定,请说N。

Rpmsg drivers  --->

SOC (System On Chip) specific Drivers  --->

        SOC(片上系统)专用驱动程序

Generic Dynamic Voltage and Frequency Scaling (DVFS) support  ----

        通用动态电压和频率缩放(DVFS)支持

External Connector Class (extcon) support  ----

        外部连接器类(extcon)支持

Memory Controller drivers  ----

        内存控制器驱动程序

Industrial I/O support  --->

        工业I/O支持,即IIO

Pulse-Width Modulation (PWM) Support  --->

IndustryPack bus support  ---- 

        IndustryPack总线支持

Reset Controller Support  ----

        通用重置控制器支持。该框架旨在通过GPIO或SoC内部重置控制器模块抽象设备的重置处理。

GPIO reset controller support

        该驱动器支持由GPIO直接控制的复位线。

FMC support  ----

        FMC(FPGA夹层载体)是插入载体板的夹层卡的机械和电气标准。该内核子系统支持基于存储在内部I2C EEPROM中的标识符在载体和夹层之间进行匹配,并具有独立于载体的驱动程序。框架诞生于内核之外,此时树外代码库更加完整。代码和文档位于git://ohwr.org/fmc-projects/fmc-bus.git .

PHY Subsystem  --->

        PHY子系统

Generic powercap sysfs driver  ----

        功率封顶sysfs接口允许内核子系统以一致的方式向用户空间公开功率封顶设置。通常,它由多个控制类型组成,这些控制类型确定哪些设置可能被暴露,以及表示系统中可能受到功率限制的部分的功率区域。

MCB support  ----

        MCB(MEN变色龙总线)是一种专用于基于FPGA的MEN Mikroelektronik设备的总线。它用于识别FPGA内基于MCB的IP核,并为这些设备的驱动程序提供必要的框架。

Android  --->

        支持Android平台上所需的各种驱动程序

Firmware Drivers

将固件提供的(未修改的)内存映射添加到/sys/files/memmap。例如,kexec使用该内存映射为下一个内核设置参数区域,但也可以用于调试目的。另请参阅文档/ABI/testing/sysfs固件memmap。

File systems

 

Second extended fs support

        Ext2是用于硬盘的标准Linux文件系统。要将此文件系统支持编译为模块,请在此处选择M:该模块将被称为ext2。

Ext2 extended attributes

        扩展属性是内核或用户与inode关联的名称:值对(请参阅attr(5)手册页,或访问<http://acl.bestbits.at/>详细信息)。

Ext2 POSIX Access Control Lists

        Posix访问控制列表(ACL)支持所有者/组/世界方案之外的用户和组的权限。要了解有关访问控制列表的更多信息,请访问Posix ACL for Linux网站<http://acl.bestbits.at/>.  如果您不知道访问控制列表是什么,请说N

Ext2 Security Labels

        安全标签支持SELinux等安全模块实现的替代访问控制模型。该选项为ext2文件系统中的文件安全标签启用扩展属性处理程序。如果您没有使用需要为文件安全标签使用扩展属性的安全模块,请说N。

Ext3 journalling file system support

        这是第二扩展文件系统(通常称为ext3)的日志版本,这是事实上用于硬盘的标准Linux文件系统(在存储设备上组织文件的方法)。此驱动程序中包含的日志代码意味着在崩溃后不必在文件系统上运行e2fsck(文件系统检查器)。日志记录系统崩溃时所做的任何更改,可以确保文件系统一致,而无需进行冗长的检查。除了将日志添加到文件系统之外,ext3的磁盘格式与ext2相同。只要文件系统已完全卸载,或者e2fsck在文件系统上运行,就可以在使用ext3驱动程序和ext2驱动程序之间自由切换。要在现有的ext2文件系统上添加日志或更改ext3文件系统的行为,可以使用tune2fs实用程序(“mantune2fs”)。要修改ext3文件系统上文件和目录的属性,请使用chatr(“manchatr”)。您需要使用e2fsprogs 1.20或更高版本才能创建ext3日志(可在<http://sourceforge.net/projects/e2fsprogs/>).  要将此文件系统支持编译为模块,请在此处选择M:该模块将被称为ext3。

Default to 'data=ordered' in ext3

        ext3的日志模式选项在保证数据在磁盘上的时间和性能之间有不同的权衡。使用“data=writeback”会导致系统崩溃或电源故障后文件中出现未写入的数据,这可能是一个安全问题。然而,“data=ordered”模式也会导致严重的性能问题,包括fsync()调用返回前的秒长延迟。有关详细信息,请参阅:http://ext4.wiki.kernel.org/index.php/Ext3_data_mode_tradeoffs如果您一直对ext3的性能感到满意,那么data=order模式将是一个安全的选择,您应该在这里回答“y”。如果您了解数据回写的可靠性和数据隐私问题,并愿意进行权衡,请回答“否”。

Ext3 extended attributes

        扩展属性是内核或用户与inode关联的名称:值对(请参阅attr(5)手册页,或访问<http://acl.bestbits.at/>详细信息)。

Ext3 POSIX Access Control Lists

        Ext3 POSIX访问控制列表

Ext3 Security Labels

        Ext3安全标签

The Extended 4 (ext4) filesystem

        扩展4(ext4)文件系统

Ext4 POSIX Access Control Lists

        Ext4 POSIX访问控制列表

Ext4 Security Labels

        Ext4安全标签

Ext4 Encryption

        Ext4加密

EXT4 debugging support

        EXT4调试支持

JBD (ext3) debugging support

        JBD(ext3)调试支持

JBD2 (ext4) debugging support

        JBD(ext4)调试支持

Reiserfs support

        Reiserfs支持,

JFS filesystem support

        这是IBM的日志文件系统的一个端口。文件<file:Documentation/filess/jfs.txt>中提供了更多信息。

XFS filesystem support

        XFS是源于SGI IRIX平台的高性能日志文件系统。它完全是多线程的,可以支持大型文件和大型文件系统、扩展属性、可变块大小、基于数据块,并广泛使用Btree(目录、数据块、可用空间)来提高性能和可扩展性。请参阅以下文档:<http://oss.sgi.com/projects/xfs/>了解完整的详细信息。该实现在磁盘上与XFS的IRIX版本兼容。要将此文件系统支持编译为模块,请在此处选择M:该模块将被称为xfs。但是,请注意,如果根分区的文件系统被编译为模块,则需要使用初始ramdisk(initrd)来启动。

GFS2 file system support

        GFS2文件系统支持

OCFS2 file system support

        OCFS2文件系统支持

Btrfs filesystem support

        Btrfs文件系统支持

NILFS2 file system support

        NILFS2文件系统支持

F2FS filesystem support

        F2FS文件系统支持

Enable POSIX file locking API

        启用POSIX文件锁定API

Dnotify support

        Dnotify支持

Inotify support for userspace

        对用户空间的优化支持

Filesystem wide access notification

        文件系统范围的访问通知

Quota support

        配额支持

Report quota messages through netlink interface

        通过netlink接口报告配额消息

Print quota warnings to console (OBSOLETE)

        将配额警告打印到控制台(已过时)

Additional quota sanity checks

        其他配额健全性检查

Old quota format support

        旧配额格式支持

Quota format vfsv0 and vfsv1 support

        配额格式vfsv0和vfsv1支持

Kernel automounter version 4 support (also supports v3)

        内核自动计数器版本4支持(也支持v3)

FUSE (Filesystem in Userspace) support

        FUSE(用户空间中的文件系统)支持

Character device in Userspace support

        用户空间中的字符设备支持

Overlay filesystem support

        覆盖文件系统支持,overlay常用于路由设备中

Caches  --->

        通用文件系统本地缓存管理器

CD-ROM/DVD Filesystems  --->

DOS/FAT/NT Filesystems  --->

(iso8859-1) Default iocharset for FAT 

         将其设置为FAT要使用的默认输入/输出字符集。它可能与大多数FAT文件系统使用的字符集相匹配,并且可以用FAT文件系统的“iocharset”装载选项覆盖。注意,FAT文件系统不建议使用“utf8”。如果不确定,不应在此处设置“utf8”。有关详细信息,请参阅<file:Documentation/filess/vfat.txt>。启用文件系统/本机语言支持中所需的任何字符集。

Pseudo filesystems  --->

        虚拟文件系统支持

-/proc file system support

        这是一个虚拟文件系统,提供有关系统状态的信息。“虚拟”意味着它不占用硬盘上的任何空间:当您尝试访问文件时,内核会动态创建文件。此外,你不能少用旧版本的程序读取文件:你需要使用更多或cat。这很酷;例如,“cat/proc/interrupts”提供了当前使用不同IRQ的信息(您的计算机中有少量中断请求行,连接的设备使用这些中断请求行来获得CPU的注意——如果两个设备错误地配置为使用相同的IRQ,这通常是麻烦的来源)。程序procinfo显示从/proc文件系统收集的有关系统的一些信息。在您可以使用/proc文件系统之前,必须安装它,这意味着必须在目录层次结构中为它指定一个位置。该位置应为/proc。诸如“mount-t proc proc/proc”之类的命令或/etc/fstab中的等效行执行此任务。/proc文件系统在文件<file:Documentation/filess/proc.txt>和proc(5)手册页(“man 5 proc”)中进行了解释。这个选项会将内核放大大约67KB。有几个程序依赖于此,所以每个人都应该在这里说Y。

-Sysctl support (/proc/sys)

        sysctl接口提供了一种动态更改某些内核参数和变量的方法,而无需重新编译内核或重新启动系统。主接口通过/proc/sys。如果您在这里说Y,那么将在/proc/sys目录下生成一个可修改的sysctl条目树。它们在<file:Documentation/sysctl/>中的文件中进行了解释。请注意,启用此选项会将内核放大至少8KB。因为这通常是一件好事,所以您应该在这里说Y,除非为安装/救援磁盘构建内核,或者您的系统内存非常有限。

-Enable /proc page monitoring

        存在各种/proc文件来监视进程内存利用率:/proc/pid/smaps、/proc/pic/clear_refs、/proc/pid/pagemap、/proc/kpagecount和/proc/kpage flags。禁用这些接口将使内核的大小减少约4kb。

-sysfs file system support

        sysfs文件系统是一个虚拟文件系统,内核使用它来导出内部内核对象、它们的属性以及它们之间的关系。用户可以使用sysfs来确定有关正在运行的内核的有用信息,例如内核在每条总线上发现的设备以及每个设备绑定到哪个驱动程序。sysfs还可以用于调整设备和其他内核子系统。一些系统代理依赖sysfs中的信息进行操作/sbin/hotplug使用sysfs中的设备和对象属性来协助委派策略决策,如持久命名设备。块子系统当前使用sysfs来装载根分区。如果禁用了sysfs,则必须在内核引导命令行上通过其主要和次要编号指定引导设备。例如,/dev/hda1为“root=03:01”。嵌入式系统的设计者可能希望在这里说N以节省空间。

-Tmpfs virtual memory file system support (former shm fs)

        Tmpfs是一个将所有文件保存在虚拟内存中的文件系统。tmpfs中的所有内容都是临时的,因为不会在硬盘上创建任何文件。这些文件存在于内存和交换空间中。如果卸载tmpfs实例,其中存储的所有内容都将丢失。有关详细信息,请参阅<file:Documentation/filess/tmpfs.txt>。

-Tmpfs POSIX Access Control Lists

-Tmpfs extended attributes

-Userspace-driven configuration filesystem

        configfs是一个基于RAM的文件系统,它提供了与sysfs相反的功能。其中sysfs是内核对象的基于文件系统的视图,configfs则是内核对象或config_items的基于文件的管理器。sysfs和configfs可以并且应该同时存在于同一系统中。一个不能替代另一个。

Miscellaneous filesystems  --->

 ***JFFS2文件系统常用于spi flash中***

-Journalling Flash File System v2 (JFFS2) support

-JFFS2 debugging verbosity (0 = quiet, 2 = noisy)

-JFFS2 write-buffering support

-Verify JFFS2 write-buffer reads

-JFFS2 summary support

-JFFS2 XATTR support

-Advanced compression options for JFFS2

 ***ubifs文件系统常用于nand flash中***

-UBIFS file system support

***squashfs是一种只读文件系统,常用于网络设备中,如路由器***

-SquashFS 4.0 - Squashed file system support

Network File Systems  ---> 

        网络文件系统主要配合NFS工具使用,用于从网络挂载文件系统,该功能常用于文件系统测试阶段

Native language support  --->

        该配置主要是对文件系统字符集的配置,不同的文件系统可能需要不同的字符集!

Distributed Lock Manager (DLM)

        用于内核或用户空间应用程序的通用分布式锁管理器。

Kernel hacking

 

printk and dmesg options  --->

-Show timing information on printks

        显示打印时间信息,选择此选项会将printk()消息的时间戳添加到syslog()系统调用的输出和控制台。时间戳始终在内部记录,并导出到/dev/kmsg。此标志仅指定是否应包含时间戳,而不是记录时间戳。该行为也由内核命令行参数printk.time=1控制。请参阅文档/kernel-parameters.txt

-(4) Default message log level (1-7)

        没有指定优先级的printk语句的默认日志级别。这至少从2.6.10开始就被硬编码为KERN_WARNING,但仔细审核日志的人可能希望将其设置为较低的优先级。

-Delay each boot printk message by N milliseconds

        这个构建选项允许您通过在每个启动消息之后插入一个短延迟来读取内核启动消息。延迟在内核命令行上使用“boot_delay=N”以毫秒为单位指定。您可能还需要使用“lpj=M”来预设“每个jiffie的循环数”值。请参阅上一个引导日志,了解要用于系统的“lpj”值,然后在设置“boot_delay=N”之前设置“lpj=M”。注意:使用此选项可能会对SMP系统产生不利影响。即,第一个处理器以外的处理器可能无法启动。BOOT_PRINTK_DELAY也可能导致LOCKUP_DETECTOR检测到它认为是锁定条件的情况。

-Enable dynamic printk() support

        启用动态printk()支持

Compile-time checks and compiler options  --->

-Compile the kernel with debug info

        如果您在这里说Y,则生成的内核映像将包含调试信息,从而生成更大的内核映像。这将向内核和模块(gcc-g)添加调试符号,如果您打算在内核上使用内核crashdump或二进制对象工具(如crash、kgdb、LKCD、gdb等),则需要该符号。只有当您计划调试内核时,才在这里说Y。

-Enable __deprecated logic

        启用__deprecated逻辑

-Enable __must_check logic

        启用__must_check逻辑

-(1024) Warn for stack frames larger than (needs gcc 4.4)

        告诉gcc在构建时警告大于此值的堆栈帧。将此值设置得过低将导致大量警告。将其设置为0将禁用警告。需要gcc 4.4

-Strip assembler-generated symbols during link

        在链接期间去除内部汇编程序生成的符号(看起来像“.Lxxx”的符号),这样它们就不会污染get_wchan()等的输出。

-Generate readable assembler code

        禁用一些编译器优化,这些优化会生成人类无法读取的汇编程序输出。这可能会使内核稍微慢一点,但这有助于让那些经常盯着汇编程序清单的内核开发人员保持理智。

-Enable unused/obsolete exported symbols

        未使用但导出的符号会使内核不必要地变大。出于这个原因,这些未使用的出口将很快被删除。该选项是临时提供的,以在某些外部内核模块无论如何都需要这些符号之一的情况下提供过渡期。如果您在模块中遇到这种情况,请考虑是否实际使用了正确的API。(理由:由于内核中没有人在模块中使用它,所以很有可能它实际上是错误的接口)。如果您确实需要该符号,请向linux内核邮件列表发送一封邮件,说明该符号以及您真正需要它的原因,以及模块的主线内核合并计划是什么。

-Track page owner

        这可以跟踪页面的所有者是什么调用链,这可能有助于查找空的alloc_page泄漏。即使在构建中包含此功能,默认情况下也会禁用此功能。您应该将“page_owner=on”传递给启动参数以启用它。如果启用,则会消耗大量内存。有关用户空间助手,请参见tools/vm/page_owner_sort.c。

-Debug Filesystem

        debugfs是内核开发人员用来将调试文件放入其中的虚拟文件系统。启用此选项可以读取和写入这些文件。有关debugfs API的详细文档,请参阅documentation/DocBook/filess。

-Run 'make headers_check' when building vmlinux

        该选项将在构建内核时提取用户可见的内核头文件,并对其运行基本的健全性检查,以确保导出的文件不会试图包含未导出的文件等。如果要修改与用户空间相关的头文件,请说“Y”,并检查导出到$(INSTALL_HDR_PATH)的头(通常是构建树中的“usr/include”),以确保它们合适。

-Enable full Section mismatch analysis

        启用完整节不匹配分析

-Force weak per-cpu definitions

        强制弱每cpu定义

Magic SysRq key

        如果您在这里说Y,那么即使系统在内核调试期间崩溃(例如,您将能够将缓冲缓存刷新到磁盘、立即重新启动系统或转储一些状态信息),您也可以对系统进行一些控制。这是通过按住SysRq(Alt+PrintScreen)的同时按下各种键来完成的。它也可以在串行控制台上工作(至少在PC硬件上),如果您发送BREAK,然后在5秒内按下命令键。这些密钥记录在<file:Documentation/sysrq.txt>中。除非你真的知道这个黑客会做什么,否则不要说Y。

(0x1) Enable magic SysRq key functions by default

        指定默认情况下启用的SysRq键功能。这可以设置为1或0以启用或禁用它们,或设置为Documentation/sysrq.txt中所述的位掩码。

Kernel debugging

        如果您正在开发驱动程序或试图调试和识别内核问题,请在此处输入Y。

Memory Debugging  --->

Debug shared IRQ handlers

        启用此选项可在共享中断处理程序注册后立即生成一个虚假中断,而恰好在取消注册之前。驾驶员应该能够处理在这些点出现的中断;有些人没有,需要抓住。

Debug Lockups and Hangs  --->

        在这里说Y,以使内核充当看门狗来检测硬锁定和软锁定。软锁定是导致内核在内核模式下循环超过20秒而不给其他任务运行机会的错误。检测到时显示当前堆栈跟踪,系统将保持锁定状态。硬锁定是导致CPU在内核模式下循环超过10秒,而不让其他中断有机会运行的错误。检测到时显示当前堆栈跟踪,系统将保持锁定状态。开销应该最小。一个周期性的hr计时器运行,每4秒产生一次中断并启动看门狗任务。每10秒左右生成一次NMI,以检查硬锁定。hrtimer和NMI事件的频率以及软锁定和硬锁定阈值可以通过sysctl watchdog_thresh来控制。

Panic on Oops

        在这里说Y,以使内核在溢出时崩溃。这与在内核命令行上设置oops=panic具有相同的效果。这个特性有助于确保内核在oops之后不会做任何可能导致数据损坏或其他问题的错误。

(0) panic timeout

        设置超时值(以秒为单位),直到内核死机时重新启动。如果n=0,那么我们将永远等待。超时值n>0将在重新启动前等待n秒,而超时值n<0将立即重新启动。

Collect scheduler debugging info

        如果您在这里说Y,那么将提供/proc/sched_debug文件,该文件可以帮助调试调度器。此选项的运行时开销最小。

Collect scheduler statistics

        如果您在这里说Y,那么将在调度器和相关例程中插入额外的代码,以收集有关调度器行为的统计信息,并在/proc/schedstat中提供这些信息。这些统计数据可能对调整和调试调度程序都有用。如果您没有调试调度程序或试图调整特定的应用程序,您可以说N,以避免增加非常小的开销。

Detect stack corruption on calls to schedule()

        此选项检查对schedule()的调用是否存在堆栈溢出。如果发现堆栈结束位置被过度写入,则始终会死机,因为损坏区域的内容不再可信。这是为了确保在检查区域后,不会出现可能导致数据损坏或稍后阶段偶发崩溃的错误行为。引入的运行时开销很小。

Enable extra timekeeping sanity checking

        此选项将启用额外的计时健全性检查,这可能有助于诊断怀疑存在计时问题的问题。这可能包括在计时热路径中进行检查,因此此选项可能会对某些工作负载产生(非常小的)性能影响。

Collect kernel timers statistics

        如果您在这里说Y,那么将在计时器例程中插入额外的代码,以收集有关正在重新编程的内核计时器的统计信息。可以从/proc/timer_stats中读取统计信息。统计信息收集是通过向/proc/timer_stats写入1开始的,如果写入0则会停止。此功能对于收集内核和用户空间中计时器使用模式的信息非常有用。如果在内核配置中启用但未激活此功能,则此功能是轻量级的(默认情况下,它在启动时被禁用,并且只有在某些应用程序(如powertop)明确激活时才会被激活)。

Debug preemptible kernel

        如果您在这里说Y,那么内核将使用常用smp_processor_id()函数的调试变体,如果内核代码以抢占不安全的方式使用它,则会打印警告。此外,内核将检测抢占计数下溢。

Lock Debugging (spinlocks, mutexes, etc...)  --->

-RT Mutex debugging, deadlock detection

        这允许自动检测和报告rt互斥语义冲突和rt互斥相关死锁(锁定)。

-Spinlock and rw-lock debugging: basic checks

        在这里说Y,并构建SMP以捕获丢失的自旋锁初始化和其他常见的自旋锁错误。这最好与NMI监视器一起使用,这样自旋锁死锁也可以调试。

-Mutex debugging: basic checks

        该特性允许检测和报告互斥语义冲突。

-Wait/wound mutex debugging: Slowpath testing

        该功能通过注入额外的-EEDADLK伤口/退避案例,实现了w/w互斥用户的慢路径测试。连同使用(CONFIG_PROVE_LOCKING)启用的完全互斥锁检查,这将测试所有可能的w/w互斥锁接口滥用,只是没有获取所有所需的锁。请注意,此功能可能会引入大量开销,因此实际上不应在生产或发行版内核中启用,甚至不应在调试内核中启用。如果您是驱动程序编写者,请启用它。如果您是发行版,请不要启用它。

-Lock debugging: detect incorrect freeing of live locks

        此功能将检查内核是否通过任何内存释放例程(kfree()、kmem_cache_free()、free_pages()和vfree()等)错误地释放了任何持有的锁(spinlock、rwlock、mutex或rwsem),是否通过spin_lock_init()/mutex_init(。,或者在任务退出期间是否有任何锁定。

-Lock debugging: prove locking correctness

        锁调试:证明锁的正确性

-Lock usage statistics

        锁使用统计信息

-Sleep inside atomic section checking

        睡眠内部原子部分检查

-Locking API boot-time self-tests

        锁定API启动时自检

-torture tests for locking

        锁定的酷刑测试

Stack backtrace support

        堆栈回溯支持

kobject debugging

        对象调试

Verbose BUG() reporting (adds 70K)

        详细BUG()报告(增加70K)

Debug linked list manipulation

        调试链接列表操作

Debug priority linked list manipulation

        调试优先级链接列表操作

Debug SG table operations

        调试SG表操作

Debug notifier call chains

        调试通知程序调用链

Debug credential management

        调试凭据管理

RCU Debugging  --->

        RCU调试

Force extended block device numbers and spread them

        强制扩展块设备编号并扩展它们

Notifier error injection

        通知程序错误注入

Fault-injection framework

        故障注入框架

Tracers  --->

        跟踪调试

Runtime Testing  --->

        运行时测试

Enable debugging of DMA-API usage

        启用DMA-API使用调试

Test module loading with 'hello world' module

        使用“hello world”模块加载测试模块

Test user/kernel boundary protections

        测试用户/内核边界保护

Test BPF filter functionality

        测试BPF过滤器功能

Test firmware loading via userspace interface

        通过用户空间界面测试固件加载

udelay test driver

        udelay测试驱动程序

Memtest

        此选项添加了一个内核参数“memtest”,允许设置memtest。
        memtest=0,表示禁用;--违约
        memtest=1,平均do 1测试模式;
        memtest=17,平均做17个测试模式。
        如果您不确定如何回答这个问题,请回答N

Sample kernel code  ----

        您可以在这里构建和测试示例内核代码。

KGDB: kernel debugger  ----

        如果您在这里说Y,则可以使用gdb远程调试内核。建议您也打开内核配置选项config_FRAME_POINTER,以帮助在外部调试器中生成更可靠的堆栈回溯。内核调试器的文档可在http://kgdb.sourceforge.net以及文档/DocBook/中的DocBook形式。如果不确定,请说N。

Export kernel pagetable layout to userspace via debugfs

        通过debugfs将内核页表布局导出到用户空间

Filter access to /dev/mem

        筛选对/dev/mem的访问,如果禁用此选项,则允许用户空间(root)访问所有内存,包括内核和用户空间内存。意外访问这显然是灾难性的,但调试内核的人可以使用特定的访问。如果打开此选项,/dev/mem文件仅允许用户空间访问内存映射的外围设备。

Enable stack unwinding support (EXPERIMENTAL)

        启用堆栈展开支持(实验),此选项使用编译器自动生成的信息在内核中启用堆栈展开支持。生成的内核映像稍大,但性能不受影响。目前,此功能仅适用于EABI编译器。如果不确定,请说Y。

Verbose user fault messages

        详细的用户故障消息

Kernel low-level debugging functions (read help!)

        内核低级调试函数(阅读帮助!),在这里说Y,以在内核中包含printascii、printch和printhex的定义。如果您正在调试控制台初始化之前执行的代码,这将非常有用。请注意,选择此选项会将内核限制为单个UART定义,如下所示。尝试在不同的平台上启动内核映像*将不起作用*,因此不应为旨在移植的内核启用此选项。

Write the current PID to the CONTEXTIDR register

        将当前PID写入CONTEXTIDR寄存器,启用此选项会导致内核将当前PID写入CONTEXTIDR寄存器的PROCID字段,代价是在上下文切换期间执行一些附加指令。只有当您计划对这个内核使用硬件跟踪工具时,才在这里说Y。

Set loadable kernel module data as NX and text as RO

        将可加载内核模块数据设置为NX,将文本设置为RO

CoreSight Tracing Support  ----

        CoreSight跟踪支持,该框架为CoreSight调试和跟踪驱动程序提供了一个内核接口,以便在其中注册。它旨在基于DT规范构建CoreSight组件的拓扑视图,并在启用跟踪源时配置正确的组件系列。

Security options

 与安全有关的选项,通常我们不去改动配置,除非你知道你在做什么!

Cryptographic API

 与加密相关的API功能,包含各种加密算法,压缩算法,这通常是对应用需求就行的配置,一般不改动!详细内容可自行分析

 

 

Library routines

 这是对一些功能的支持库,通常我们不去改动配置,除非你知道你在做什么!

 

Virtualization