Skip to content

Instantly share code, notes, and snippets.

@sp3c73r2038
Last active December 30, 2015 12:58
Show Gist options
  • Save sp3c73r2038/5607907 to your computer and use it in GitHub Desktop.
Save sp3c73r2038/5607907 to your computer and use it in GitHub Desktop.
My Kernel config record...

kernel version 3.8.13

  • CONFIG_BLOCK : Enable the block layer

http://cateee.net/lkddb/web-lkddb/BLOCK.html

关闭这个选项可能会引起一些block filesystem例如ext3不可用,建议Y

Processor type and features

  • CONFIG_SMP : Symmetric multi-processing support

http://cateee.net/lkddb/web-lkddb/SMP.html

支持对称多处理系统,如果有大于一颗CPU或者一颗CPU是多内核,则Y,否则N (已验证)

  • CONFIG_X86_MPPARSE : Enable MPS table

让老的smp系统拥有正确的ACPI支持,对于支持64bit的CPU来说,MADT和DSDT会覆盖此选项

  • CONFIG_X86_EXTENDED_PLATFORM : Support for extended (non-PC) x86 platforms

支持更多特性的平台,关闭此选项意味着只支持PC平台 (打开CONFIG_SMP,才有打开的意义)

  • CONFIG_SCHED_OMIT_FRAME_POINTER : Single-depth WCHAN output

更准确的/proc/<PID>/wchan状态显示,吃不准则Y

  • CONFIG_PARAVIRT_GUEST : Paravirtualized guest support

各种guest系统的支持,打开才能选择XEN、KVM等guest系统的kernel支持选项;对于host来说没必要

  • CONFIG_MEMTEST: Memtest

允许对kernel增加memtest=1参数执行内存测试,一般不需要

  • Processor family

根据实际CPU类型选择,如果kernel考虑不仅仅给一个CPU运行,则选择通用的i386或者x86_64选项,否则可以选择对应的类型,例如AMD K8、intel i系列可以用core2

  • CONFIG_CALGARY_IOMMU : IBM Calgary IOMMU support

IBM IOMMU 支持,对于32bit的系统与大于3GB的系统来说必要,否则PCI bus不支持DAC,则可能直接访问进内存;kernel参数 iommu=off可以关闭,下面也有选项是否默认启用该功能

实际效果未知,需要测试

具体参考 http://en.wikipedia.org/wiki/IOMMU

  • Preemption Model

资源抢占模型

  • CONFIG_PREEMPT_NONE : No Forced Preemption (Server) 传统Linux模型,调整为最大吞吐量,适用于服务器或科学计算工作站,
  • CONFIG_PREEMPT_VOLUNTARY : Voluntary Kernel Preemption (Desktop) 增加"抢占点",减少重新调度的最大延迟,以轻微的吞吐量损失换取提升程序的响应时间,适合桌面系统使用
  • CONFIG_PREEMPT : Preemptible Kernel (Low-latency Desktop) 所有kernel代码均可被抢占,更高的程序响应
  • CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS : Reroute for broken boot IRQs

修复伪中断引起的问题,在无法关闭多余的boot中断时推荐打开

  • CONFIG_X86_MCE : Machine Check / overheating reporting

机器检查,让kernel支持从系统/处理器发送过来的状态报告,根据不同的严重程序,采取从报警信息到关机等不同的操作

  • CONFIG_X86_MCE_INTEL : Intel MCE features Intel独有功能,例如温度监控
  • CONFIG_X86_MCE_AMD : AMD MCE features AMD独有功能,例如DRAM错误阈值
  • CONFIG_X86_MCE_INJECT : Machine check injector support

以测试目的的自检抽取报告功能,不是kernel QA的话关掉即可

  • CONFIG_I8K :Dell laptop support

仅在Dell Inspire 8000上做过测试,用于访问System Management Mode下的CPU,获取CPU温度,冷却风扇状态等信息;从选项名字上就可以看出(不要被Dell那个骗了XD),适用度尽显I8K,其他Dell笔电可能可以,但不保证,可以增加force=1参数

  • CONFIG_MICROCODE : CPU microcode loading support

支持更新CPU microcode (参考:) ,一般可以通过升级BIOS更新,kernel支持此选项直接更新,microcode来自CPU厂商;推荐编译成模块,根据CPU类型选择Intel还是AMD。

更多关于microcode https://wiki.archlinux.org/index.php/Microcode

  • CONFIG_X86_MSR : /dev/cpu/*/msr - Model-specific register support

允许特殊权限进程访问MSR 效果未知,需要测试 (看到大多数都编译为模块,但基本都没用到)

  • CONFIG_X86_CPUID : /dev/cpu/*/cpuid - CPU information support

允许特殊权限进程访问CPUID 效果未知,需要测试 (看到大多数都编译为模块,但基本都没用到)

  • Memory model

内存模型

  • CONFIG_SPARSEMEM_MANUAL : SparseMemory 部分系统唯一的选择(似乎现代PC,X86都是),其他系统还有"Discontiguous Memory"和"Flat Memory",优先选择它们
  • CONFIG_SPARSEMEM_VMEMMAP : Sparse Memory virtual memmap

利用虚拟映射的memmap来提高pfn_to_page和page_to_pfn操作的性能,这是kernel resource选项里能提供的最高性能选项,推荐Y

  • CONFIG_MEMORY_HOTPLUG : Allow for memory hot-add

允许内存热插(没有拔哦),其实没啥用。。N吧

  • CONFIG_COMPACTION : Allow for memory compaction

允许分配大块page时,内存压缩;注意,打开此选项下面的CONFIG_MIGRATION才能启用,Y

  • CONFIG_MIGRATION : Page migration

允许内存虚拟地址不变,而将物理页迁移位置,在NUMA系统将物理页迁移到CPU访问的地址段时,以及分配大内存块时迁移位置而不用重新申明分配时很有用;好处显而易见,Y吧

  • CONFIG_KSM : Enable KSM for page merging

定时扫描应用程序的地址空间检查内存内容是否一致,如果一致则可以合并;在一个应用程序修改起内容前可以节省内存空间。推荐和KVM一起使用;一般情况下N吧 (实际效果需要测试)

  • CONFIG_DEFAULT_MMAP_MIN_ADDR : Low address space to protect from user application

防止用户程序分配内存的低虚拟内存保护大小,防止用户往低地址写时引起的空指针问题。

对于ia64、ppc64和x86来说,65535比较合适;ARM以及其他的不应该超过32768

可以在 /proc/sys/vm/mmap_min_addr里修改

默认4096

  • CONFIG_MEMORY_FAILURE : Enable recovery from hardware memory errors

在有MCA恢复的系统上打开内存错误时的自动恢复,需要特殊硬件支持以及ECC内存;没特殊需求都N

  • CONFIG_TRANSPARENT_HUGEPAGE : Transparent Hugepage Support

允许在可能时让应用程序透明地使用huge page和huge tln,在内存不足的嵌入式设备上,一般N

没特殊需求都N

  • CONFIG_CROSS_MEMORY_ATTACH : Cross Memory Support

打开此选项可以增加process_vm_readvprocess_vm_writev系统调用,允许特权进程直接从其他进程的地址空间里读写,相信请参考文档

没特殊需求就Y

  • CONFIG_CLEANCACHE : Enable Cleancache driver to cache clean page if tmem is present

Cleancache用于保留由于内存不足,PFRA没能保留的内存页;当PFRA交换出此类内存页的时候,Cleancache把它存放到kernel无法直接读取访问的地方;当打开Cleancache的文件系统需要读取磁盘上的文件时,首先检查Cleancache是否有,这样可以避免一次磁盘读。在Xen和zcache等环境中比较有用

详细: http://stuff.mit.edu/afs/sipb/contrib/linux/Documentation/vm/cleancache.txt

吃不准则Y 实际效果未知,需要测试

  • CONFIG_FRONTSWAP : Enable frontswap to cache swap pages if tmem is present

原理和Cleancache一样,传统的swap当作backing swap,在这之前加一道Frontswap

吃不准则Y 实际效果未知,需要测试

  • CONFIG_X86_CHECK_BIOS_CORRUPTION : Check for low memory corruption

定时检查低内存的错误,默认不会开启,需要设置memory_corruption_check=1,默认只扫描64k内存,通过memory_corruption_check_sizememory_corruption_check_period来设置;不会带来明显开销,如果始终检查到错误,则可以通过memmap=来让kernel避免使用这段内存

推荐Y

  • CONFIG_MTRR : Memory Type Range Register support

在PCI和AGP总线上打开write combining功能,让写传输合并在一次大传输里进行,Y则在/proc/mtrr创建一个文件可以用来操作CPU的mtrr;AMD和Intel都支持;X Server需要此选项

推荐Y

  • CONFIG_MTRR_SANITIZER : MTRR cleanup support

把MTRR layout从连续的转换成离散的,这样X驱动可以增加回写,吃不准则Y

  • CONFIG_EFI : EFI runtime service support

EFI选项,即使打开了也支持传统的BIOS设备,根据需要选择

  • CONFIG_SECCOMP : Enable seccomp to safely compute untrusted bytecode

安全机制,在进程运行时会产生不被信任的bytecode,例如fd的读写系统调用、管道等;打开此选项有安全方面的提升,嵌入式系统选择N,其他一般都Y

  • CONFIG_CC_STACKPROTECTOR : Enable -fstack-protector buffer overflow detection

需要GCC4.2,在函数返回前检查canary value提供保护机制;一般不需要

  • Timer frequency

时钟频率,对于NUMA或者服务器来说,100Hz提供更好的吞吐,频率越高,抢占频率越高,程序响应越快。

默认1000Hz就可以了

  • CONFIG_KEXEC : kexec system call

和exec意思类似,允许关闭目前的kernel来开启另一个kernel,不仅仅是Linux;效果未知

  • CONFIG_CRASH_DUMP : kernel crash dump

在kexec执行的kernel里做crash dump,一般用不到

  • CONFIG_RELOCATABLE : Build a relocatable kernel

编译一个能在默认的1MB位置以外的kernel,对于kexec等有用,效果未知

  • CONFIG_COMPAT_VDSO : Compat VDSO support

将32bit VDSO映射到老的地址,如果在运行较为新的glibc(2.3.3以上),则N可以关闭映射;吃不准则Y

  • CONFIG_CMDLINE_BOOL : Built-in kernel command line

允许在编译kernel时指定boot参数,在CONFIG_CMDLINE里指定;系统如果带了全功能的bootloader(非嵌入式系统),则N

Power management and ACPI options

这里大部分和电源管理有关,和睡眠有关的Linux下真的不是很好,所以一般情况下都N,除非有特殊需求

  • CONFIG_SUSPEND : Suspend to RAM and standby

允许系统硬件睡眠,而RAM保持通电,保持其中内容。(例如ACPI S3状态)

推荐Y

  • CONFIG_HIBERNATE : Hibernation (aka 'Suspend to disk')

常说的休眠模式,一般来说效果不是很好...所以可以考虑N

  • CONFIG_PM_STD_PARTITION : Default resume partition

HIBERNATE后唤醒的分区位置,可以通过resume=/dev/<other device>参数来指定

  • CONFIG_PM_RUNTIME : Run-time PM core functionality

打开kernel在运行状态下,在经过一定时间后IO设备进入节电模式,以及唤醒后响应硬件或驱动产生的事件

实际效果需测试(例如笔电合上盖)

推荐Y

  • CONFIG_ACPI : ACPI Support

这个不详细介绍了,"高级配置和电源接口"支持,许多硬件、固件的现代电源管理功能,包括PnP BIOS、SMP、APM等;如果ACPI和APM同时开启,则优先使用ACPI

推荐Y

  • CONFIG_ACPI_PROCFS : deprecated /proc/acpi files

向前兼容 /proc/acpi下的文件,新的在/sys下;根据需要打开

  • CONFIG_ACPI_PROCFS_POWER : deprecated power /proc/acpi directories

同上,power一般在/sys下,此为向前兼容;根据需要打开

  • CONFIG_ACPI_EC_DEBUGFS : EC read/write access through /sys/kernel/debug/ec

打开则可以绕过ACPI,直接访问嵌入的控制器来获取信息,提供一个debug目的来开发ACPI驱动程序;打开后reboot可能有问题,笔电需要移除电池数秒

一般N

  • CONFIG_ACPI_PROC_EVENT : Deprecated /proc/acpi/event support

向前兼容,根据需要打开,2.6.23以后的kernel可以关闭

  • CONFIG_ACPI_AC : AC Adapter

ACPI驱动,如果系统能在AC电源状态上切换,则Y (例如笔电等)

可以选择编译为模块

  • CONFIG_ACPI_BATTERY : Battery

ACPI驱动,如果是移动系统带电池,则Y

可以选择编译为模块

  • CONFIG_ACPI_BUTTON : Button

ACPI驱动,处理/proc/acpi/event里的power、sleep和lid按钮事件,用于响应用户空间里软件控制的行为,推荐Y

可以选择编译为模块

  • CONFIG_ACPI_VIDEO : Video

ACPI 2.0里定义的板载显卡支持 效果未知,需要测试

可以选择编译为模块

  • CONFIG_ACPI_FAN : Fan

支持基本的风扇控制,开/关/状态,推荐打开

可以选择编译为模块

  • CONFIG_ACPI_DOCK : Dock

ACPI控制的docking station,例如IBM Ultrabay和Dell Module Bay等,无需要则N

  • CONFIG_ACPI_PROCESSOR : Processor

控制CPU频率相关的控制,例如电源控制CPU节电和性能,一般建议Y

  • CONFIG_ACPI_PROCESSOR_AGGREGATOR : Processor Aggregator

ACPI 4.0 定义了这个,让OS能够执行特定的CPU配置,目前只有定义逻辑空闲,可以降低能耗,效果未知,需要测试

可以选择编译为模块

  • CONFIG_ACPI_THERMAL : Thermal Zone

ACPI 温度控制,大部分移动设备支持ACPI温度控制,墙裂建议打开,温度过高可能会损伤CPU

  • CONFIG_ACPI_INITRD_TABLE_OVERRIDE : ACPI tables override via initrd

允许initrd里覆盖ACPI tables,如果initrd里没有传递任何tables信息,则无任何影响,所以选择Y也安全

  • CONFIG_ACPI_DEBUG : Debug statements

打开ACPI debug选项,为kernel会增加50k大小,一般不需要

  • CONFIG_ACPI_PCI_SLOT : PCI slot detection driver

/sys/bus/pci/slots/里为系统所有PCI插槽创建节点;一般用不到

  • CONFIG_ACPI_CONTAINER : Container and Module Devices (Experimental)

支持对应设备,允许节点、CPU和内存的热插,无特殊情况一般不需要

可以选择编译为模块

  • CONFIG_ACPI_SBS : Smart Battery System

支持部分笔电上的Smart Battery System,一般不需要

可以选择编译为模块

  • CONFIG_ACPI_HED : Hardware Error Device

支持HED(PNP0C33),一般不需要

  • CONFIG_ACPI_CUSTOM_METHOD : Allow ACPI methods to be inserted/replaced at run time

允许ACPI AML method能够在不重启的情况下修改,debug用;一般情况下不需要

  • CONFIG_ACPI_APEI : ACPI Platform Error Interface (APEI)

允许向OS报告错误,一般用不到

  • CONFIG_SFI : SFI (Simple Firmware Interface) Support

SFI支持轻量级的方法,来通过内存里静态表向OS传递平台固件的信息,目前只有第二代Atom平台Moorestown支持,如不是该平台,则N

  • CONFIG_CPU_FREQ : CPU Frequency Scaling

允许动态调整CPU频率,此驱动本身什么都不做,需要其他模块或者用户工具;原文说明不清楚就N,不确定CPU自身频率控制是否受此限制,需要测试

  • CONFIG_CPU_IDLE : CPU idel PM support

允许基于软件控制CPU空闲状态,如果ACPI和ACPI_PRECESSOR打开,则此项自动打开

  • CONFIG_CPU_IDLE_MULTIPLE_DRIVERS : Support multiple cpuidle drivers

允许对不同的CPU采用不同的驱动,这样的系统很少见,一般都N

  • CONFIG_INTEL_IDLE : Cpuidle Driver for Intel Processors

