落雪无迹飞叶谷 - linux内核学习
type: channel
link: https://www.batsom.net/index.php/tag/linux%E5%86%85%E6%A0%B8%E5%AD%A6%E4%B9%A0/
items: Linux内核配置选项简介(17)
items: Linux内核配置选项简介(16)
items: Linux内核配置选项简介(15)
items: Linux内核配置选项简介(14)
items: Linux内核配置选项简介(13)
items: Linux内核配置选项简介(12)
items: Linux内核配置选项简介(11)
items: Linux内核配置选项简介(10)
items: Linux内核配置选项简介(9)
items: Linux内核配置选项简介(8)

Linux内核配置选项简介(17)
type: item
date: 2020-04-11T15:21:26+09:00
description: Library routines库子程序子选项可以全不选,内核中若有其他部分依赖它,会自动选上.使用内核树外的模块时可能需要手动选择.CRC-CCITT functionsCONFIG_CRC_CCITT为内核树外的模块提供CRC-CCITT循环验证算法支持. CRC16 functionsCONFIG_CRC16为内核树外的模块提供CRC16循环验证算法支持. CRC calculation for the T10 Data Integrity FieldCONFIG_CRC_T10DIF为内核树外的模块提供CRC循环验证算法支持. 从而允许内核树外的SCSI模块利用T10/SCSI Data Integrity Field保障端到端的数据完整性. CRC ITU-T V.41 functionsCONFIG_CRC_ITU_T为内核树外的模块提供CRC ITU-T V.41循环验证算法支持. CRC32/CRC32c functionsCONFIG_CRC32为内核树外的模块提供CRC32/CRC32c循环验证算法支持. CRC32 perform self test on init CONFIG_CRC32_SELFTEST 在CRC32算法初始化的时候进行一个简单的自我测试.不确定的选"N". CRC32 implementation 选择CRC32算法的实现方式.不确定的请保持默认值"Slice by 8 bytes",除非你知道自己在做什么. CRC4 functionsCRC7 functionsCONFIG_CRC7为内核树外的模块提供CRC7循环验证算法支持.CRC32c (Castagnoli, et al) Cyclic Redundancy-CheckCONFIG_LIBCRC32C为内核树外的模块提供CRC32c循环验证算法支持.CRC8 functionCONFIG_CRC8为内核树外的模块提供CRC8循环验证算法支持.PRNG perform self test on initprng对init执行自检XZ decompression supportCONFIG_XZ_DEC为内核树外的模块提供XZ解压支持.详见"Documentation/xz.txt"文档.子项是针对不同平台的"BCJ filter decoder".按需选择即可.x86 BCJ filter decoderx86 BCJ滤波器解码器PowerPC BCJ filter decoderPowerPC BCJ滤波器解码器IA-64 BCJ filter decoderIA-64 BCJ滤波器解码器ARM BCJ filter decoderARM BCJ滤波器解码器ARM-Thumb BCJ filter decoderARM拇指BCJ滤波器解码器SPARC BCJ filter decoderSPARC BCJ滤波器解码器XZ decompressor testerCONFIG_XZ_DEC_TESTXZ解压测试程序.不确定的选"N".glob self-test on init初始化时全局自检Averaging functionsCONFIG_AVERAGE为内核树外的模块提供averaging函数支持CORDIC algorithmCONFIG_CORDIC为内核树外的模块提供CORDIC算法支持JEDEC DDR dataCONFIG_DDR为内核树外的DDR SDRAM内存控制器驱动提供获取JEDEC数据支持.IRQ polling libraryIRQ轮询库Select compiled-in fonts选择以字体编译Test string functions测试字符串函数

Linux内核配置选项简介(16)
type: item
date: 2020-04-11T15:20:52+09:00
description: Virtualization虚拟化Kernel-based Virtual Machine (KVM) support基于内核的虚拟机（KVM）支持KVM for Intel processors support支持英特尔处理器的KVMKVM for AMD processors support适用于AMD处理器的KVM支持Audit KVM MMU审核KVM MMUHost kernel accelerator for virtio netvirtio net的主机内核加速器VHOST_SCSI TCM fabric driverVHOST_SCSI TCM结构驱动程序Cross-endian support for vhost跨端支持vhost

