<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>不然你要我怎么样 &#187; Kernel</title>
	<atom:link href="http://www.xiangmocheng.com/tag/kernel/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xiangmocheng.com</link>
	<description>彪悍的代码不需要注释</description>
	<lastBuildDate>Wed, 30 Nov 2011 11:47:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>【转贴】Linux输出信息调试信息重定向</title>
		<link>http://www.xiangmocheng.com/2009/12/how-to-redirect-linux-debug-message/</link>
		<comments>http://www.xiangmocheng.com/2009/12/how-to-redirect-linux-debug-message/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 08:07:08 +0000</pubDate>
		<dc:creator>xiangmocheng</dc:creator>
				<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[UART]]></category>

		<guid isPermaLink="false">http://xiangmocheng.yo2.cn/articles/%e3%80%90%e8%bd%ac%e8%b4%b4%e3%80%91linux%e8%be%93%e5%87%ba%e4%bf%a1%e6%81%af%e8%b0%83%e8%af%95%e4%bf%a1%e6%81%af%e9%87%8d%e5%ae%9a%e5%90%91.html</guid>
		<description><![CDATA[在运行linux的时候，所有的调试信息可以分为三个部分 1. bootloader输出信息 U-Boot 1.3.2 (Nov 19 2016 &#8211; 22:02:08) DRAM: 64 MB Flash: 512 kB NAND: 64 MiB In: serial Out: serial Err: serial Hit any key to stop autoboot: 0 [yqliu2410 #] tftp Found DM9000 ID:90000a46 at address 10000000 ! DM9000 work in 16 bus width bd-&#62;bi_entaddr: 08:00:3e:26:0a:5b [eth_init]MAC:8:0:3e:26:a:5b: TFTP from server 192.168.1.152; [...]]]></description>
			<content:encoded><![CDATA[<p>在运行linux的时候，所有的调试信息可以分为三个部分</p>
<p>1. bootloader输出信息</p>
<p>U-Boot 1.3.2 (Nov 19 2016 &#8211; 22:02:08)<br />
DRAM: 64 MB<br />
Flash: 512 kB<br />
NAND: 64 MiB<br />
In: serial<br />
Out: serial<br />
Err: serial<br />
Hit any key to stop autoboot: 0<br />
[yqliu2410 #] tftp<br />
Found DM9000 ID:90000a46 at address 10000000 !<br />
DM9000 work in 16 bus width<br />
bd-&gt;bi_entaddr: 08:00:3e:26:0a:5b<br />
[eth_init]MAC:8:0:3e:26:a:5b:<br />
TFTP from server 192.168.1.152; our IP address is 192.168.1.155<br />
Filename &#8216;uImage&#8217;.<br />
Load address: 0&#215;30008000<br />
Loading: TT##################################done<br />
Bytes transferred = 1617316 (18ada4 hex)<br />
[up-tech2410 #] bootm<br />
## Booting image at 30008000 &#8230;<br />
Image Name: Linux-2.6.24.4<br />
Created: 2016-11-19 14:05:29 UTC<br />
Image Type: ARM Linux Kernel Image (uncompressed)<br />
Data Size: 1617252 Bytes = 1.5 MB<br />
Load Address: 30008000<br />
Entry Point: 30008040<br />
Verifying Checksum &#8230; OK<br />
Starting kernel &#8230;</p>
<p><span id="more-69493"></span></p>
<p>2. linux低级调试信息输出</p>
<p>Uncompressing Linux&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.. done, booting the kernel.</p>
<p>3. linux调试信息输出</p>
<p style="margin: 5px; line-height: 150%;">Linux version 2.6.24.4 (root@vm-dev) (gcc version 3.4.6) #100 Sat Nov 19 07:47:35 CST 2016<br />
CPU: ARM920T [41129200] revision 0 (ARMv4T), cr=00007177<br />
Machine: SMDK2410<br />
Memory policy: ECC disabled, Data cache writeback<br />
CPU S3C2410A (id 0&#215;32410002)<br />
S3C2410: core 202.800 MHz, memory 101.400 MHz, peripheral 50.700 MHz<br />
S3C24XX Clocks, (c) 2004 Simtec Electronics</p>
<p style="margin: 5px; line-height: 150%;">&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.</p>
<p>现在要将所有的调试信息输出到别的串口。以com1为例(从com0开始计算)</p>
<p>一、将bootloader的输出信息输出到com1</p>
<p>这里以u-boot1.3.2为例：很简单只需要修改一个宏定义就ok</p>
<p>Vi inlcude/configs/xxxconfig.h(xxx为你定义的开发板的名字)</p>
<p>更改原有的宏</p>
<table style="border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0" width="95%" bgcolor="#f1f1f1" bordercolor="#999999">
<tbody>
<tr>
<td>
<p style="margin: 5px; line-height: 150%;"><code><span style="color: #000000;">/<span style="color: #0000cc;">*</span><br />
<span style="color: #0000cc;">*</span> select serial console configuration<br />
<span style="color: #0000cc;">*</span><span style="color: #0000cc;">/</span><br />
//#define CONFIG_SERIAL1 1 /<span style="color: #0000cc;">*</span> we use SERIAL 1 on SMDK2410 <span style="color: #0000cc;">*</span><span style="color: #0000cc;">/</span><br />
//modify <span style="color: #0000ff;">for</span> xxx2410<br />
//by lyj_uptech<br />
#define CONFIG_SERIAL2 1 /<span style="color: #0000cc;">*</span> we use SERIAL 2 on SMDK2410 <span style="color: #0000cc;">*</span><span style="color: #0000cc;">/</span></span></code></p>
</td>
</tr>
</tbody>
</table>
<p>二、将low_level 的调试信息输出到com1</p>
<p>在改之前我们先分析一下在linux启动之前它是如何使用串口的（以linux-2.6.24为例）。</p>
<p>1. 在arch/arm/boot/compressed/misc.c文件中有定义</p>
<table style="border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0" width="95%" bgcolor="#f1f1f1" bordercolor="#999999">
<tbody>
<tr>
<td>
<p style="margin: 5px; line-height: 150%;"><code><span style="color: #000000;"><span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> putstr<span style="color: #0000cc;">(</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> <span style="color: #0000cc;">*</span>ptr<span style="color: #0000cc;">)</span><br />
<span style="color: #0000cc;">{</span><br />
<span style="color: #0000ff;">char</span> c<span style="color: #0000cc;">;</span><br />
<span style="color: #0000ff;">while</span> <span style="color: #0000cc;">(</span><span style="color: #0000cc;">(</span>c <span style="color: #0000cc;">=</span> <span style="color: #0000cc;">*</span>ptr<span style="color: #0000cc;">+</span><span style="color: #0000cc;">+</span><span style="color: #0000cc;">)</span> <span style="color: #0000cc;">!</span><span style="color: #0000cc;">=</span> <span style="color: #ff00ff;">'\0'</span><span style="color: #0000cc;">)</span> <span style="color: #0000cc;">{</span><br />
<span style="color: #0000ff;">if</span> <span style="color: #0000cc;">(</span>c <span style="color: #0000cc;">=</span><span style="color: #0000cc;">=</span> <span style="color: #ff00ff;">'\n'</span><span style="color: #0000cc;">)</span><br />
<span style="color: #ff0000;">putc</span><span style="color: #0000cc;">(</span><span style="color: #ff00ff;">'\r'</span><span style="color: #0000cc;">)</span><span style="color: #0000cc;">;</span><br />
<span style="color: #ff0000;">putc</span><span style="color: #0000cc;">(</span>c<span style="color: #0000cc;">)</span><span style="color: #0000cc;">;</span><br />
<span style="color: #0000cc;">}</span><br />
<span style="color: #ff0000;">flush</span><span style="color: #0000cc;">(</span><span style="color: #0000cc;">)</span><span style="color: #0000cc;">;</span><br />
<span style="color: #0000cc;">}</span></span></code></p>
<p style="margin: 5px; line-height: 150%;">
</td>
</tr>
</tbody>
</table>
<p>2. arch/arm/boot/compressed/misc.中的函数decompress_kernel就是使用的putstr来打印的如下输出信息：</p>
<table style="border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0" width="95%" bgcolor="#f1f1f1" bordercolor="#999999">
<tbody>
<tr>
<td>
<p style="margin: 5px; line-height: 150%;"><code><span style="color: #000000;">Uncompressing Linux<span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span><span style="color: #0000cc;">.</span> done<span style="color: #0000cc;">,</span> booting the kernel</span></code></p>
</td>
</tr>
</tbody>
</table>
<p>3. 追根溯源，putstr函数最终调用的是putc（请注意这里的putc不是在misc.c函数中定义的icedcc_putc，因为没有CONFIG_CPU_V6宏定义），真正的底层操作在文件include/asm-arm/plat-s3c/uncompress.h</p>
<p>4. 解析该文件</p>
<table style="border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0" width="95%" bgcolor="#f1f1f1" bordercolor="#999999">
<tbody>
<tr>
<td>
<p style="margin: 5px; line-height: 150%;"><code><span style="color: #000000;"><span style="color: #ff9900;">/* we can deal with the case the UARTs are being run<br />
* in FIFO mode, so that we don't hold up our execution<br />
* waiting for tx to happen...<br />
*/</span><br />
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span> <span style="color: #ff0000;">putc</span><span style="color: #0000cc;">(</span><span style="color: #0000ff;">int</span> ch<span style="color: #0000cc;">)</span><br />
<span style="color: #0000cc;">{</span><br />
<span style="color: #0000ff;">if</span> <span style="color: #0000cc;">(</span>uart_rd<span style="color: #0000cc;">(</span>S3C2410_UFCON<span style="color: #0000cc;">)</span> <span style="color: #0000cc;">&amp;</span> S3C2410_UFCON_FIFOMODE<span style="color: #0000cc;">)</span> <span style="color: #0000cc;">{</span><br />
<span style="color: #0000ff;">int</span> level<span style="color: #0000cc;">;</span><br />
<span style="color: #0000ff;">while</span> <span style="color: #0000cc;">(</span>1<span style="color: #0000cc;">)</span> <span style="color: #0000cc;">{</span><br />
level <span style="color: #0000cc;">=</span> uart_rd<span style="color: #0000cc;">(</span>S3C2410_UFSTAT<span style="color: #0000cc;">)</span><span style="color: #0000cc;">;</span><br />
level <span style="color: #0000cc;">&amp;</span><span style="color: #0000cc;">=</span> fifo_mask<span style="color: #0000cc;">;</span></span></code></p>
<p><span style="color: #0000ff;">if</span> <span style="color: #0000cc;">(</span>level <span style="color: #0000cc;">&lt;</span> fifo_max<span style="color: #0000cc;">)</span><br />
<span style="color: #0000ff;">break</span><span style="color: #0000cc;">;</span><br />
<span style="color: #0000cc;">}</span><br />
<span style="color: #0000cc;">}</span> <span style="color: #0000ff;">else</span> <span style="color: #0000cc;">{</span><br />
<span style="color: #ff9900;">/* not using fifos */</span><br />
<span style="color: #0000ff;">while</span> <span style="color: #0000cc;">(</span><span style="color: #0000cc;">(</span>uart_rd<span style="color: #0000cc;">(</span>S3C2410_UTRSTAT<span style="color: #0000cc;">)</span> <span style="color: #0000cc;">&amp;</span> S3C2410_UTRSTAT_TXE<span style="color: #0000cc;">)</span> <span style="color: #0000cc;">!</span><span style="color: #0000cc;">=</span> S3C2410_UTRSTAT_TXE<span style="color: #0000cc;">)</span><br />
barrier<span style="color: #0000cc;">(</span><span style="color: #0000cc;">)</span><span style="color: #0000cc;">;</span><br />
<span style="color: #0000cc;">}</span><br />
<span style="color: #ff9900;">/* write byte to transmission register */</span><br />
uart_wr<span style="color: #0000cc;">(</span>S3C2410_UTXH<span style="color: #0000cc;">,</span> ch<span style="color: #0000cc;">)</span><span style="color: #0000cc;">;</span><br />
<span style="color: #0000cc;">}</span></p>
<p style="margin: 5px; line-height: 150%;">
</td>
</tr>
</tbody>
</table>
<p>该函数中调用的两个函数，uart_rd uart_wr在同一个文件中定义</p>
<table style="border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0" width="95%" bgcolor="#f1f1f1" bordercolor="#999999">
<tbody>
<tr>
<td>
<p style="margin: 5px; line-height: 150%;"><code><span style="color: #000000;"><span style="color: #0000cc;">#</span><span style="color: #ff0000;">define</span> uart_base S3C24XX_PA_UART <span style="color: #0000cc;">+</span> <span style="color: #0000cc;">(</span>0x4000<span style="color: #0000cc;">*</span>CONFIG_S3C_LOWLEVEL_UART_PORT<span style="color: #0000cc;">)</span><br />
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">__inline__</span> <span style="color: #0000ff;">void</span><br />
uart_wr<span style="color: #0000cc;">(</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> reg<span style="color: #0000cc;">,</span> <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> val<span style="color: #0000cc;">)</span><br />
<span style="color: #0000cc;">{</span><br />
<span style="color: #0000ff;">volatile</span> <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> <span style="color: #0000cc;">*</span>ptr<span style="color: #0000cc;">;</span><br />
ptr <span style="color: #0000cc;">=</span> <span style="color: #0000cc;">(</span><span style="color: #0000ff;">volatile</span> <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> <span style="color: #0000cc;">*</span><span style="color: #0000cc;">)</span><span style="color: #0000cc;">(</span>reg <span style="color: #0000cc;">+</span> uart_base<span style="color: #0000cc;">)</span><span style="color: #0000cc;">;</span><br />
<span style="color: #0000cc;">*</span>ptr <span style="color: #0000cc;">=</span> val<span style="color: #0000cc;">;</span><br />
<span style="color: #0000cc;">}</span><br />
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">__inline__</span> <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span><br />
uart_rd<span style="color: #0000cc;">(</span><span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> reg<span style="color: #0000cc;">)</span><br />
<span style="color: #0000cc;">{</span><br />
<span style="color: #0000ff;">volatile</span> <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> <span style="color: #0000cc;">*</span>ptr<span style="color: #0000cc;">;</span><br />
ptr <span style="color: #0000cc;">=</span> <span style="color: #0000cc;">(</span><span style="color: #0000ff;">volatile</span> <span style="color: #0000ff;">unsigned</span> <span style="color: #0000ff;">int</span> <span style="color: #0000cc;">*</span><span style="color: #0000cc;">)</span><span style="color: #0000cc;">(</span>reg <span style="color: #0000cc;">+</span> uart_base<span style="color: #0000cc;">)</span><span style="color: #0000cc;">;</span><br />
<span style="color: #0000ff;">return</span> <span style="color: #0000cc;">*</span>ptr<span style="color: #0000cc;">;</span><br />
<span style="color: #0000cc;">}</span></span></code></p>
<p style="margin: 5px; line-height: 150%;">
</td>
</tr>
</tbody>
</table>
<p>从宏定义uart_base中就可以清楚的看到，当CONFIG_S3C_LOWLEVEL_UART_PORT为0时,uart_base的值为0&#215;50000000,也就是uart0的控制寄存器基地址。如果要使用uart1的话就把CONFIG_S3C_LOWLEVEL_UART_PORT赋值为1就可以了。</p>
<p>5、真正更改的地方只有一个</p>
<p><img src="http://blogimg.chinaunix.net/blog/upfile2/081120131415.jpg" border="0" alt="" /></p>
<p>下级目录</p>
<p><img src="http://blogimg.chinaunix.net/blog/upfile2/081120132127.jpg" border="0" alt="" /></p>
<p>修改为1就ok！</p>
<p>6. 需要注意的地方（你使用的串口初始化了么）</p>
<p>我在整个内核中找遍了解压内核之前运行的代码，都找不到关于串口初始化的代码。所以说，linux在启动之前的串口初始化是依赖bootloader的，要想正常的输出，就必须使用你的bootloader使用的串口，因为在bootloader中进行了对要使用的串口进行了初始化。要保证你的bootloader兼容性很好，那就在bootloader中把所有的串口都初始化一遍。</p>
<p>如果你没有初始化串口，一旦调用putstr，程序就死掉了！</p>
<p>三、将linux的信息输出到com1</p>
<p>将linux运行的信息输出到com1就太简单了，直接到bootloader里面改linux的传递参数就可以了。</p>
<table style="border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0" width="95%" bgcolor="#f1f1f1" bordercolor="#999999">
<tbody>
<tr>
<td>
<p style="margin: 5px; line-height: 150%;"><code><span style="color: #000000;">setenv bootargs root<span style="color: #0000cc;">=</span><span style="color: #0000cc;">/</span>dev<span style="color: #0000cc;">/</span>mtdblock2 noinitrd console<span style="color: #0000cc;">=</span>ttySAC1<span style="color: #0000cc;">,</span>115200<br />
saveenv</span></code></p>
</td>
</tr>
</tbody>
</table>
<p>现在启动一切ok！</p>
<p>感谢yqliu29的支持，没有他的调试程序，我始终的无法知道linux的内核是否正确调用，也无法定位问题！</p>
<p>这里附上他给我的程序（这里的三个灯分别对应的io管脚是 GPF5/6/7）</p>
<table style="border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0" width="95%" bgcolor="#f1f1f1" bordercolor="#999999">
<tbody>
<tr>
<td>
<p style="margin: 5px; line-height: 150%;"><code><span style="color: #000000;">#<span style="color: #0000ff;">if</span> 0<br />
asm volatile<span style="color: #0000cc;">(</span><br />
<span style="color: #ff00ff;">"ldr r6, =0x5400\n\r"</span><br />
<span style="color: #ff00ff;">"ldr r7, =0x56000020\n\r"</span><br />
<span style="color: #ff00ff;">"str r6, [r7]\n\r"</span><br />
<span style="color: #ff00ff;">"ldr r6, =0xC0\n\r"</span><br />
<span style="color: #ff00ff;">"ldr r7, =0x56000024\n\r"</span><br />
<span style="color: #ff00ff;">"str r6, [r7]"</span><span style="color: #0000cc;">)</span><span style="color: #0000cc;">;</span><br />
#<span style="color: #0000ff;">endif</span></span></code></p>
</td>
</tr>
</tbody>
</table>
<p>原帖地址：http://blog.chinaunix.net/u1/57747/showart_1432451.html
<div style="margin-top: 10px">
<p><strong>转载请注明：</strong> 转载自<a href="http://www.xiangmocheng.com/">不然你要我怎么样</a></t>        </br><strong>本文链接地址:</strong> <a href="http://www.xiangmocheng.com/2009/12/how-to-redirect-linux-debug-message/">【转贴】Linux输出信息调试信息重定向</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.xiangmocheng.com/2009/12/how-to-redirect-linux-debug-message/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>【转贴】Linux kernel 2.6.27内核编译配置选项（一）</title>
		<link>http://www.xiangmocheng.com/2009/06/linux-kernel-2-6-27-configuration-1/</link>
		<comments>http://www.xiangmocheng.com/2009/06/linux-kernel-2-6-27-configuration-1/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 08:42:41 +0000</pubDate>
		<dc:creator>xiangmocheng</dc:creator>
				<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Kernel]]></category>

		<guid isPermaLink="false">http://xiangmocheng.yo2.cn/articles/%e3%80%90%e8%bd%ac%e8%b4%b4%e3%80%91linux-kernel-2627%e5%86%85%e6%a0%b8%e7%bc%96%e8%af%91%e9%85%8d%e7%bd%ae%e9%80%89%e9%a1%b9%ef%bc%88%e4%b8%80%ef%bc%89.html</guid>
		<description><![CDATA[<p>原文参见<a href="http://www.diybl.com/course/6_system/linux/Linuxjs/2008106/148287.html" target="_blank">这里</a></p>
<p>---------------------------------------------------</p>
<p><span style="font-size: 14px;">General setup<br />常规设置<br /><br /><span style="color: #ff0000;">Prompt for development and/or incomplete code/drivers</span><br />显示尚在开发中或尚未完成的代码与驱动 <br /><span style="color: #ff0000;">Local version - append to kernel release</span><br />在内核版本后面加上自定义的版本字符串(小于64字符),可以用"uname -a"命令看到 <br /><span style="color: #ff0000;">Automatically append version information to the version string</span><br />自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持 <br /><span style="color: #ff0000;">Support for paging of anonymous memory (swap)</span><br />使用交换分区或者交换文件来做为虚拟内存 <br /><span style="color: #ff0000;">System V IPC</span><br />System V进程间通信(IPC)支持,许多程序需要这个功能.必选,除非你知道自己在做什么 <br /><span style="color: #ff0000;">POSIX Message Queues</span><br />POSIX消息队列,这是POSIX IPC中的一部分 <br /><span style="color: #ff0000;">BSD Process Accounting</span><br />将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/内存占用等信息 <br />&#160;&#160;&#160; <span style="color: #0000ff;">BSD Process Accounting version 3 file format</span><br />&#160;&#160;&#160; 使用新的第三版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式<br /><span style="color: #ff0000;">Export task/process statistics through netlink</span><br />通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的（不确定可以不选） <br />&#160;&#160;&#160; <span style="color: #0000ff;">Enable per-task delay accounting</span><br />&#160;&#160;&#160; 在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">Enable extended accounting over taskstats</span><br />&#160;&#160;&#160; 在统计信息中包含扩展进程所花费的时间&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #800080;">Enable per-task storage I/O accounting</span><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 在统计信息中包含I/O存储进程所花费的时间 <br /><span style="color: #ff0000;">Auditing support</span><br />审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计 <br />&#160;&#160;&#160; <span style="color: #0000ff;">Enable system-call auditing support</span><br />&#160;&#160;&#160; 支持对系统调用的审计<br /><span style="color: #ff0000;">Kernel .config support</span><br />把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息<br />&#160;&#160;&#160; <span style="color: #0000ff;">Enable access to .config through /proc/config.gz</span><br />&#160;&#160;&#160; 允许通过/proc/config.gz访问内核的配置信息 <br /><span style="color: #ff0000;">Kernel log buffer size (16 =&#62; 64KB, 17 =&#62; 128KB)</span><br />内核信息大小<br /><span style="color: #ff0000;">Control Group support</span><br />cgroup支持，如cpusets那样来使用cgroup子系统进程（不确定可以不选） <br />&#160;&#160;&#160; <span style="color: #0000ff;">Example debug cgroup subsystem</span><br />&#160;&#160;&#160; cgroup子系统调试例子&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">Namespace cgroup subsystem</span><br />&#160;&#160;&#160; cgroup子系统命名空间&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">Device controller for cgroups</span><br />&#160;&#160;&#160; cgroups设备控制器&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">Cpuset support</span><br />&#160;&#160;&#160; 只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它<br /><span style="color: #ff0000;">Group CPU scheduler</span><br />CPU组调度（Group Scheduling，可以为进程赋予不同于nice level的调度优先级。尤其在企业级硬件系统上，可以进一步优化实时任务的调度。桌面用户可以不选） <br />&#160;&#160;&#160; <span style="color: #0000ff;">Group scheduling for SCHED_OTHER</span><br />&#160;&#160;&#160; SCHED_OTHER（SCHED:Process Scheduler,负责控制进程对CPU的使用.调度算法的公平,有效,硬件有关事件的及时处理）组调度&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">Group scheduling for SCHED_RR/FIFO</span><br />&#160;&#160;&#160; SCHED_RR?FIFO组调度&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">Basis for grouping tasks</span><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 基于分配的任务&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #800080;">user id</span><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 使用者id&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #800080;">Control groups</span><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 控制组 <br /><span style="color: #ff0000;">Simple CPU accounting cgroup subsystem</span><br />简单cgroup子系统cpu所花费的时间 <br /><span style="color: #ff0000;">Resource counters</span><br />资源计数器 <br /><span style="color: #ff0000;">Memory Resource Controller for Control Groups</span><br />cgroup内存资源控制器 <br /><span style="color: #ff0000;">Create deprecated sysfs files</span><br />建立过时的sysfs文件系统（虽然写着过时然而许多版本仍然有编译） <br /><span style="color: #ff0000;">Include legacy /proc//cpuset file</span><br />创建/proc//cpuset文件 <br /><span style="color: #ff0000;">Kernel-&#62;user space relay support (formerly relayfs)</span><br />在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口 <br /><span style="color: #ff0000;">Namespaces support</span><br />命名空间支持，允许服务器为不同的用户信息提供不 同的用户名空间服务 <br />&#160;&#160;&#160; <span style="color: #0000ff;">UTS namespace</span><br />&#160;&#160;&#160; UTS命名空间，不确定可以不选&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">IPC namespace</span><br />&#160;&#160;&#160; IPC命名空间，不确定可以不选&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">User namespace</span><br />&#160;&#160;&#160; User命名空间，不确定可以不选&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">PID Namespaces</span><br />&#160;&#160;&#160; PID命名空间，不确定可以不选<br /><br /><span style="color: #ff0000;">Initial RAM filesystem and RAM disk (initramfs/initrd) support</span><br />初始RAM的文件和RAM磁盘（ initramfs /initrd）支持（如果要采用initrd启动则要选择，否则可以不选） <br />&#160; &#160; <span style="color: #0000ff;">Initramfs source file(s)</span><br />&#160; &#160; initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白<br /><br /><span style="color: #ff0000;">Optimize for size (Look out for broken compilers!)</span><br />编译时优化内核尺寸(使用"-Os"而不是"-O2"参数编译),有时会产生错误的二进制代码 <br /><span style="color: #ff0000;">Configure standard kernel features (for small systems)</span><br />配置标准的内核特性(为小型系统) <br />&#160;&#160;&#160; <span style="color: #0000ff;">Enable 16-bit UID system calls</span><br />&#160;&#160;&#160; 允许对UID系统调用进行过时的16-bit包装&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">Sysctl syscall support</span><br />&#160;&#160;&#160; 不需要重启就能修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核行为的参数或变量&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">Load all symbols for debugging/kksymoops</span><br />&#160;&#160;&#160; 装载
所有的调试符号表信息,仅供调试时选择&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #800080;">Include all symbols in kallsyms</span><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 在kallsyms中包含内核知道的所有符号,内核将会增大300K&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <span style="color: #800080;">Do an extra kallsyms pass</span><br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 除非你在kallsyms中发现了bug并需要报告这个bug才打开该选项 <br />&#160;&#160;&#160;<span style="color: #0000ff;"> Support for hot-pluggable devices</span><br />&#160;&#160;&#160; 支持热插拔设备,如usb与pc卡等,Udev也需要它&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">Enable support for printk</span><br />&#160;&#160;&#160; 允许内核向终端打印字符信息,在需要诊断内核为什么不能运行时选择&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">BUG() support</span><br />&#160;&#160;&#160; 显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错误被忽略&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">Enable ELF core dumps</span><br />&#160;&#160;&#160; 内存转储支持,可以帮助调试ELF格式的程序&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">Enable PC-Speaker support</span><br />&#160;&#160;&#160; 允许禁用电脑内部声响<br /><br /><span style="color: #ff0000;">Disable heap randomization</span><br />禁用随机heap（heap堆是一个应用层的概念，即堆对CPU是不可见的，它的实现方式有多种，可以由OS实现，也可以由运行库实现,如果你愿意，你也可以在一个栈中来实现一个堆） <br /><span style="color: #ff0000;">Enable full-sized data structures for core</span><br />在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能 <br /><span style="color: #ff0000;">Enable futex support</span><br />快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序 <br /><span style="color: #ff0000;">Enable eventpoll support</span><br />支持事件轮循的系统调用 <br /><span style="color: #ff0000;">Enable signalfd() system call</span><br />启用signalfd（）事件的文件描述符系统调用 <br /><span style="color: #ff0000;">Enable timerfd() system call</span><br />启用timerfd（）事件的文件描述符系统调用 <br /><span style="color: #ff0000;">Enable eventfd() system call</span><br />启用eventfd（）事件的文件描述符系统调用 <br /><span style="color: #ff0000;">Use full shmem filesystem</span><br />完全使用shmem来代替ramfs.shmem是基于共享内存的文件系统(可能用到swap),在启用TMPFS后可以挂载为tmpfs供用户空间使用,它比简单的ramfs先进许多 <br /><span style="color: #ff0000;">Enable VM event counters for /proc/vmstat</span><br />允许在/proc/vmstat中包含虚拟内存事件记数器 <br /><span style="color: #ff0000;">Enable SLUB debugging support</span><br />支持SLUB内存分配管理器调试 <br /><span style="color: #ff0000;">Choose SLAB allocator</span><br />选择内存分配管理器（强烈推荐使用SLUB） <br />&#160;&#160;&#160; <span style="color: #0000ff;">SLAB</span><br />&#160;&#160;&#160; 各种环境通用的内存分配管理器&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">SLUB (Unqueued Allocator)</span><br />&#160;&#160;&#160; 更加优秀的内存分配管理器&#160; <br />&#160;&#160;&#160; <span style="color: #0000ff;">SLOB (Simple Allocator)</span><br />&#160;&#160;&#160; 嵌入式应用的内存分配管理器<br /><br /><span style="color: #ff0000;">Profiling support</span><br />支持系统评测（对于大多数用户来说并不是必须的） <br /><span style="color: #ff0000;">Activate markers</span><br />激活标志（不确定可以不选） <br /><span style="color: #ff0000;">OProfile system profiling</span><br />OProfile评测和性能监控工具 <br /><span style="color: #ff0000;">Kprobes</span><br />除非开发人员，否则不选 <br /><span style="color: #ff0000;">Enable /proc page monitoring</span><br />启用/proc目录检测<br />&#160;&#160;&#160; <span style="color: #0000ff;">Loadable module support</span><br />&#160;&#160;&#160; 可加载模块支持<br />&#160;&#160;&#160; <span style="color: #0000ff;">Enable loadable module support</span><br />&#160;&#160;&#160; 打开可加载模块支持,如果打开它则必须通过"make modules_install"把内核模块安装在/lib/modules/中 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Forced module loading<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 允许强制加载模块 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Module unloading<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 允许卸载已经加载的模块 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Forced module unloading<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 允许强制卸载正在使用中的模块(比较危险)<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Module versioning support<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 允许使用其他内核版本的模块(可能会出问题) <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Source checksum for all modules<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 为所有的模块校验源码,如果你不是自己编写内核模块就不需要它 <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; Automatic kernel module loading<br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 让内核通过运行modprobe来自动加载所需要的模块,比如可以自动解决模块的依赖关系<br /></span></p>]]></description>
			<content:encoded><![CDATA[<p>原文参见<a href="http://www.diybl.com/course/6_system/linux/Linuxjs/2008106/148287.html" target="_blank">这里</a></p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p><span style="font-size: 14px;">General setup<br />
常规设置</span></p>
<p><span style="color: #ff0000;"><span id="more-69401"></span>Prompt for development and/or incomplete code/drivers</span><br />
显示尚在开发中或尚未完成的代码与驱动<br />
<span style="color: #ff0000;">Local version &#8211; append to kernel release</span><br />
在内核版本后面加上自定义的版本字符串(小于64字符),可以用”uname -a”命令看到<br />
<span style="color: #ff0000;">Automatically append version information to the version string</span><br />
自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持<br />
<span style="color: #ff0000;">Support for paging of anonymous memory (swap)</span><br />
使用交换分区或者交换文件来做为虚拟内存<br />
<span style="color: #ff0000;">System V IPC</span><br />
System V进程间通信(IPC)支持,许多程序需要这个功能.必选,除非你知道自己在做什么<br />
<span style="color: #ff0000;">POSIX Message Queues</span><br />
POSIX消息队列,这是POSIX IPC中的一部分<br />
<span style="color: #ff0000;">BSD Process Accounting</span><br />
将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/内存占用等信息<br />
<span style="color: #0000ff;">BSD Process Accounting version 3 file format</span><br />
使用新的第三版文件格式,可以包含每个进程的PID和其父进程的PID,但是不兼容老版本的文件格式<br />
<span style="color: #ff0000;">Export task/process statistics through netlink</span><br />
通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的（不确定可以不选）<br />
<span style="color: #0000ff;">Enable per-task delay accounting</span><br />
在统计信息中包含进程等候系统资源(cpu,IO同步,内存交换等)所花费的时间<br />
<span style="color: #0000ff;">Enable extended accounting over taskstats</span><br />
在统计信息中包含扩展进程所花费的时间<br />
<span style="color: #800080;">Enable per-task storage I/O accounting</span><br />
在统计信息中包含I/O存储进程所花费的时间<br />
<span style="color: #ff0000;">Auditing support</span><br />
审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统调用进行审计<br />
<span style="color: #0000ff;">Enable system-call auditing support</span><br />
支持对系统调用的审计<br />
<span style="color: #ff0000;">Kernel .config support</span><br />
把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来提取这些信息<br />
<span style="color: #0000ff;">Enable access to .config through /proc/config.gz</span><br />
允许通过/proc/config.gz访问内核的配置信息<br />
<span style="color: #ff0000;">Kernel log buffer size (16 =&gt; 64KB, 17 =&gt; 128KB)</span><br />
内核信息大小<br />
<span style="color: #ff0000;">Control Group support</span><br />
cgroup支持，如cpusets那样来使用cgroup子系统进程（不确定可以不选）<br />
<span style="color: #0000ff;">Example debug cgroup subsystem</span><br />
cgroup子系统调试例子<br />
<span style="color: #0000ff;">Namespace cgroup subsystem</span><br />
cgroup子系统命名空间<br />
<span style="color: #0000ff;">Device controller for cgroups</span><br />
cgroups设备控制器<br />
<span style="color: #0000ff;">Cpuset support</span><br />
只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需要它<br />
<span style="color: #ff0000;">Group CPU scheduler</span><br />
CPU组调度（Group Scheduling，可以为进程赋予不同于nice level的调度优先级。尤其在企业级硬件系统上，可以进一步优化实时任务的调度。桌面用户可以不选）<br />
<span style="color: #0000ff;">Group scheduling for SCHED_OTHER</span><br />
SCHED_OTHER（SCHED:Process Scheduler,负责控制进程对CPU的使用.调度算法的公平,有效,硬件有关事件的及时处理）组调度<br />
<span style="color: #0000ff;">Group scheduling for SCHED_RR/FIFO</span><br />
SCHED_RR?FIFO组调度<br />
<span style="color: #0000ff;">Basis for grouping tasks</span><br />
基于分配的任务<br />
<span style="color: #800080;">user id</span><br />
使用者id<br />
<span style="color: #800080;">Control groups</span><br />
控制组<br />
<span style="color: #ff0000;">Simple CPU accounting cgroup subsystem</span><br />
简单cgroup子系统cpu所花费的时间<br />
<span style="color: #ff0000;">Resource counters</span><br />
资源计数器<br />
<span style="color: #ff0000;">Memory Resource Controller for Control Groups</span><br />
cgroup内存资源控制器<br />
<span style="color: #ff0000;">Create deprecated sysfs files</span><br />
建立过时的sysfs文件系统（虽然写着过时然而许多版本仍然有编译）<br />
<span style="color: #ff0000;">Include legacy /proc//cpuset file</span><br />
创建/proc//cpuset文件<br />
<span style="color: #ff0000;">Kernel-&gt;user space relay support (formerly relayfs)</span><br />
在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接口<br />
<span style="color: #ff0000;">Namespaces support</span><br />
命名空间支持，允许服务器为不同的用户信息提供不 同的用户名空间服务<br />
<span style="color: #0000ff;">UTS namespace</span><br />
UTS命名空间，不确定可以不选<br />
<span style="color: #0000ff;">IPC namespace</span><br />
IPC命名空间，不确定可以不选<br />
<span style="color: #0000ff;">User namespace</span><br />
User命名空间，不确定可以不选<br />
<span style="color: #0000ff;">PID Namespaces</span><br />
PID命名空间，不确定可以不选</p>
<p><span style="color: #ff0000;">Initial RAM filesystem and RAM disk (initramfs/initrd) support</span><br />
初始RAM的文件和RAM磁盘（ initramfs /initrd）支持（如果要采用initrd启动则要选择，否则可以不选）<br />
<span style="color: #0000ff;">Initramfs source file(s)</span><br />
initrd已经被initramfs取代,如果你不明白这是什么意思,请保持空白</p>
<p><span style="color: #ff0000;">Optimize for size (Look out for broken compilers!)</span><br />
编译时优化内核尺寸(使用”-Os”而不是”-O2&#8243;参数编译),有时会产生错误的二进制代码<br />
<span style="color: #ff0000;">Configure standard kernel features (for small systems)</span><br />
配置标准的内核特性(为小型系统)<br />
<span style="color: #0000ff;">Enable 16-bit UID system calls</span><br />
允许对UID系统调用进行过时的16-bit包装<br />
<span style="color: #0000ff;">Sysctl syscall support</span><br />
不需要重启就能修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核行为的参数或变量<br />
<span style="color: #0000ff;">Load all symbols for debugging/kksymoops</span><br />
装载<br />
所有的调试符号表信息,仅供调试时选择<br />
<span style="color: #800080;">Include all symbols in kallsyms</span><br />
在kallsyms中包含内核知道的所有符号,内核将会增大300K<br />
<span style="color: #800080;">Do an extra kallsyms pass</span><br />
除非你在kallsyms中发现了bug并需要报告这个bug才打开该选项<br />
<span style="color: #0000ff;"> Support for hot-pluggable devices</span><br />
支持热插拔设备,如usb与pc卡等,Udev也需要它<br />
<span style="color: #0000ff;">Enable support for printk</span><br />
允许内核向终端打印字符信息,在需要诊断内核为什么不能运行时选择<br />
<span style="color: #0000ff;">BUG() support</span><br />
显示故障和失败条件(BUG和WARN),禁用它将可能导致隐含的错误被忽略<br />
<span style="color: #0000ff;">Enable ELF core dumps</span><br />
内存转储支持,可以帮助调试ELF格式的程序<br />
<span style="color: #0000ff;">Enable PC-Speaker support</span><br />
允许禁用电脑内部声响</p>
<p><span style="color: #ff0000;">Disable heap randomization</span><br />
禁用随机heap（heap堆是一个应用层的概念，即堆对CPU是不可见的，它的实现方式有多种，可以由OS实现，也可以由运行库实现,如果你愿意，你也可以在一个栈中来实现一个堆）<br />
<span style="color: #ff0000;">Enable full-sized data structures for core</span><br />
在内核中使用全尺寸的数据结构.禁用它将使得某些内核的数据结构减小以节约内存,但是将会降低性能<br />
<span style="color: #ff0000;">Enable futex support</span><br />
快速用户空间互斥体可以使线程串行化以避免竞态条件,也提高了响应速度.禁用它将导致内核不能正确的运行基于glibc的程序<br />
<span style="color: #ff0000;">Enable eventpoll support</span><br />
支持事件轮循的系统调用<br />
<span style="color: #ff0000;">Enable signalfd() system call</span><br />
启用signalfd（）事件的文件描述符系统调用<br />
<span style="color: #ff0000;">Enable timerfd() system call</span><br />
启用timerfd（）事件的文件描述符系统调用<br />
<span style="color: #ff0000;">Enable eventfd() system call</span><br />
启用eventfd（）事件的文件描述符系统调用<br />
<span style="color: #ff0000;">Use full shmem filesystem</span><br />
完全使用shmem来代替ramfs.shmem是基于共享内存的文件系统(可能用到swap),在启用TMPFS后可以挂载为tmpfs供用户空间使用,它比简单的ramfs先进许多<br />
<span style="color: #ff0000;">Enable VM event counters for /proc/vmstat</span><br />
允许在/proc/vmstat中包含虚拟内存事件记数器<br />
<span style="color: #ff0000;">Enable SLUB debugging support</span><br />
支持SLUB内存分配管理器调试<br />
<span style="color: #ff0000;">Choose SLAB allocator</span><br />
<script src="http://www.blogbus.com/user/tiny_mce/themes/advanced/langs/zh.js?4" type="text/javascript"></script><br />
选择内存分配管理器（强烈推荐使用SLUB）<br />
<span style="color: #0000ff;">SLAB</span><br />
各种环境通用的内存分配管理器<br />
<span style="color: #0000ff;">SLUB (Unqueued Allocator)</span><br />
更加优秀的内存分配管理器<br />
<span style="color: #0000ff;">SLOB (Simple Allocator)</span><br />
嵌入式应用的内存分配管理器</p>
<p><span style="color: #ff0000;">Profiling support</span><br />
支持系统评测（对于大多数用户来说并不是必须的）<br />
<span style="color: #ff0000;">Activate markers</span><br />
激活标志（不确定可以不选）<br />
<span style="color: #ff0000;">OProfile system profiling</span><br />
OProfile评测和性能监控工具<br />
<span style="color: #ff0000;">Kprobes</span><br />
除非开发人员，否则不选<br />
<span style="color: #ff0000;">Enable /proc page monitoring</span><br />
启用/proc目录检测<br />
<span style="color: #0000ff;">Loadable module support</span><br />
可加载模块支持<br />
<span style="color: #0000ff;">Enable loadable module support</span><br />
打开可加载模块支持,如果打开它则必须通过”make modules_install”把内核模块安装在/lib/modules/中<br />
Forced module loading<br />
允许强制加载模块<br />
Module unloading<br />
允许卸载已经加载的模块<br />
Forced module unloading<br />
允许强制卸载正在使用中的模块(比较危险)<br />
Module versioning support<br />
允许使用其他内核版本的模块(可能会出问题)<br />
Source checksum for all modules<br />
为所有的模块校验源码,如果你不是自己编写内核模块就不需要它<br />
Automatic kernel module loading<br />
让内核通过运行modprobe来自动加载所需要的模块,比如可以自动解决模块的依赖关系
<div style="margin-top: 10px">
<p><strong>转载请注明：</strong> 转载自<a href="http://www.xiangmocheng.com/">不然你要我怎么样</a></t>        </br><strong>本文链接地址:</strong> <a href="http://www.xiangmocheng.com/2009/06/linux-kernel-2-6-27-configuration-1/">【转贴】Linux kernel 2.6.27内核编译配置选项（一）</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.xiangmocheng.com/2009/06/linux-kernel-2-6-27-configuration-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