Intel独有的Cpuidle控制,可以和CPU_IDLE一起打开,这样可以控制INTEL_IDLE无法控制的场合

实际效果未知,需要测试

  • CONFIG_I7300_IDEL : Intel chipset idle memory power saving driver

开启某些特定Intel服务器芯片组的内存省电功能,芯片组必须有IO AT支持,例如7300,还取决于DRAM的类型与设备数量;适用面太局限,一般情况下都是N

Bus options (PCI etc.)

  • CONFIG_PCI : PCI support

PCI功能基本要求,一般PC等都需要;除了特殊的嵌入式设备没有之外。

  • CONFIG_PCI_MMCONFIG : Support mmconfig PCI config space access

mmconfig == memory mapped configuration,一种PCI设备的访问方式,建议打开

  • CONFIG_PCIEPORTBUS : PCI Express support

打开PCI Express Port Bus支持,使用PCI-E设备,一般需要打开

  • CONFIG_HOTPLUG_PCI_PCIE : PCI Express hotplug driver

如果有支持PCI-E热插主板,可以打开这个驱动,一般不需要

  • CONFIG_PCIEAER : Root Port Advanced Error Reporting support

打开PCI-E AER,发送给Root Port的错误信息都将由AER处理,实际效果未知,需要测试

  • CONFIG_PCIEASPM : PCI Express ASPM Support

对PCI-E ASPM(Active State Power Management)的OS支持,打开也不会有不好的影响,可以在/sys/module/pcie_aspm/parameters/policy里动态关闭;吃不准则Y

打开PCI和PCI-E后,非expert模式下默认开启

  • CONFIG_PCIEASPM_DEBUG : Debug PCI Express ASPM Debug

debug支持,一般用不到

  • Default ASPM Policy

默认的ASPM策略

  • CONFIG_PCIEASPM_DEFAULT : BIOS 根据BIOS设置来
  • CONFIG_PCIEASPM_POWERSAVE : 省电模式
  • CONFIG_PCIEASPM_PERFORMACE : 高性能模式
  • CONFIG_PCI_MSI : Message Signaled Interrupts (MSI and MSI-X)

允许设备打开MSI,在内存内写PCI总线,而非使用IRQ pin,可以使用pci=nomsi来关闭该功能

吃不准则Y

  • CONFIG_PCI_DEBUG : PCI Debugging

打开则会向系统日志写入debug信息,一般不需要

  • CONFIG_PCI_REALLOC_ENABLE_AUTO : Enable PCI resource re-allocation detection

允许打开PCI检测资源是否需要重新分配,可以使用pci=realloc=on或者pci=realloc=off来控制,吃不准则N

  • CONFIG_PCI_STUB : PCI Stub driver

如果你需要给guest系统使用PCI设备,则Y或者M,否则N

  • CONFIG_HT_IRQ : Interrupts on hypertransport devices

允许原生hypertransport设备发送中断,吃不准则Y 实际效果未知

  • CONFIG_PCI_IOV : PCI IOV support

允许部分PCI设备做IO虚拟化,允许创建虚拟设备来共享物理资源,吃不准则N

  • CONFIG_PCI_PRI : PCI PRI support

Page Request Interface,允许在IOMMU后的PCI设备在内存页出错后恢复,吃不准则N

  • CONFIG_PCI_PASID : PCI PASID support

Process Address Space Identifiers 允许PCI设备在同一时间访问多个IO地址,需要打开IOMMU和支持PASID的设备,吃不准则N

  • CONFIG_PCI_IOAPIC : PCI IO-APIC hotplug support

一般不需要

  • CONFIG_PCCARD : PCCard (PCMCIA/CardBus) support

笔电等设备支持的PCCard或者PCMCIA设备,例如读卡器、网卡、硬盘等,如果有这样的设备,建议Y

同样支持16bit和32bit的设备

可以选择编译为模块

  • CONFIG_PCMCIA_LOAD_CIS : Load CIS updates from userspace (EXPERIMENTAL)

