📄 内核编译.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta http-equiv="Content-Language" content="zh-CN"><style type="text/css" media="all">body { margin:10px; }h1,h2 { text-align:center; background:#ddd; }h2 { margin: 10px 5%; }h2#auth_name { background:#fff; }/*字体*/dt { font:normal normal 15px Verdana,宋体,sans-serif; }dd,span.little_head { font:normal normal 14px Verdana,宋体,sans-serif; }/*缩进*/dt, dd { margin-left: 0; }dd dt, dd dd { margin-left: 1.3em; }/*间距*/dt { margin-top: 0.5em; }/*颜色*/dt { color:#d11; }dd dt { color:#11e; }dd dd dt { color:#c2c; }dd dd dd dt { color:#360; }dd dd dd dd dt { color:#a50; }dd dd dd dd dd dt { color:#28c; }dt.omit { color:#555; }</style><title>Linux 2.6.19.x 内核编译配置选项简介【作者:金步国】</title></head><body><h1>Linux 2.6.19.x 内核编译配置选项简介</h1><h2 id="auth_name">作者:<strong><a href="mailto:csfrank@citiz.net">金步国</a></strong></h2><hr><h3>版权声明</h3><p>本文作者是一位自由软件爱好者,所以本文虽然不是软件,但是本着 GPL的精神发布。任何人都可以自由使用、转载、复制和再分发,但必须保留作者署名,亦不得对声明中的任何条款作任何形式的修改,也不得附加任何其它条件。您可以自由链接、下载、传播此文档,但前提是必须保证全文完整转载,包括完整的版权信息和作译者声明。</p><h3>其他作品</h3><p>本文作者十分愿意与他人共享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有作品的列表:</p><ul><li>电信用户请访问: <a href="http://lamp.linux.gov.cn/jinbuguo_florilegium.html">金步国作品列表</a></li><li>网通用户请访问: <a href="http://www.dogdoghome.com/lamp/jinbuguo_florilegium.html">金步国作品列表</a></li><li>铁通用户请访问: <a href="http://lamp.haloso.com/jinbuguo_florilegium.html">金步国作品列表</a></li><li>教育网用户请访问:<a href="http://lamp.haloso.net/jinbuguo_florilegium.html">金步国作品列表</a></li></ul><h3>BUG报告,切磋与探讨</h3><p>由于作者水平有限,因此不能保证作品内容准确无误,请在阅读中自行鉴别。如果你发现了作品中的错误,请您来信指出,哪怕是错别字也好,任何提高作品质量的建议我都将虚心接纳。如果你愿意就作品中的相关内容与我进行进一步切磋与探讨,也欢迎你与我联系。联系方式:Email:csfrank@citiz.net ; QQ: 70171448 ; MSN: csfrank122@hotmail.com</p><hr><p>本文作者将不定期的根据最新的内核进行添加(同时仍然保留老版本内核的选项),欢迎常来光临并帮助指出其中的错误.</p><h2>Code maturity level options<br>代码成熟度选项</h2><dl><dt>Prompt for development and/or incomplete code/drivers</dt><dd>显示尚在开发中或尚未完成的代码与驱动.除非你是测试人员或者开发者,否则请勿选择</dd></dl><h2>General setup<br>常规设置</h2><dl><dt>Local version - append to kernel release</dt><dd>在内核版本后面加上自定义的版本字符串(小于64字符),可以用"uname -a"命令看到</dd><dt>Automatically append version information to the version string</dt><dd>自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持</dd><dt>Support for paging of anonymous memory (swap)</dt><dd>使用交换分区或者交换文件来做为虚拟内存</dd><dt>System V IPC</dt><dd>System V进程间通信(IPC)支持,许多程序需要这个功能.必选,除非你知道自己在做什么</dd><dd><dl> <dt>IPC Namespaces</dt><dd>IPC命名空间支持,不确定可以不选</dd></dl></dd><dt>POSIX Message Queues</dt><dd>POSIX消息队列,这是POSIX IPC中的一部分</dd><dt>BSD Process Accounting</dt><dd>将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/内存占用等信息</dd><dd><dl> <dt>BSD Process Accounting version 3 file format</dt><dd>使用新的第三版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式</dd></dl></dd><dt>Export task/process statistics through netlink</dt><dd>通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的</dd><dd><dl> <dt>Enable per-task delay accounting</dt><dd>在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间</dd></dl></dd><dt>UTS Namespaces</dt><dd>UTS名字空间支持,不确定可以不选</dd><dt>Auditing support</dt><dd>审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计</dd><dd><dl> <dt>Enable system-call auditing support</dt><dd>支持对系统调用的审计</dd></dl></dd><dt>Kernel .config support</dt><dd>把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息</dd><dd><dl> <dt>Enable access to .config through /proc/config.gz</dt><dd>允许通过/proc/config.gz访问内核的配置信息</dd></dl></dd><dt>Cpuset support</dt><dd>只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它</dd><dt>Kernel->user space relay support (formerly relayfs)</dt><dd>在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口</dd><dt>Initramfs source file(s)</dt><dd>initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白</dd><dt>Optimize for size (Look out for broken compilers!)</dt><dd>编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码</dd><dt>Enable extended accounting over taskstats</dt><dd>收集额外的进程统计信息并通过taskstats接口发送到用户空间</dd><dt>Configure standard kernel features (for small systems)</dt><dd>配置标准的内核特性(为小型系统)</dd><dd><dl> <dt>Enable 16-bit UID system calls</dt><dd>允许对UID系统调用进行过时的16-bit包装</dd> <dt>Sysctl syscall support</dt><dd>不需要重启就能修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核行为的参数或变量</dd> <dt>Load all symbols for debugging/kksymoops</dt><dd>装载所有的调试符号表信息,仅供调试时选择</dd> <dd><dl> <dt>Include all symbols in kallsyms</dt><dd>在kallsyms中包含内核知道的所有符号,内核将会增大300K</dd> <dt>Do an extra kallsyms pass</dt><dd>除非你在kallsyms中发现了bug并需要报告这个bug才打开该选项</dd> </dl></dd> <dt>Support for hot-pluggable devices</dt><dd>支持热插拔设备,如usb与pc卡等,Udev也需要它</dd> <dt>Enable support for printk</dt><dd>允许内核向终端打印字符信息,在需要诊断内核为什么不能运行时选择</dd> <dt>BUG() support</dt><dd>显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错误被忽略</dd> <dt>Enable ELF core dumps</dt><dd>内存转储支持,可以帮助调试ELF格式的程序</dd> <dt>Enable full-sized data structures for core</dt><dd>在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能</dd> <dt>Enable futex support</dt><dd>快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序</dd> <dt>Enable eventpoll support</dt><dd>支持事件轮循的系统调用</dd> <dt>Use full shmem filesystem</dt><dd>启用shmem支持.shmem是基于共享内存的文件系统(可能用到swap),在启用TMPFS后可以挂载为tmpfs供用户空间使用,它比简单的ramfs先进许多</dd> <dt>Use full SLAB allocator</dt><dd>使用SLAB完全取代SLOB进行内存分配,SLAB是一种优秀的内存分配管理器,推荐使用</dd> <dt>Enable VM event counters for /proc/vmstat</dt><dd>允许在/proc/vmstat中包含虚拟内存事件记数器</dd></dl></dd></dl><h2>Loadable module support<br>可加载模块支持</h2><dl><dt>Enable loadable module support</dt><dd>打开可加载模块支持,如果打开它则必须通过"make modules_install"把内核模块安装在/lib/modules/中</dd><dd><dl> <dt>Module unloading</dt><dd>允许卸载已经加载的模块</dd> <dd><dl> <dt>Forced module unloading</dt><dd>允许强制卸载正在使用中的模块(比较危险)</dd> </dl></dd> <dt>Module versioning support</dt><dd>允许使用其他内核版本的模块(可能会出问题)</dd> <dt>Source checksum for all modules</dt><dd>为所有的模块校验源码,如果你不是自己编写内核模块就不需要它</dd> <dt>Automatic kernel module loading</dt><dd>让内核通过运行modprobe来自动加载所需要的模块,比如可以自动解决模块的依赖关系</dd></dl></dd></dl><h2>Block layer<br>块设备层</h2><dl><dt>Enable the block layer</dt><dd>块设备支持,使用硬盘/USB/SCSI设备者必选</dd><dd><dl> <dt>Support for Large Block Devices</dt><dd>仅在使用大于2TB的块设备时需要</dd> <dt>Support for tracing block io actions</dt><dd>块队列IO跟踪支持,它允许用户查看在一个块设备队列上发生的所有事件,可以通过blktrace程序获得磁盘当前的详细统计数据</dd> <dt>Support for Large Single Files</dt><dd>仅在可能使用大于2TB的文件时需要</dd> <dt>IO Schedulers</dt><dd>IO调度器</dd> <dd><dl> <dt>Anticipatory I/O scheduler</dt><dd>假设一个块设备只有一个物理查找磁头(例如一个单独的SATA硬盘),将多个随机的小写入流合并成一个大写入流,用写入延时换取最大的写入吞吐量.适用于大多数环境,特别是写入较多的环境(比如文件服务器)</dd> <dt>Deadline I/O scheduler</dt><dd>使用轮询的调度器,简洁小巧,提供了最小的读取延迟和尚佳的吞吐量,特别适合于读取较多的环境(比如数据库)</dd> <dt>CFQ I/O scheduler</dt><dd>使用QoS策略为所有任务分配等量的带宽,避免进程被饿死并实现了较低的延迟,可以认为是上述两种调度器的折中.适用于有大量进程的多用户系统</dd> <dt>Default I/O scheduler</dt><dd>默认IO调度器</dd> </dl></dd></dl></dd></dl><h2>Processor type and features<br>中央处理器(CPU)类型及特性</h2><dl><dt>Symmetric multi-processing support</dt><dd>对称多处理器支持,如果你有多个CPU或者使用的是多核CPU就选上.此时"Enhanced Real Time Clock Support"选项必须开启,"Advanced Power Management"选项必须关闭</dd><dt>Subarchitecture Type</dt><dd>处理器的子架构,大多数人都应当选择"PC-compatible"</dd><dt>Processor family</dt><dd>处理器系列,请按照你实际使用的CPU选择</dd><dt>Generic x86 support</dt><dd>通用x86支持,如果你的CPU能够在上述"Processor family"中找到就别选</dd><dt>HPET Timer Support</dt><dd>HPET是替代8254芯片的新一代定时器,i686及以上级别的主板都支持,可以安全的选上</dd><dt>Maximum number of CPUs</dt><dd>支持的最大CPU数,每增加一个内核将增加8K体积</dd>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -