转自:http://hi.baidu.com/xtyangjie/item/b23b673bfa8ef4c7382ffa78
inux Kernel部分选项意义
Processor type and features
High Resolution Timer Support [*]
高频率时钟支持。看到网上很多资料说多数PC并不支持这个,感到不解。后来在这个页面找到了测试方法:
http://www.songho.ca/misc/timer/timer.html
基本clock()函数和HRT函数获得的精度如果不同,说明你的机器支持HRT(当然前提是测试运行在你的内核编入了这个选项的基础上)。我的测试结果是(100/500k次{整形变量后置自增, cerr空字符串输出} + 一个clock()/gettimeofday()函数调用):
clock: 0 ms / 20 ms
gettimeofday: 0.003 ms / 27.749 ms
如果那网站说的没错,这样的精确度差别应该说明我的机子是支持HRT的吧(不过个人不确定是否只要精确到微妙级都说明HRT在起作用)。
Symmetric multi-processing support [ ]
Maximum number of CPUs [4]
对 称多处理技术。需要注意SMP和CMP(芯片级多处理)的差别,前者的操作对象为多CPU;后者是前者概念的延伸,操作对象为CPU核心(可以是多个 CPU的每个核心)。目前的SMP均为芯片级别,也即既可调度CPU,又可调度内部的核心,因此提到SMP时,”CPU“的概念已经延伸到了”CPU核心 “(比如我的CPU是Core 2 E8400,因此对于Linux SMP支持来说,会发现2(核)*2(超线程)=4颗CPU)。判断CPU”核心“的方法如下:
cat /proc/cpuinfo | awk '/cpu cores/ {a=a+$4;};END{print a}'
获得的数值即可填入选项Maximum number of CPUs。
启 用这一项之后,linux内核需要“使用 proc 文件系统了解处理器的数目及类型”(见”参见“),此外的多CPU之间的协调支持应该也是 性能 per CPU 降低的原因之一(也即“线性度不好”)。貌似因为这个,help上书“单CPU单核”的童鞋不要选啊不要选。对于PC机,基本不会出现多CPU的 情况,但多核目前是很普遍了,因此要视情况而定。
参见:
http://www.ibm.com/developerworks/cn/linux/l-linux-smp/
http://hi.baidu.com/lu_youyou/blog/item/dabd4e555da255133a2935e9.html
http://hi.baidu.com/redcat8850/blog/item/504f8df47c4ce5ec7709d7b6.html
Power Management and ACPI options
Run-time PM core functionality [*]
(PM_RUNTIME)允许设备在空闲期节省资源。udisk所依赖的USE_SUSPEND依赖于此项。
Networking support
Networking options
IP: advanced router []
与 路由相关的一个选项。这里的路由相关是指使本机支持IP Forwarding等特性,一句话:你的机子成了个路由器。该选项还有些子项来控制不同的路由策略(都是学《计算机网络》的时候学过的呵呵,也可参见 《TCP/IP详解 卷一》)。我没必要让自己的系统支持路由功能,故disable。
IP: kernel level autoconfiguration []
这个选项确保内核启动时即可进行IP设置,设置方法可以通过kernel command line或bootp和rarp协议完成(参见它的子项)。一般看到bootp和rarp,我们基本就能确定,相关配置只是用于无盘工作站或需网络安装的机子上的。因此不必选择。
IrDA subsystem support --> [ ]
红外通信协议。我的机子没有,也基本不用,因此没安装。
Device Drivers
Generic Driver Options
Maintain a devtmpfs filesystem to mount at /dev [ ]
>Automount devtmpfs at /dev, after the kernel mounted the rootfs []
该 两个选项在启动时(mount rootfs之前)起作用,主要用于map一些外置设备,诸如外置硬盘、光驱、u盘等等。如果需要在启动时访问这写设备,可以考虑启用两个选项。其中第二 个选项可以保证内核自动mount devtmpfs至/dev中,这就保证我们自己不必在构建initramfs时手动挂载了。
这两个选项也可以利用mdev替代。参见:http://en.gentoo-wiki.com/wiki/Initramfs#devtmpfs
Select only drivers that don't need compile-time external firmware []
Prevent firmware to be built(NEW) [*]
Include in-kernel firmware blobs in kernel binary []
这 几个选项控制设备的firmware是否编进内核中。external的firmware直接忽略,除非编完了之后出现有设备找不到firmware的情 况。第二个可以避免每次编译时构建firmware(大多驱动都有自带firmware,因此多数不必编译,除非出现找不到firmware的情况)。最 后一个则不光是external firmware了,它对于如显示驱动的编译方法有很大影响。对于希望使用开源驱动的童鞋,如果将其选上,若显示驱动等的firmware会直接编入内 核,就不需要在配置显卡时另行制定firmware的位置;而如果不选,则需要另行编译firmware,并将其放在/lib/firmware/,并对 内核相应选项设置,以指定其位置。闭源驱动直接无视即可。
参见:http://en.gentoo-wiki.com/wiki/Radeon#Kernels_.3E.3D2.6.33
Connector - unified userspace <-> kernelspace linker []
Report process events to userspace []
字 面意思理解是一个链接用户态和内核态的统一接口。子选项用于向用户态的进程返回进程信息,并发送诸如fork,exec,uid/gid/suid等id 变化信息以及退出状态等功能。目前只知道这是一个接口,而且有部分应用要求必须启用该选项。比如有个sourceforge项目叫ELSA,此外开源驱动 framebuffer也依赖于此项(但不依赖于其子选项)。
Block Devices
Loopback device support []
这 个选项的意思是说,可以将一个文件挂成一个文件系统。如果要烧光盘片的,那么您很有可能在把一个文件烧进去之前,看看这个文件是否符合IS09660的文 件系统的内容,是否符合您的需求。而且,可以对这个文件系统加以保护。不过,如果您 想做到这点的话,您必须有最新的mount程序。对于喜欢尝试新型文件系统的童鞋,可以把这个选项编成模块或编入内核,从而通过创建制定文件系统格式的文 件而方便地对该文件系统进行测试学习。
参见:http://www.zmemb.com/info/2/2010/0811/2374.html(这个页面有各种弹出广告~~)
SCSI Device support
SCSI disk support [*]
Asynchronous SCSI scanning []
SCSI Transports --->
OSD-Initiator library (NEW) <>
如 果/boot在SATA硬盘上,第一个自然要直接编入内核;第二个则貌似可以提高数据读取(磁盘扫描)的并行性,help上说是可以显著提高(启动时的) 性能的,但同时也提到该选项用于“SCSI Subsystem”,虽然SATA仿真为SCSI,但我也不知道是否能连SCSI的“异步扫描”的能耐也仿真上,结果还是暂时没选,日后再提;第三个据说不必关心,倒不是不需要,而是内核会把需要的选项自动勾选。
第 四个涉及OSD(对象存储设备/对象存储系统,个人设备上不常用,但-据“参见”的链接说-非常适合于分布式文件系统)的选项,是一个OSD启动器。一个 OSD FS(如exofs) 通过一个本地 OSD 启动器与对象存储系统通信。OSD 启动器实现 OSD标准 SCSI 命令集。基本上这项是不必选择的,但是由于目前Linux内核已经可以支持EXOFS,而该文件系统依赖于此启动器,因此考虑尝试EXOFS的票友们还是 要考虑将其选上。
参见:http://www.ibm.com/developerworks/cn/linux/l-nilfs-exofs/#exofs
I2O device support [ ]
IO处理器支持。平民PC上是木有滴,不要迷信于自己的机器了,悲剧地disable吧!我反正没选(人help上都说if unsure, say N了)。
Network device support
PHY device support and infrastructure --> []
数据链路层芯片简称为MAC控制器,物理层芯片简称之为PHY;两者通过MII(Media Independence Interface)通信。通常的网卡把MAC和PHY的功能做到了一颗芯片中,但也有一些仅含PHY的”软网卡“。我是没有这种东东。
具体知识参见:有关MAC、PHY和MII
Ethernet (1000 Mbit) --> [*] 现在基本都是千兆以太网卡了
>New SysKonnet GigaEthernet support []
>SysKonnect Yukon2 support [M] 这里一定要选择正确,不然找不到网卡的
此 项的任何选项仅视自己的硬件或网络环境配置即可。如大家都要选择自己的网卡型号(wired or wireless);拨号上网的童鞋要选择PPP;在虚拟机里安装linux的童鞋要启用VMXNET3等等……如上是我的选择:我只有有线网卡,且不必 拨号,因此只选择自己的网卡型号就好了。
我的网卡型号是Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (rev 14)。
至于为神马选择SysKonnect Yukon2 support而不是New SysKonnet GigaEthernet support,我也木有任何头绪。(事实上,前者的help里描述的支持硬件型号有个8055,更接近我的型号。可能是这个原因吧)
结果我这台08年入手、装有”先进“千兆板载网卡(MAC+PHY, Marvell 88E8056)、自己个儿不用拨号(直联or用路由器拨号)、只用ethernet协议的机子,最终只在这一节里配了个网卡支持~~
Character Devices
参见:http://hi.baidu.com/jolinzhe/blog/item/a7ab70353eb19cbed1a2d349.html
Watchdog Cards
能 让系统在出现致命故障后自动重启,如果没有硬件Watchdog,建议使用Hangcheck timer(参见Character Devices)而不是软件Watchdog。Hangcheck timer通常可以比Watchdog更好地解决可用性和可靠性问题。
Graphics support
Console display driver support -->
>/dev/agpgart (AGP Support) [M]
>>Your_AGP_Chipset_Here [M]
>VGA text console [*]
>>Enable Scrollback Buffer in System RAM [*]
>>>Scrollback Buffer Size (in KB) (64)
我 目前用的是闭源驱动,因此此节中的绝大部分都可以直接disable掉。唯一需要开启的是如上几项。第一项保证我们进入控制台模式(文本界面,也即尚未开 启x server时的控制台)时至少可以显示文本界面,不选这一项的话,对于默认进入纯文本界面的童鞋,会出现一个黑乎乎、只有个可怜的小光标的屏幕,杯具 了~(如果已经设置了默认启动xdm/gdm/kdm以直接进入X,可能也就不需要这个了,不过我也不确定。)
第二项是子项目,启用缓存以回滚(启用了,但没试过),第三项顾名思义。
这一部分可以参见:http://wiki.cchtml.com/index.php/Gentoo_Installation_Guide
*******辩解下,是在不是鄙人革命不彻底,开源驱动毕竟还是有点太凑合。我还是随时翘首盼望的。********
Sound Card support
Advanced Linux Sound Architecture -->
>Generic sound devices--> []
>PCI sound devices --> [*]
>>Intel HD Audio --> [M]
>>>Build Analog Device HD-audio codec support [*]
>>>Enable generic HD-audio codec parser[*]
>>>Aggressive power-saving on HD-audio [*]
>USB sound devices --> []
>ALSA for SoC audio support --> <>
声 卡设置比较简单,但也有一点点需要注意的地方。这一节下面东西不多,最后一项OSS是过时的声音系统;第一项(Preclaim OSS device numbers)貌似用于硬件检测and so forth~感觉用不上,去掉了发现从头到脚也没啥问题;第二项就是ALSA了,它下面的几项很明确,Generic sound devices用于无法指定类型设备的通用驱动;PCI、USB分别用于对应类型的声卡,可视实际情况而定;ALSA for SoC貌似主要用于移动设备,用以节电,没选。
进入PCI sound devices之后,可以选择自己声卡对应的型号。对于Intel HD Audio系列(我的:)),可以将Intel HD Audio设为编成模块,并选择如上三个子项目。其中第一个为编解码器;第二个貌似是编码转换器,不清楚,但一定要选上,不然声卡不吱声的;第三个貌似是个“积极/主动的”节电特性,我给编上了,尚未试用。
ALSA下面的其它选项都用默认了。
声卡型号查看:lspci | grep -i audio
USB support
Support for Host-side USB>USB runtime power management (autosuspend) and wakeup [*]
>>OTG support[*]
两个都是是udisk所依赖的选项之一(另一个是CONFIG_IDE=n)。这个选项又依赖于PM_RUNTIME(参见电源管理一节)。
其它参见:http://hi.baidu.com/sophie198384/blog/item/a7d41afd3d32fd1309244d0d.html/cmtid/5732dccf52c18833f8dc6140
USB控制器型号查看:lspci | grep -i usb
Real Time Clock ?
Firmware Drivers
Export DMI identification via sysfs to userspace [*]
将BIOS里的DMI区信息导出到用户空间,部分系统管理工具可能会用到
后续:http://blog.chinaunix.net/u2/69136/showart_1006713.html
不错的参考:http://lamp.linux.gov.cn/Linux/kernel_options.html