一些PCMCIA卡需要Card Information Structure在用户空间正确加载;如果需要PCMCIA,则Y吧

  • CONFIG_YENTA : CardBus yenta-compatible bridge support 建议M
  • CONFIG_PD6729 : Cirrus PD6729 compatible bridge support 建议M
  • CONFIG_I82092 : i82092 compatible bridge support 建议M
  • CONFIG_HOTPLUG_PCI : Support for PCI Hotplug

如果主板支持,可以打开这个选项,一般不需要

  • CONFIG_RAPIDIO : RapidIO support

支持RapidIO驱动设备,一般不需要

Executable file formats / Emulations

  • CONFIG_BINFMT_ELF : Kernel support for ELF binaries

kernel内支持ELF格式的二进制程序,一般都是需要打开的

  • CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS : Write ELF core dumps with partial segments

吃不准则Y

  • CONFIG_BINFMT_MISC : Kernel support for MISC binaries

支持有解释器包装的程序例如Java、Python、.NET和Emacs-Lisp等,吃不准则Y

  • CONFIG_IA32_EMULATION : IA32 Emulation

支持IA32(传统的i386,32bit)的程序,一般运行的系统都是multilib,即同时支持IA32和x86_64的系统;除非确定自己要跑pure 64bit,否则一般都是Y

  • CONFIG_IA32_AOUT : IA32 a.out support

支持老的a.out的IA32二进制输出,一般用不到

  • CONFIG_X86_X32 : x32 ABI for 64-bit mode (experimental)

为64bit处理器加入原生的x32 32位ABI,这样即使32bit的程序能够访问64bit的寄存器,还是将指针等限制在32bit,可以获得更小的程序footprint;需要binutils 2.22以及elf32_x86_64支持;一般情况下不需要

Networking supoort

Networking options

这里是一些Linux kernel和网络相关的核心配置,例如iptables(现在应该叫做netfilter),不一一解释,挑选重要的选项解释

  • CONFIG_PACKET : Packet socket

Packet协议是一些应用程序直接使用Kernel里实现用来进行网络通信的一种协议,例如tcpdump等;一般都选Y

  • CONFIG_UNIX : Unix domain sockets

支持Unix domain sockets,大部分程序都会使用到,例如X Window系统和syslog等,一般都选Y

  • CONFIG_INET : TCP/IP networking

现代的网络程序都会使用到的网络协议,一般Y

其下面的协议支持,保留默认即可(大部分常用的已经打开)

  • CONFIG_NET_IPIP : IP: tunneling

做隧道用的IP协议,有需要的话推荐Y

  • CONFIG_IPV6 : The IPv6 Protocol

IPv6支持,如果需要则打开

  • CONFIG_NETFILTER : Network packet filtering framework (Netfilter)

Netfilter,iptables;建议Y

  • CONFIG_HAMRADIO : Amateur Radio support

如果不需要,可以N

Wireless

  • CONFIG_CFG80211 : cfg80211 - wireless configuration API

无线设备的配置API,需要使用无线则打开该选项

  • CONFIG_MAC80211 : Generic IEEE 802.11 Networking Stack (mac80211)

打开和硬件独立的IEEE 802.11 网络栈,需要使用无线则打开该选项

  • CONFIG_MAC80211_LEDS : Enable LED triggers

支持无线网卡指示灯,有的话可以打开

  • CONFIG_RFKILL : RF Switch subsystem support

许多Wifi和蓝牙设备支持RF开关,开启它可以让系统支持此功能

关闭的实际效果不确定,需要测试

Device Drivers

该选项下面有众多设备的驱动,也同样不一一介绍,挑选常见和主要的加以说明,其他的还需自行测试

Generic Driver options

  • CONFIG_DEVTMPFS : Maintain a devtmpfs filesystem to mount at /dev

在boot的早期就创建一个tmpfs/ramfs,其中kernel驱动维护了所有设备,包括他们默认的名字、权限等;用户可以根据需要来修改他们。

注意,对于udev-197以上版本,这是必要的配置,建议Y

  • CONFIG_DEVTMPFS_MOUNT : Automount devtmpfs at /dev, after the kernel mounted the rootfs

在kernel将rootfs挂载后立即将devtmpfs挂载到/dev下;不影响基于initrd的boot过程,建议Y

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

一般Y

  • CONFIG_PREVENT_FIRMWARE_BUILD : Prevent firmware from being built

不需要重新build固件,一般只有在驱动更新时才需要重新build,建议Y

  • CONFIG_FW_LOADER : Userspace firmware loading support

允许从用户空间加载固件,建议Y

  • CONFIG_FIRMWARE_IN_KERNEL: Include in-kernel firmware blobs in kernel binary

把固件包入kernel内,这样在请求用户空间的固件时可以直接利用;文档的建议是N,因为firmware的license多与GPL冲突,所以包含固件的kernel在分发前需要咨询一下法律顾问

实际在使用的时候,例如某的PC很多都是用的A卡,目前还未找到办法能不include固件使用

  • CONFIG_EXTRA_FIRMWARE : External firmware blobs to build into the kernel binary

需要包入kernel内的固件,用空格分开

  • CONFIG_EXTRA_FIRMWARE_DIR : Firmware blobs root directory

固件目录,默认是kernel源代码目录下的firmware文件夹

  • CONFIG_CONNECTOR : Connector - unified userspace <-> kernelspace linker

在netlink socket协议上建立起来用户空间和kernel空间的连接器,如无特殊需要可以N

一个例子,god.rb在Linux下需要用到该选项

  • CONFIG_MTD : Memory Technology Device (MTD) support

flash、RAM等固态文件系统存储;如果没有此类设备,可以N

  • CONFIG_PARPORT : Parallel port support

并行口,25个孔连接头的设备,例如ZIP驱动器等;如果没有需要,可以N

  • CONFIG_PNP : Plug and Play support

热插支持,Y吧

  • CONFIG_BLK_DEV : Block devices

块设备支持,其他老的不提,现在也见的不多,硬盘和CDROM还算是块设备,所以一般都是Y

  • CONFIG_BLK_DEV_LOOP : Loopback device support

同理,Y

  • CONFIG_RAID_ATTRS : RAID Transport Class

提供SCSI的RAID功能,需要的话Y

  • CONFIG_SCSI : SCSI Device support

SCSI设备支持,如果需要的话,根据实际情况选择后面设备支持

  • CONFIG_BLK_DEV_SD : SCSI disk support

想要使用SATA或者PATA硬盘,这个选项记得要Y,prompt提示很迷惑...

  • CONFIG_ATA : Serial ATA and Parallel ATA drivers

传统SATA和PATA驱动器驱动,一般情况都是需要Y的

  • CONFIG_ATA_ACPI : ATA ACPI Support

ACPI 驱动器 电源控制支持,建议Y

  • CONFIG_ATA_PMP : SATA Port Multiplier support

SATA版的集线器等支持,实际效果未知,需要测试

  • CONFIG_SATA_ACHI : ACHI SATA Support

支持ACHI的SATA,根据需要打开 实际效果未知,需要测试

  • CONFIG_ATA_SFF : ATA SFF support (for legacy IDE and PATA)

支持SFF和类似的接口,为了向前兼容;如果使用AHCI等现代设备,可以考虑关闭此选项

需要测试

  • CONFIG_ATA_BMDMA : ATA BMDMA Support

支持BMDMA兼容的SFF,可以考虑关闭此功能,需要测试

  • CONFIG_MD : Multiple devices driver support (RAID and LVM)

支持将多个物理设备映射成一个逻辑设备,RAID和LVM需要此选项打开,推荐Y

  • CONFIG_BLK_DEV_MD : RAID Support

开启RAID支持

  • CONFIG_BLK_DEV_DM : Device mapper support

开启LVM的Device-mapper功能

  • CONFIG_DM_MIRROR : Mirror target

允许卷管理器镜像复制本地卷,还有pvmove等热迁移工具,根据需要打开

  • CONFIG_DM_ZERO : Zero target

恢复数据用的工具,抛弃所有写,对读请求只返回零

  • CONFIG_NETDEVICES : Network device support

网络设备支持基本选项,Y

  • CONFIG_NETCONSOLE : Network console logging support

通过网络传输记录kernel日志,根据需要设置

  • CONFIG_ETHERNET : Ethernet driver support

