[Compiler](#Compiler General setup IRQ subsystem Compiler Timers subsystem CPU/Task time and stats accounting RCU Subsystem) | [General setup](#Compiler General setup IRQ subsystem Compiler Timers subsystem CPU/Task time and stats accounting RCU Subsystem) | [IRQ subsystem](#Compiler General setup IRQ subsystem Compiler Timers subsystem CPU/Task time and stats accounting RCU Subsystem) | [Compiler](#Compiler General setup IRQ subsystem Compiler Timers subsystem CPU/Task time and stats accounting RCU Subsystem) | [Timers subsystem](#Compiler General setup IRQ subsystem Compiler Timers subsystem CPU/Task time and stats accounting RCU Subsystem) |
---|---|---|---|---|
[CPU/Task time and stats accounting](#Compiler General setup IRQ subsystem Compiler Timers subsystem CPU/Task time and stats accounting RCU Subsystem) | [RCU Subsystem](#Compiler General setup IRQ subsystem Compiler Timers subsystem CPU/Task time and stats accounting RCU Subsystem) |
Compiler
CONFIG_CC_IS_GCC=y
:设置为y
表示使用的编译器是GNU Compiler Collection(GCC)。
CONFIG_GCC_VERSION=70201
:设置为70201
,表示GCC的版本号是7.2.1。
CONFIG_CLANG_VERSION=0
:设置为0
,表示没有使用Clang编译器,或者Clang版本不适用。
CONFIG_CC_HAS_ASM_GOTO=y
:设置为y
,表示编译器支持汇编语言中的goto
指令。
CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y
:设置为y
,表示编译器可以警告可能未初始化的变量。
CONFIG_IRQ_WORK=y
:设置为y
,启用中断工作机制,允许在中断处理程序中安排工作。
CONFIG_BUILDTIME_EXTABLE_SORT=y
:设置为y
,在内核构建时对异常表进行排序。
General setup
CONFIG_BROKEN_ON_SMP=y
:当设置为y
时,表示此配置项在对称多处理(SMP)系统上可能存在问题或不兼容。
CONFIG_INIT_ENV_ARG_LIMIT=32
:设置内核初始化时环境变量参数的数量限制为32。
CONFIG_COMPILE_TEST
:用于在编译时执行测试,启用此功能时配置为CONFIG_COMPILE_TEST=y
。
CONFIG_LOCALVERSION="-licheepi-nano"
:设置内核的本地版本后缀为"-licheepi-nano"。
CONFIG_LOCALVERSION_AUTO
:用于自动设置本地版本后缀,启用此功能时配置为CONFIG_LOCALVERSION_AUTO=y
。
CONFIG_BUILD_SALT=""
:设置构建时的随机盐值,可以通过自定义字符串来增强构建的唯一性。
CONFIG_HAVE_KERNEL_GZIP=y
:启用内核支持gzip压缩格式。
CONFIG_HAVE_KERNEL_LZMA=y
:启用内核支持LZMA压缩格式。
CONFIG_HAVE_KERNEL_XZ=y
:启用内核支持XZ压缩格式。
CONFIG_HAVE_KERNEL_LZO=y
:启用内核支持LZO压缩格式。
CONFIG_HAVE_KERNEL_LZ4=y
:启用内核支持LZ4压缩格式。
CONFIG_KERNEL_GZIP=y
:选择gzip作为内核映像的压缩方法。
CONFIG_KERNEL_LZMA
:未启用,用于选择LZMA压缩内核映像时配置为CONFIG_KERNEL_LZMA=y
。
CONFIG_KERNEL_XZ
:未启用,用于选择XZ压缩内核映像时配置为CONFIG_KERNEL_XZ=y
。
CONFIG_KERNEL_LZO
:未启用,用于选择LZO压缩内核映像时配置为CONFIG_KERNEL_LZO=y
。
CONFIG_KERNEL_LZ4
:未启用,用于选择LZ4压缩内核映像时配置为CONFIG_KERNEL_LZ4=y
。
CONFIG_DEFAULT_HOSTid="(none)"
:设置系统的默认主机名为"(none)"。
CONFIG_SWAP=y
:启用交换空间支持。
CONFIG_SYSVIPC
:未启用,用于启用System V IPC机制时配置为CONFIG_SYSVIPC=y
。
CONFIG_POSIX_MQUEUE
:未启用,用于启用POSIX消息队列时配置为CONFIG_POSIX_MQUEUE=y
。
CONFIG_CROSS_MEMORY_ATTACH=y
:启用跨内存域的内存附加功能。
CONFIG_USELIB
:未启用,用于使用外部库时配置为CONFIG_USELIB=y
。
CONFIG_AUDIT
:未启用,用于启用审计系统时配置为CONFIG_AUDIT=y
。
IRQ subsystem
CONFIG_GENERIC_IRQ_PROBE=y
:启用通用中断请求(IRQ)探测功能,这有助于在系统运行时检测和配置IRQ。
CONFIG_GENERIC_IRQ_SHOW=y
:启用显示IRQ信息的功能,通常用于诊断和调试。
CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
:启用显示IRQ的详细级别信息,有助于更深入地了解中断处理。
CONFIG_HARDIRQS_SW_RESEND=y
:启用软件重发硬件中断请求的功能,用于处理某些硬件中断的特殊需求。
CONFIG_GENERIC_IRQ_CHIP=y
:启用通用中断控制器芯片框架,简化对不同中断控制器的支持。
CONFIG_IRQ_DOMAIN=y
:启用中断域框架,用于管理中断号到处理程序的映射。
CONFIG_HANDLE_DOMAIN_IRQ=y
:启用中断域的中断处理,允许中断处理程序注册到中断域。
CONFIG_IRQ_FORCED_THREADING=y
:启用强制中断处理为线程化执行,提高某些中断处理的稳定性。
CONFIG_SPARSE_IRQ=y
:启用稀疏中断,允许中断号不连续,节省资源。
CONFIG_GENERIC_IRQ_DEBUGFS
:此配置项未设置,它用于启用IRQ相关的调试文件系统,启用时配置为CONFIG_GENERIC_IRQ_DEBUGFS=y
。
CONFIG_GENERIC_IRQ_MULTI_HANDLER=y
:启用支持单个IRQ由多个处理程序处理的功能。
CONFIG_ARCH_CLOCKSOURCE_DATA=y
:启用架构特定的时钟源数据,用于提供精确的计时服务。
CONFIG_GENERIC_CLOCKEVENTS=y
:启用通用的时钟事件设备框架,用于时钟事件管理。
Timers subsystem
CONFIG_TICK_ONESHOT=y
:启用一次性定时器模式,这是一种高效的定时器中断处理方式,可以减少定时器中断的开销。
CONFIG_NO_HZ_COMMON=y
:启用无固定频率的时钟节拍(tickless)的通用支持,允许系统在不需要时减少时钟中断。
CONFIG_HZ_PERIODIC
:它用于启用周期性时钟中断,启用时配置为CONFIG_HZ_PERIODIC=y
。
CONFIG_NO_HZ_IDLE=y
:启用空闲时钟节拍,当CPU处于空闲状态时,减少时钟中断以节省能源。
CONFIG_NO_HZ
:此配置项已启用,但具体配置未给出。通常,CONFIG_NO_HZ
用于定义系统是否采用完全的无时钟节拍调度,启用时配置为CONFIG_NO_HZ=y
。
CONFIG_HIGH_RES_TIMERS=y
:启用高精度定时器支持,提供更精确的时间测量功能。
CONFIG_PREEMPT_NONE=y
:设置内核为非抢占式内核,这意味着任务不能被其他任务抢占,直到它自己放弃CPU。
CONFIG_PREEMPT_VOLUNTARY
:用于启用自愿抢占,启用时配置为CONFIG_PREEMPT_VOLUNTARY=y
,允许任务在某些条件下被抢占。
CONFIG_PREEMPT
:用于启用完全抢占式内核,启用时配置为CONFIG_PREEMPT=y
,允许任务在任何时间被更高优先级的任务抢占。
CPU/Task time and stats accounting
CONFIG_TICK_CPU_ACCOUNTING=y
:启用基于时钟节拍的CPU时间统计功能,用于跟踪每个CPU的使用情况。
CONFIG_VIRT_CPU_ACCOUNTING_GEN
:它用于启用基于通用时钟的虚拟CPU时间统计,启用时配置为CONFIG_VIRT_CPU_ACCOUNTING_GEN=y
。
CONFIG_IRQ_TIME_ACCOUNTING
:它用于启用中断请求(IRQ)时间统计,启用时配置为CONFIG_IRQ_TIME_ACCOUNTING=y
。
CONFIG_BSD_PROCESS_ACCT
:它用于启用BSD风格的进程时间统计,启用时配置为CONFIG_BSD_PROCESS_ACCT=y
。
CONFIG_TASKSTATS
:它用于启用任务统计信息收集,启用时配置为CONFIG_TASKSTATS=y
。
CONFIG_PSI
:它用于启用压力位(Pressure Stall Information)的监控,启用时配置为CONFIG_PSI=y
。
RCU Subsystem
CONFIG_TINY_RCU=y
:启用轻量级的RCU实现,适用于小内存系统。
CONFIG_RCU_EXPERT
:RCU专家模式未设置,该模式提供更多RCU调优选项。
CONFIG_SRCU=y
:启用信号量式RCU,适用于需要等待多个完成的RCU操作。
CONFIG_TINY_SRCU=y
:启用轻量级的SRCU实现。
CONFIG_IKCONFIG
:表示CONFIG_IKCONFIG
选项未被设置,这通常用于启用内核配置的增量备份。
CONFIG_IKHEADERS
:表示CONFIG_IKHEADERS
选项未被设置,这用于启用内核头文件的增量备份。
CONFIG_LOG_BUF_SHIFT=17
:设置日志缓冲区的大小,17是缓冲区大小的2的幂次方,即128KB。
CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
:设置安全打印缓冲区的大小,13对应8KB。
CONFIG_GENERIC_SCHED_CLOCK=y
:启用通用调度器时钟,用于调度器性能优化。
CONFIG_CGROUPS=y
:启用控制组(cgroups),用于资源管理和进程隔离。
CONFIG_MEMCG
:内存控制组未被启用,用于限制进程组的内存使用。
CONFIG_BLK_CGROUP
、CONFIG_CGROUP_SCHED
等,都表示相应的cgroups特性未被启用。
CONFIG_NAMESPACES=y
:启用命名空间,用于隔离系统资源。
CONFIG_UTS_NS=y
:启用UTS(UNIX Time-Sharing)命名空间,用于隔离主机名和网络名称。
CONFIG_USER_NS
:用户命名空间未被启用,用于隔离用户和组ID。
CONFIG_PID_NS=y
:启用进程ID命名空间,用于隔离进程编号。
CONFIG_NET_NS=y
:启用网络命名空间,用于隔离网络设备和资源。
CONFIG_BLK_DEV_INITRD=y
:启用初始RAM磁盘设备,用于在启动时加载文件系统。
CONFIG_INITRAMFS_SOURCE=""
:初始RAM文件系统的源文件,这里为空,表示未指定。
CONFIG_RD_GZIP
、CONFIG_RD_BZIP2
等:启用不同的压缩算法支持,用于压缩内核映像或初始RAM文件系统。
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
:编译器优化以提高性能。
CONFIG_CC_OPTIMIZE_FOR_SIZE
:编译器优化以减小大小的选项未被启用。
CONFIG_SYSCTL=y
:启用系统控制,用于动态更改内核参数。
CONFIG_HAVE_UID16=y
:支持16位用户ID。
CONFIG_BPF=y
:启用BPF(Berkeley Packet Filter),用于高效的数据包过滤和网络监控。
CONFIG_MULTIUSER=y
:支持多用户。
CONFIG_SYSFS_SYSCALL=y
:启用sysfs系统调用,用于访问内核中的文件系统。
CONFIG_FHANDLE=y
:启用文件句柄支持。
CONFIG_POSIX_TIMERS=y
:启用POSIX定时器。
CONFIG_PRINTK
、CONFIG_PRINTK_NMI
等:启用不同的打印和调试选项。
CONFIG_BUG=y
:启用bug检测。
CONFIG_ELF_CORE=y
:启用ELF核心转储。
CONFIG_BASE_FULL=y
:启用完整的基本内存分配器。
CONFIG_FUTEX=y
、CONFIG_EPOLL
等:启用不同的系统调用,用于进程同步和I/O事件通知。
CONFIG_SHMEM=y
、CONFIG_AIO=y
等:启用共享内存、异步I/O等特性。
CONFIG_IO_URING=y
:启用io_uring,一种高效的异步I/O接口。
CONFIG_ADVISE_SYSCALLS=y
:启用内存分配建议系统调用。
CONFIG_MEMBARRIER=y
:启用内存屏障支持。
CONFIG_KALLSYMS=y
:启用内核符号导出。
CONFIG_KALLSYMS_BASE_RELATIVE=y
:设置内核符号的基地址为相对地址。
CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
:架构支持内存屏障同步核心。
CONFIG_RSEQ=y
:启用RSEQ,一种新的指令序列执行机制。
CONFIG_HAVE_PERF_EVENTS=y
:支持性能事件。
CONFIG_PERF_USE_VMALLOC=y
:使用vmalloc分配性能事件缓冲区。
CONFIG_PERF_EVENTS=y
:启用性能事件,这允许用户监控和测量系统和应用程序的性能。
CONFIG_VM_EVENT_COUNTERS=y
:启用虚拟内存事件计数器,这可以用于监控和分析内存相关的性能问题。
CONFIG_SLUB_DEBUG=y
:启用SLUB(Simplified LInux Memory Allocator)分配器的调试选项,这有助于检测内存分配和释放过程中的错误。
CONFIG_COMPAT_BRK=y
:启用对旧的brk
系统调用的兼容支持,brk
用于改变进程的数据段的大小。
CONFIG_SLAB
:表示旧的SLAB内存分配器没有被启用,SLAB是Linux内核中用于内存管理的一种机制。
CONFIG_SLUB=y
:启用SLUB内存分配器,这是SLAB分配器的一个简化版本,用于提高性能和简化实现。
CONFIG_SLAB_MERGE_DEFAULT=y
:设置默认情况下启用SLAB分配器的合并功能,这有助于减少内存碎片。
CONFIG_SLAB_FREELIST_RANDOM
:表示没有启用SLAB空闲列表的随机化特性,该特性可以提高系统的安全性。
CONFIG_SLAB_FREELIST_HARDENED
:表示没有启用SLAB空闲列表的硬化特性,这通常用于提高系统的安全性。
CONFIG_SHUFFLE_PAGE_ALLOCATOR
:表示没有启用页面分配器的洗牌特性,该特性可以提高系统的随机性和安全性。
CONFIG_SYSTEM_DATA_VERIFICATION=y
:启用系统数据验证,这有助于确保数据的完整性和防止数据损坏。
CONFIG_PROFILING
:表示没有启用内核的分析(profiling)功能,该功能用于收集关于系统性能的详细信息。
end of General setup
CONFIG_ARM=y
:启用ARM架构支持,这是ARM处理器专用的内核配置选项。
CONFIG_ARM_HAS_SG_CHAIN=y
:启用对散列表(scatter-gather)链的支持,这在DMA传输中非常有用。
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
:启用高级电源管理(APM)的仿真支持,这可以提供对旧的电源管理API的兼容性。
CONFIG_HAVE_PROC_CPU=y
:启用对/proc/cpu*
文件的支持,这些文件提供了CPU的信息。
CONFIG_STACKTRACE_SUPPORT=y
:启用内核栈回溯支持,这对于调试和分析内核崩溃非常有用。
CONFIG_LOCKDEP_SUPPORT=y
:启用锁依赖支持,这是内核中用于检测死锁和其他锁相关错误的机制。
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
:启用对IRQ标志的跟踪支持,这有助于调试与中断相关的代码。
CONFIG_FIX_EARLYCON_MEM=y
:修复早期控制台使用的内存,这有助于确保早期打印的稳定性。
CONFIG_GENERIC_HWEIGHT=y
:启用通用硬件权重支持,这通常用于CPU频率和负载均衡。
CONFIG_GENERIC_CALIBRATE_DELAY=y
:启用通用的延迟校准机制,用于校准延迟循环计时器。
CONFIG_ARCH_SUPPORTS_UPROBES=y
:表示架构支持用户态探针(uprobes),这允许在用户空间代码中设置断点。
CONFIG_ARM_PATCH_PHYS_VIRT=y
:为ARM架构提供物理到虚拟地址的补丁,这有助于处理物理地址到虚拟地址的转换。
CONFIG_GENERIC_BUG=y
:启用通用bug支持,这包括一些通用的bug处理机制。
CONFIG_PGTABLE_LEVELS=2
:设置页表级别为2,这通常用于内存管理,特别是在分页机制中。