Linux内核配置选项简介(15)
type: item
date: 2020-04-11T15:20:12+09:00
description: Cryptographic API内核加密API支持这里的加密算法被广泛的应用于驱动程序通信协议等机制中.子选项可以全不选,内核中若有其他部分依赖它,会自动选上.使用内核树外的模块时可能需要手动选择.FIPS 200 complianceCONFIG_CRYPTO_FIPS"fips"内核引导参数支持.这是在FIPS200认证的系统中运行所必须的.选"N",除非你确实知道自己在做什么.Cryptographic algorithm managerCONFIG_CRYPTO_MANAGER创建默认的加密模版实例.必选Userspace cryptographic algorithm configurationCONFIG_CRYPTO_USER用户空间加密实例配置.不确定的选"N".Disable run-time self testsCONFIG_CRYPTO_MANAGER_DISABLE_TESTS禁止在注册算法时进行简单的自我检测.不确定的选"Y".GF(2^128) multiplication functionsCONFIG_CRYPTO_GF128MUL由高效表格驱动的伽罗瓦域 GF(2^128)乘法器支持.某些加密模式需要它.不确定的选"N".如果有其它模块需要此特性,会被自动选中.Null algorithmsCONFIG_CRYPTO_NULLNULL加密算法(什么也不做),用于IPsec协议的封装安全载荷模块(ESP)Parallel crypto engineCONFIG_CRYPTO_PCRYPT将任意加密算法转化成并行算法,并在内核线程中执行.Software async crypto daemonCONFIG_CRYPTO_CRYPTD这是一个通用的软件异步加密守护进程,可将任意的同步软件加密算法转换成在内核线程中执行的异步算法.Authenc supportCONFIG_CRYPTO_AUTHENC用于IPSec组合模式的包装器.Testing moduleCONFIG_CRYPTO_TEST丑陋的加密测试模块.仅供调试使用.CCM supportCONFIG_CRYPTO_CCMCBC-MAC计数器.IPsec需要它.GCM/GMAC supportCONFIG_CRYPTO_GCMGCM(Galois/Counter Mode)与GMAC(Galois Message Authentication Code)支持.IPsec需要它.[注释]GCM是一种对称加密算法的块密码工作模式,使用128位块大小.块密码工作模式可以分为加密模式,认证模式,认证加密模式.GCM模式为认证模式的一种,提供认证和加密两种功能.Sequence Number IV GeneratorCONFIG_CRYPTO_SEQIV序号初始向量(IV)生成器.它基于一个序号与一个盐粒子(salt)的异或值生成一个向量.此算法主要用于块密码的CTR(计数模式).CBC supportCONFIG_CRYPTO_CBC块密码工作模式:密码分组链接(Cipher Block Chaining)模式.IPSec需要它.CTR supportCONFIG_CRYPTO_CTR块密码工作模式:计数器(Counter)模式.IPSec需要它.CTS supportCONFIG_CRYPTO_CTS块密码工作模式:密文窃取(Cipher Text Stealing)模式.Kerberos gss机制支持的AES加密需要它.ECB supportCONFIG_CRYPTO_ECB块密码工作模式电子密码本(Electronic CodeBook)模式.这是最简单的分组密码算法,只是简单的分别加密每个块.LRW supportCONFIG_CRYPTO_LRW块密码工作模式:LRW(Liskov Rivest Wagner)模式.这个模式以三个人名命名.这是一种小数据块加密模式,加密后的数据保持与明文数据同样的长度,专门用于CONFIG_DM_CRYPT模块加密磁盘区块(使用"aes-lrw-benbi"指定).PCBC supportCONFIG_CRYPTO_PCBC块密码工作模式:填充密码块链接(Propagating Cipher Block Chaining)模式.CONFIG_AF_RXRPC需要它.XTS supportCONFIG_CRYPTO_XTS块密码工作模式:XTS模式.这是IEEE1619/D16规范制定的一种小数据块加密模式,加密后的数据保持与明文数据同样的长度,专门用于加密磁盘区块(使用"aes-xts-plain"指定).CMAC supportCONFIG_CRYPTO_CMACNIST(美国国家标准与技术研究所)…

Linux内核配置选项简介(14)
type: item
date: 2020-04-11T15:19:29+09:00
description: Security options安全选项这里的选项不明白的建议不要选,否则有可能弄巧成拙.Enable access key retention supportCONFIG_KEYS在内核中保留认证令牌(authentication token)和访问密钥(access key).eCryptfs(CONFIG_ECRYPT_FS)依赖于它.不确定的选"N". Enable register of persistent per-UID keyrings 启用持久性每UID密钥环的注册Large payload keys 大负载密钥TRUSTED KEYS CONFIG_TRUSTED_KEYS "TRUSTED KEY"的意思是由TPM(可信赖平台模块)用RSA算法封装的一对随机数.开启此项后,内核将可以为创建/封装/解封"TRUSTED KEY"提供支持.如果引导PCR(平台配置寄存器)和各种条件都匹配,那么TPM只解封密钥.用户空间永远只能看到加密过后的二进制内容.不确定的选"N". ENCRYPTED KEYS CONFIG_ENCRYPTED_KEYS "ENCRYPTED KEY"的意思是由内核封装的一对随机数,该对随机数可以用一个"主密钥"使用对称加密算法进行加密和解密.开启此项后,内核将可以为创建/加密/解密"ENCRYPTED KEY"提供支持."主密钥"既可以是"TRUSTED KEY"也可以是"user-key"(用户选择的密钥).用户空间永远只能看到/存储加密过后的二进制内容.不确定的选"N". Enable the /proc/keys file by which keys may be viewed CONFIG_KEYS_DEBUG_PROC_KEYS 开启"/proc/keys"文件支持,该文件中保存了系统上所有可见的密钥.注意,LSM(Linux安全模块)安全检查仍然是必须的.不确定的选"N". Diffie-Hellman operations on retained key Diffie-Hellman对保留密钥的操作Restrict unprivileged access to the kernel syslogCONFIG_SECURITY_DMESG_RESTRICT禁止非特权用户访问内核日志(dmesg),相当于"echo 1 > /proc/sys/kernel/dmesg_restrict".不确定的选"N". Enable different security modelsCONFIG_SECURITY允许内核选择不同的LSM(Linux安全模块),如果未选中则内核将使用默认的安全模块 ("Default security module").不确定的选"N". Enable the securityfs filesystemCONFIG_SECURITYFSsecurityfs安全文件系统支持.当前仅被TPM bios字符设备驱动以及IMA(完整性提供者)使用. 它与SELinux或SMACK之类没有关系.不确定的选"N". Socket and Networking Security HooksCONFIG_SECURITY_NETWORK允许安全模块通过Security Hook对Socket与Networking进行访问控制.不确定的选"N". Remove the kernel mapping in user mode在用户模式下删除内核映射 XFRM (IPSec) Networking Security Hooks CONFIG_SECURITY_NETWORK_XFRM 为XFRM(IPSec)启用安全Hook.这样安全模块可以通过这些hook,根据IPSec策略标签, 实现针对每个网络包的访问控制.非IPSec通信则被当做"无标签"处理, 仅允许那些被明确批准可以不使用策略标签的socket才能不通过IPSec进行通信.不确定的选"N". Security hooks for pathname based access controlCONFIG_SECURITY_PATH此安全钩子程序可以让各种安全模块实现基于路径的访问控制.不确定的选"N". Enable Intel(R) Trusted Execution Technology (Intel(R) TXT)CONFIG_INTEL_TXT支持使用可信引导(Trusted Boot)技术引导内核(需要使用tboot模块).这将使用英特尔TXT(可信任执行技术)来引导内核. 在不支持TXT的平台上开启此项没有效果.详见"Documentation/intel_txt.txt"文档.不确定的选"N". Low …

Linux内核配置选项简介(13)
type: item
date: 2020-04-11T15:18:44+09:00
description: Kernel hacking内核hack选项Show timing information on printksCONFIG_PRINTK_TIME在控制台和syslog()系统调用的输出中包含printk()消息的时间戳, 以便于直接显示内核启动过程中各步骤所用的时间. 注意:无论此项是否开启,时间戳总会被记录在/dev/kmsg中,开启此项仅相当于使用"printk.time=1"内核引导参数. Default console loglevel 默认控制台日志级别 Default message log level (1-7) CONFIG_DEFAULT_MESSAGE_LOGLEVEL printk()内核消息日志的默认级别,取值范围是[1,7]. 数值越大显示的消息就越详细:1=ALERT,2=CRIT,3=ERR,4=WARNING,5=NOTICE,6=INFO,7=DEBUG.Enable __deprecated logicCONFIG_ENABLE_WARN_DEPRECATED编译时开启"反对使用"逻辑检查,关闭此项将不会显示类似 "warning: 'foo' is deprecated (declared at kernel/power/somefile.c:1234)"的警告消息.Enable __must_check logicCONFIG_ENABLE_MUST_CHECK编译时开启"必须检查"逻辑检查,关闭此项将不会显示类似 "warning: ignoring return value of 'foo', declared with attribute warn_unused_result"的警告消息.Warn for stack frames larger than (needs gcc 4.4)CONFIG_FRAME_WARN堆栈帧大小警告阈值,设置过小会导致编译时警告太多,设为"0"可以关闭警告,需要GCC-4.4或更高版本Magic SysRq keyCONFIG_MAGIC_SYSRQ开启"魔法键"(SysRq)支持(可以通过"echo 0 > /proc/sys/kernel/sysrq"关闭). 由于SysRq会带来安全隐患(允许未经登录的操作),所以你应该仅在确实需要的场合开启. 更多详情参见"Documentation/sysrq.txt"文档Strip assembler-generated symbols during linkCONFIG_STRIP_ASM_SYMS连接时剥离汇编器产生的内部符号(类似'.Lxxx'),这样可以净化get_wchan()之类的输出, 同时还可以减小内核尺寸.建议开启.Generate readable assembler codeCONFIG_READABLE_ASM生成人类易读的汇编输出,以方便内核调试.这会禁用一些编译优化措施,也会降低内核的运行速度.Enable unused/obsolete exported symbolsCONFIG_UNUSED_SYMBOLS导出无用和废弃的符号,这将使内核不必要的增大.建议关闭.Debug FilesystemCONFIG_DEBUG_FSdebugfs是内核开发者用来存储调试信息的虚拟文件系统.不搞内核开发就别选Run 'make headers_check' when building vmlinuxCONFIG_HEADERS_CHECK在编译内核时运行'make headers_check'命令检查内核头文件的正确性,当你修改了与用户空间相关的内核头文件后应该启用该选项Enable full Section mismatch analysisCONFIG_DEBUG_SECTION_MISMATCH仅供内核开发者使用Kernel debuggingCONFIG_DEBUG_KERNEL仅供内核开发者使用Panic on OopsCONFIG_PANIC_ON_OOPS当内核oops时,直接panic掉(相当于Windows蓝屏死机),这样可以确保内核停止工作,避免导致无法预料的后果.等价于使用"oops=panic"内核引导参数.不确定的选"N".Detect Hung TasksCONFIG_DETECT_HUNG_TASK探测挂起的任务(处于不可中断的"D"状态).由于仅能检测,不能做进一步的处理,所以仅用于帮助内核调试.Collect scheduler debugging infoCONFIG_SCHED_DEBUG提供一个"/proc/sched_debug"文件以帮助调试调度程序.仅供内核开发使用.Collect scheduler statisticsCONFI…

Linux内核配置选项简介(12)
type: item
date: 2020-04-11T15:18:06+09:00
description: File systems文件系统Second extended fs supportCONFIG_EXT2_FSExt2文件系统,无日志.详见"Documentation/filesystems/ext2.txt"文档. Ext2 extended attributes CONFIG_EXT2_FS_XATTR Ext2文件系统扩展属性(与inode关联的name:value对)支持.详见attr手册.不确定的选"N". Ext2 POSIX Access Control Lists CONFIG_EXT2_FS_POSIX_ACL POSIX ACL(访问控制列表)支持,这是一种超越"owner/group/world"的权限管理方式, 可以更精细的针对每个用户进行访问控制.详见acl手册.不确定的选"N". Ext2 Security Labels CONFIG_EXT2_FS_SECURITY "安全标签"允许选择使用不同安全模块(如SELinux)实现的访问控制模型, 如果你没有使用需要扩展属性的安全模块,可以选"N". Ext2 execute in place support CONFIG_EXT2_FS_XIP 芯片内执行(execute in place)的意思是程序在写入存储介质时就已经分配好运行时的地址, 因此不需要载入内存即可在芯片内执行,一般仅在嵌入式系统上才使用这种技术. Ext3 journalling file system supportCONFIG_EXT3_FSExt3日志型文件系统.详见"Documentation/filesystems/ext3.txt"文档. Default to 'data=ordered' in ext3 CONFIG_EXT3_DEFAULTS_TO_ORDERED 选"Y"表示将默认的日志模式设为"data=ordered"(更安全), 选"N"表示将默认的日志模式设为"data=writeback"(更危险). 选"Y",仅在你确实明白"data=writeback"的风险,以及确实有充足的理由的时候,才能选"N". Ext3 extended attributes CONFIG_EXT3_FS_XATTR Ext3文件系统扩展属性(与inode关联的name:value对)支持.详见attr手册.不确定的选"N". Ext3 POSIX Access Control Lists CONFIG_EXT3_FS_POSIX_ACL POSIX ACL(访问控制列表)支持,这是一种超越"owner/group/world"的权限管理方式, 可以更精细的针对每个用户进行访问控制.详见acl手册.不确定的选"N". Ext3 Security Labels CONFIG_EXT3_FS_SECURITY "安全标签"允许选择使用不同安全模块(如SELinux)实现的访问控制模型, 如果你没有使用需要扩展属性的安全模块,可以选"N". The Extended 4 (ext4) filesystemCONFIG_EXT4_FSExt4日志型文件系统.详见"Documentation/filesystems/ext4.txt"文档. Use ext4 for ext2/ext3 file systems CONFIG_EXT4_USE_FOR_EXT23 在ext2/ext3文件系统上使用ext4驱动.这样可以对ext2/ext3/ext4三种文件系统只使用同一个驱动. 主要目的是减少内核尺寸. Ext4 POSIX Access Control Lists CONFIG_EXT4_FS_POSIX_ACL POSIX ACL(访问控制列表)支持,这是一种超越"owner/group/world"的权限管理方式, 可以更精细的针对每个用户进行访问控制.详见acl手册.不确定的选"N". Ext4 Security Labels CONFIG_EXT4_FS_SECURITY "安全标签"允许选择使用不同安全模块(如SELinux)实现的访问控制模型, 如果你没有使用需要扩展属性的安全模块,可以选"N". EXT4 debugging support CONFIG_EXT4_DEBUG 仅供调试使用 JBD (ext3) debugging supportCONFIG_JBD_DEBUG仅供调试使用JBD2 (ext4) debugging supportCONFIG_JBD2_DEBUG仅供调试使用Reiserfs supportCONFIG_REISERFS_FS曾经的明星文件系统,特别擅长处理大量小文件的场合,由于其创始人入狱,前景不明. Enable reiser…

Linux内核配置选项简介(11)
type: item
date: 2020-04-11T15:17:18+09:00
description: Firmware Drivers固件(Firmware)驱动BIOS Enhanced Disk Drive calls determine boot diskCONFIG_EDD这是一个实验性选项,支持实模式BIOS中的增强磁盘服务(EDD),从而实现从某个特定的硬盘启动(可以从sysfs中查看具体是哪个硬盘),大多数BIOS提供商都没有实现这个特性.不确定的选"N". Sets default behavior for EDD detection to off CONFIG_EDD_OFF 选"Y"相当于使用"edd=off"内核引导参数(禁用EDD),选"N"相当于使用"edd=on"内核引导参数(启用EDD).语法:edd={on|skipmbr|off}. Add firmware-provided memory map to sysfsCONFIG_FIRMWARE_MEMMAP将原始的固件内容映射到"/sys/firmware/memmap"文件.主要用于调试目的,以及kexec为下一个内核设置参数.详见"Documentation/ABI/testing/sysfs-firmware-memmap"文档.不确定的选"N". BIOS update support for DELL systems via sysfsCONFIG_DELL_RBU允许Dell OpenManage或DUP(Dell Update Packages)工具通过sysfs更新DELL服务器主板的BIOS.详见"Documentation/dell_rbu.txt"文档.即使你确实需要此功能,也建议选"M"而不是"Y".毕竟刷BIOS不能当做家常便饭.留着刷BIOS的接口,总是件危险的事. Dell Systems Management Base DriverCONFIG_DCDBAS该驱动为DELL服务器专用的系统管理软件(Dell OpenManage)提供了sysfs接口.详见"Documentation/dcdbas.txt"文档. Export DMI identification via sysfs to userspaceCONFIG_DMIID将SMBIOS(System Management BIOS)/DMI(Desktop Management Interface)中的系统识别信息(序列号,制造商,型号,等等)导出到用户空间(/sys/class/dmi/id/).开启此项后,dmidecode工具就可以显示与制造商相关的信息.此外,基于DMI的模块的自动加载也依赖于此项. DMI table support in sysfsCONFIG_DMI_SYSFS将SMBIOS/DMI中的原始数据(包含大量的系统硬件信息)导出到用户空间(/sys/firmware/dmi/). 这些信息可以通过dmidecode工具显示出来. iSCSI Boot Firmware Table AttributesCONFIG_ISCSI_IBFT_FIND使内核能定位iBFT(iSCSI Boot Firmware Table)在内存中的位置. 目的是为子项(CONFIG_ISCSI_IBFT)提供支持. iSCSI Boot Firmware Table Attributes module CONFIG_ISCSI_IBFT 将iBFT(iSCSI Boot Firmware Table)的内容通过sysfs导出到用户空间. 如果你想在系统引导过程中动态检测iSCSI引导参数,可以选"Y",否则应选"N". QEMU fw_cfg device support in sysfsQEMU在sysfs中的fw_cfg设备支持 Google Firmware DriversCONFIG_GOOGLE_FIRMWARE仅用于Google自家的服务器 EFI (Extensible Firmware Interface) SupportEFI/UEFI(统一可扩展固件接口)支持.2009年之后,UEFI已经基本全线取代了BIOS. EFI Variable Support via sysfs CONFIG_EFI_VARS 允许通过sysfs接口操作(读/写/新建/删除)EFI变量.开启后可支持各种操作EFI变量的工具: efivar?,efibootmgr,vathpela/efibootmgr,uefivars,efitools,fwts(Firmware Test Suite). 建议选"Y". Register efivars backend for pstore CONFIG_EFI_VARS_PSTORE 将efivars模块(CO…

Linux内核配置选项简介(10)
type: item
date: 2020-04-11T15:16:36+09:00
description: 由于内容太多没整理完全，请根据自己电脑情况选取Device Drivers设备驱动程序Generic Driver Options驱动程序通用选项 Support for uevent helper path to uevent helper CONFIG_UEVENT_HELPER_PATH 早年的内核(切换到基于netlink机制之前),在发生uevent事件(通常是热插拔)时, 需要调用用户空间程序(通常是"/sbin/hotplug"),以帮助完成uevent事件的处理. 此选项就是用于设定这个帮助程序的路径.由于目前的发行版都已不再需要此帮助程序,所以请保持空白. Maintain a devtmpfs filesystem to mount at /dev CONFIG_DEVTMPFS devtmpfs是一种基于CONFIG_TMPFS的文件系统(与proc和sys有几分相似).在系统启动过程中,随着各个设备的初始化完成,内核将会自动在devtmpfs中创建相应的设备节点(使用默认的文件名和权限)并赋予正确的主次设备号.更进一步,在系统运行过程中,随着各种设备插入和拔除,内核也同样会自动在devtmpfs中创建和删除的相应的设备节点(使用默认的文件名和权限)并赋予正确的主次设备号.如果将devtmpfs挂载到"/dev"目录(通常是系统启动脚本),那么便拥有了一个全自动且全功能的"/dev"目录,而且用户空间程序(通常是udevd)还可以对其中的内容进行各种修改(增删节点,改变权限,创建符号链接).目前的发行版和各种嵌入式系统基本都依赖于此,除非你知道自己在做什么,否则请选"Y". Automount devtmpfs at /dev, after the kernel mounted the rootfs CONFIG_DEVTMPFS_MOUNT 在内核挂载根文件系统的同时,立即自动将devtmpfs挂载到"/dev"目录.因为此时init进程都还尚未启动,所以这就确保在进入用户空间之前,所有设备文件就都已经准备完毕.开启此选项相当于设置内核引导参数"devtmpfs.mount=1",关闭此选项相当于设置内核引导参数"devtmpfs.mount=0".开启此项后,你就可以放心的使用"init=/bin/sh"直接进入救援模式,而不必担心"/dev"目录空无一物.注意:此选项并不影响基于initramfs的启动,此种情况下,devtmpfs必须被手动挂载.所以,如果你的系统使用initrd或者有专门的启动脚本用于挂载"/dev"目录(大多数发行版都有这样的脚本),或者你看了前面的解释,还是不确定,那就选"N".对于实在想要使用"init=/bin/sh"直接进入救援模式的人来说,还是使用"init=/bin/sh devtmpfs.mount=1"吧! Select only drivers that don't need compile-time external firmware CONFIG_STANDALONE 只显示那些编译时不需要额外固件支持的驱动程序,除非你有某些怪异硬件,否则请选"Y". Prevent firmware from being built CONFIG_PREVENT_FIRMWARE_BUILD 不编译固件(firmware).固件一般是随硬件的驱动程序提供的,仅在更新固件的时候才需要重新编译.建议选"Y". Userspace firmware loading support CONFIG_FW_LOADER 用户空间固件加载支持.如果内核自带的模块需要它,它将会被自动选中.但某些内核树之外的模块也可能需要它,这时候就需要你根据实际情况手动开启了. Include in-kernel firmware blobs in kernel binary CONFIG_FIRMWARE_IN_KERNEL 内核源码树中包含了许多驱动程序需要的二进制固件(blob),推荐的方法是通过"make firmware_install"将"firmware"目录中所需的固件复制到系统的"/lib/firmware/"目录中,然后由用户空间帮助程序在需要的时候进行加载.开启此项后,将会把所需的"blob"直接编译进内核,这样就可以无需用户空间程序的帮助,而直接使用这些固件了(例如:当根文件系统依赖于此类固件,而你又不想使用initrd的时候).每个需要此类二进制固件的驱动程序,都会有一个"Include firmware for xxx device"的选项,如果此处选"Y",那么这些选项都将被隐藏.建议选"N". External firmware blobs to build into …

Linux内核配置选项简介(9)
type: item
date: 2020-04-11T15:15:22+09:00
description: Networking support网络支持Networking options网络选项 Packet socket CONFIG_PACKET 链路层PF_PACKET套接字支持.可以让应用程序(比如:抓包工具tcpdump, DHCP客户端dhclient)直接与网络设备通讯,而无需使用内核中的其它中介协议.不确定的选"Y"或"M". Packet: sockets monitoring interface CONFIG_PACKET_DIAG PF_PACKET套接字监控接口,ss这样的诊断工具需要它. Unix domain sockets CONFIG_UNIX Unix domain sockets 支持.许多程序都使用它在操作系统内部进行进程间通信(IPC), 比如: X Window, syslog, udev 等等.选"Y",除非你确实知道自己在做什么. UNIX: socket monitoring interface CONFIG_UNIX_DIAG UNIX套接字监控接口,ss这样的工具需要它. Transformation user configuration interface CONFIG_XFRM_USER 为IPsec相关的工具提供Transformation(XFRM)用户配置接口 Transformation sub policy support CONFIG_XFRM_SUB_POLICY XFRM子策略支持,不确定的选"N". Transformation migrate database CONFIG_XFRM_MIGRATE 用于动态的更新 IPsec SA(security association) 的定位器(locator). 这个特性对于手机这类移动设备来讲至关重要, 因为它需要在不同的基站之间迁移.不确定的选"N". Transformation statistics CONFIG_XFRM_STATISTICS 转换统计,这不是SNMP/MIB规范的内容.用于调试目的.不确定的选"N". PF_KEY sockets CONFIG_NET_KEY PF_KEYv2 套接字支持(与KAME兼容).PF_KEY协议族主要用来处理SA(安全关联), 对SADB(SA数据库)进行管理,主要用在IPsec协议中.PF_KEY_v2的编程API在RFC2367中定义. PF_KEY MIGRATE CONFIG_NET_KEY_MIGRATE 向PF_KEYv2套接字中添加一个 PF_KEY MIGRATE 消息. 、 PF_KEY MIGRATE 消息可用于动态的更新 IPsec SA(security association) 的定位器(locator). 这个特性对于手机这类移动设备来讲至关重要,因为它需要在不同的基站之间迁移.不确定的选"N". SMC socket protocol family SMC套接字协议族 TCP/IP networking CONFIG_INET TCP/IP协议,必选! IP: multicasting CONFIG_IP_MULTICAST IP组播(IP multicasting)支持.指的是一个发送者向一组特定的接收者发送数据, 但只需发送一份数据副本.实际应用的场合很少,MBONE算是其中之一, 与RTP等音视频协议相结合也算一种.不确定的选"N". IP: advanced router CONFIG_IP_ADVANCED_ROUTER 高级路由支持,需要开启内核的IP转发功能(echo 1 > /proc/sys/net/ipv4/ip_forward)才能正常工作. 如果这个Linux系统用作专业的路由器就选上,选上之后还需要按需选择其下的子项.一般的主机不需要这个. FIB TRIE statistics CONFIG_IP_FIB_TRIE_STATS 主要用于测试TRIE性能 IP: policy routing CONFIG_IP_MULTIPLE_TABLES 策略路由 IP: equal cost multipath CONFIG_IP_ROUTE_MULTIPATH 用于基于目的地址的负载均衡 IP: verbose route monitoring CONFIG_IP_ROUTE_VERBOSE 显示冗余的路由监控信息 IP: kernel level autoconfiguration CONFIG_IP_PNP 在内核启动时自动配置网卡的ip地址/路由表,配置信息来自于以下途径:内核引导参数, 自举协议(BOOTP),反向地址转换协议(RARP),动态主机配置协议(DHCP).通常, 需要从网络启动的无盘工作…

Linux内核配置选项简介(8)
type: item
date: 2020-04-11T15:14:43+09:00
description: Executable file formats / Emulations可执行文件格式/仿真Kernel support for ELF binariesCONFIG_BINFMT_ELFELF是最常用的跨平台二进制文件格式,支持动态连接,支持不同的硬件平台,支持不同的操作系统. 必选,除非你知道自己在做什么. Write ELF core dumps with partial segmentsCONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS如果你打算在此Linux上开发应用程序或者帮助别人调试bug,那么就选"Y",否则选"N". 注意这里的调试和开发不是指内核调试和开发,是应用程序的调试和开发. Kernel support for scripts starting with #!CONFIG_BINFMT_SCRIPT支持以"#!/path/to/interpreter"行开头的脚本.务必"Y",不要"M"或"N", 除非你知道自己在做什么. Kernel support for MISC binariesCONFIG_BINFMT_MISC允许插入二进制封装层到内核中,运行Java,.NET(Mono-based),Python, Emacs-Lisp等语言编写的程序时需要它,DOSEMU也需要它.想要更方便的使用此特性, 你还需要使用"mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc"挂载binfmt_misc伪文件系统. 具体详情可以参考"Documentation/binfmt_misc.txt"文档. Enable core dump supportCONFIG_COREDUMP核心转储(core dump)支持.如果你打算在此Linux上开发应用程序或者帮助别人调试bug,那么就选"Y",否则选"N". 注意这里的调试和开发不是指内核调试和开发,是应用程序的调试和开发. IA32 EmulationCONFIG_IA32_EMULATION允许在64位内核中运行32位代码.除非你打算使用纯64位环境,否则请开启此项. 提示:GRUB2支持引导纯64位内核,但是GRUB不支持. IA32 a.out support CONFIG_IA32_AOUT 早期UNIX系统的可执行文件格式(32位),目前已经被ELF格式取代. 除非你需要使用古董级的二进制程序.否则请关闭.x32 ABI for 64-bit modeCONFIG_X86_X32 允许32位程序使用完整的64位寄存器,以减小内存占用(memory footprint). 这可以提高32位程序的运行性能.如果你使用binutils-2.22以上的版本(支持elf32_x86_64),就选"Y",否则选"N".