以太网驱动,Y

里面的那些网络设备驱动是关闭选项最欢快的地方,根据实际情况关闭不需要的驱动吧

需要注意的是,为了开启对应设备的驱动,vendor的选项必须开启(否则看不到驱动选项)

  • CONFIG_WLAN : Wireless LAN

同理,这里打开vendor对应的wlan驱动

需要注意的是,bcm 43驱动使用broadcom-sta的闭源驱动已经过时,对于Broadcom b43的无线网卡,需要在Device drivers => Broadcom specific AMBA里打开,叫做CONFIG_BCMA

  • CONFIG_INPUT_POLLDEV : Polled input device skeleton

让设备驱动可以定时取得硬件信息,吃不准则N 需要测试

  • CONFIG_INPUT_MOUSE : Mice

鼠标支持,通常Y

  • CONFIG_MOUSE_PS2 : PS/2 Mouse

PS2接口的鼠标支持,有需要则Y

  • CONFIG_INPUT_JOYSTICK : Joysticks/Gamepads

游戏手柄、方向盘等输入设备,需要的话可以Y

  • CONFIG_INPUT_TABLET : Tablets

支持平板显示设备

  • CONFIG_INPUT_TOUCHSCREEN : Touchscreens

支持触控屏幕输入设备

  • CONFIG_SERIO_SERPORT : Serial port line discipline

RS232 (COM) 口设备支持

Graphics support

显示设备的配置

  • CONFIG_AGP : /dev/agpgart (AGP Support)

打开AGP总线的显示设备支持

  • CONFIG_VGA_SWITCHEROO : Laptop Hybrid Graphics - GPU switching support

多GPU间的切换,实际效果未知,需要测试 (不过某没这样的设备啊,除了MBP XDDD)

  • CONFIG_DRM : Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)

在XFree86 4.0开始引入的Direct Rendering Infrastructure (DRI) 提供kernel级别的支持;开启后需要选择相应的显卡设备驱动

一般推荐打开,至少某在使用Intel HD系列和AMD的显卡时都是使用DRM和开源驱动的,基本没有问题

  • CONFIG_FB : Support for frame buffer devices

为应用程序访问显示设备提供了一层定义良好的抽象层;一般打开后在console会有更好的刷新性能;需要选择对应的显示设备

推荐打开

  • CONFIG_BACKLIGHT_LCD_SUPPORT : Backlight & LCD Device support

支持LCD显示设备的背光控制,需要选择对应驱动,一般选择通用的(aka Sharp Corgi)驱动;对笔电来说有必要打开

  • CONFIG_LOGO : Booup logo

选择启动时,frame buffer启动logo,有几个core就有几个Tux坐在顶上XDDDDDDDDDDDDDDD

  • CONFIG_MMC : MMC/SD/SDIO card support

MMC SD卡等读卡器支持,如果是笔电的读卡器,还需要开启对应的PCMCIA选项

  • CONFIG_USB_SUPPORT : USB support

打开USB支持,Y

  • CONFIG_USB_XHCI_HCD : xHCI HCD (USB 3.0) support

打开USB3.0支持

  • CONFIG_USB_EHCI_HCD : EHCI HCD (USB 2.0) support

打开USB2.0支持

  • CONFIG_USB_PRINTER : USB Printer support

USB打印机支持

  • CONFIG_USB_STORAGE : USB Mass Storage support

USB大容量存储支持,例如闪盘、移动硬盘等设备

  • CONFIG_EEEPC_LAPTOP : Eee PC Hotkey Driver

支持Fn Fx等热键,以及背光、蓝牙开关等功能

File systems

这是文件系统的选项,除非是编译一个通用的kernel,否则一般打开需要的FS选项即可

  • CONFIG_DNOTIFY : Dnotify support

开启基于目录,fd变化的通知系统,推荐Y

  • CONFIG_INOTIFY : Inotify support

开启文件fd,包括其包含目录的变化通知系统,推荐Y

Security options

有关系统安全的选项,普通用户是不太需要的,根据实际情况选择

比如想要打开SELINUX相关功能的话,需要打开 CONFIG_SECURITY和CONFIG_SECURITY_SELINUX

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment