第一部分
01、Code maturity level options ---> 代码成熟等级选项
01.01、 [ ] Prompt for development and/or incomplete code/drivers 默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.你应该选择它,因为有许多设备可能必需选择这个选项才能进行配置,实际 上它是安全的。
01.02、[ ] Select only drivers expected to compile cleanly 选择这个选项你将不会看到一些已知的存在问题的驱动程序选项,默认的情况下也是选择的。如果你有设备没有找到驱动选项,你可以将这一项去掉,或许就可以找 到相关驱动了,不过它可能是有BUG的。
第二部分
02、General setup ---> 常规安装选项
02.01、() Local version - append to kernel release
02.02、
Support for paging of anonymous memory (swap) 这个选项将使你的内核支持虚拟内存,也就是让你的计算机好象拥有比实际内存更多 多的内存空间用来执行很大的程序。默认是选择的。
02.03、
System V IPC (IPC:Inter Process Communication)是组系统调用及函数库,它能让程序彼此间同步进行交换信息。某些程序以及DOS模拟环境都需要它。为进程提供通信机制,这将 使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。
02.04、
BSD Process Accounting 一般用户所执行的程序,可通知内核将程序统计数据写成文件,详细记录相关信息。
02.05、[ ] BSD Process Accounting version 3 file format
02.06、
Sysctl support 此项功能可在不重新编译内核或是重新开机的前提下,动态变更某些特定的内核参数和变量,赋予内核较大的弹性。除非内存太少或是编译出来的内核是给安装、救 援磁盘所使用,否则这个选项一定要选上。这将提供一个接口让你可以动态的更改一些核心参数与变量,而不需要重新启动系统。打开这个选项将会增加内核的体积 至少8KB。如果你的内核仅用制作安装与恢复系统系统盘那么可以不选,以减少对内存的占用。
02.07、
Auditing support 审记支持,用于和内核的某些子模块同时工作,例如SELinux。只有选择此项及它的子项,才能调用有关审记的系统调用。
02.08、
Enable system-call auditing support
--- Support for hot-pluggable devices 是否支持热插拔的选项,肯定要选上。不然USB、PCMCIA等这些设备都用不了。
02.09、
Kernel Userspace Events内核中分为系统区和用户区,这里系统区和用户区进行通讯的一种方式,选上。
02.10、[ ] Kernel .config support 这将会把内核的配置信息与相关的文档说明编译进内核中,以后可以使用一些工具来提取它用来重新构建内核,一般不用选它。
02.11、[ ] Configure standard kernel features (for small systems) ---> 这是为了编译某些特殊用途的内核使用的,例如引导盘系统。通常你可以不选择这一选项,你也不用对它下面的子项操心了。
第三部分
03、Loadable module support ---> 可引导模块支持 建议作为模块加入内核
03.01、
Enable loadable module support 这个选项可以让你的内核支持模块,模块是什么呢?模块是一小段代码,编译后可在系统内核运行时动态的加入内核,从而为内核增加一些特性或是对某种硬件进 行支持。一般一些不常用到的驱动或特性可以编译为模块以减少内核的体积。在运行时可以使用modprobe命令来加载它到内核中去(在不需要时还可以移除 它)。一些特性是否编译为模块的原则是,不常使用的,特别是在系统启动时不需要的驱动可以将其编译为模块,如果是一些在系统启动时就要用到的驱动比如说文 件系统,系统总线的支持就不要编为模块了,否在无法启动系统。
03.02、
Module unloading 这个选项可以让你卸载不再使用的模块,如果不选的话你将不能卸载任何模块(有些模块一旦加载就不能卸载,不管是否选择了这个选项)。不选择这个选项会让你的内核体积减小一点。
03.03、 [ ] Source checksum for all modules这个功能是为了防止更改了内核模块的代码但忘记更改版本号而造成版本冲突。我估计现在没有哪家公司在开发中还没使用版本控制工具,所以不需 要这项了。如果你不是自己写内核模块,那就更不需要这一选项了。
03.04、
Automatic kernel module loading 一般情况下,如果我们的内核在某些任务中要使用一些被编译为模块的驱动或特性时,我们要先使用modprobe命令来加载它,内核才能使用。不过,如果你 选择了这个选项,在内核需要一些模块时它可以自动调用modprobe命令来加载需要的模块,这是个很棒的特性,当然要选Y喽。
第四部分
04、Processor type and features ---> 处理器类型
04.01、 Subarchitecture Type (PC-compatible) ---> 这选项的主要的目的,是使Linux可以支持多种PC标准,一般我们使用的PC机是遵循所谓IBM兼容结构(pc/at)。这个选项可以让你选择一些其它 架构。我们一般选择PC-compatible就可以了。
04.01.01、(X) PC-compatible 就在这里选PC模式。 04.01.02、( ) AMD Elan 04.01.03、( ) Voyager (NCR) 04.01.04、( ) NUMAQ (IBM/Sequent) 04.01.05、( ) SGI 320/540 (Visual Workstation) 04.02、Processor family (Pentium-Pro) ---> CPU选项 这里针对自己的CPU型号,选取相应的选项。 04.02.01、( ) 386 04.02.02、( ) 486 04.02.03、( ) 586/K5/5x86/6x86/6x86MX 04.02.04、( ) Pentium-Classic 04.02.05、( ) Pentium-MMX 04.02.06、( ) Pentium-Pro 04.02.07、( ) Pentium-II/Celeron(pre-Coppermine) 04.02.07、( ) Pentium-III/Celeron(Coppermine)/Pentium-III Xeon 04.02.08、( ) Pentium M 04.02.09、( ) Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon 04.02.10、( ) K6/K6-II/K6-III 04.02.11、(x) Athlon/Duron/K7 我使用的CPU是Athlon XP2000+,所以选上这项。 04.02.12、( ) Opteron/Athlon64/Hammer/K8 04.02.13、( ) Crusoe 04.02.14、( ) Efficeon 04.02.15、( ) Winchip-C6 04.02.16、( ) Winchip-2 04.02.17、( ) Winchip-2A/Winchip-3 04.02.18、( ) GeodeGX1 04.02.19、( ) CyrixIII/VIA-C3 04.02.20、( ) VIA C3-2 (Nehemiah) |
04.03、[ ] Generic x86 support 这个选项提供了对X86系列CPU最大的兼容性,用来支持一些很少见的x86体系的CPU,它可能会降低一些系统性能。如果你的CPU能够在上面的列表中找到,就里就不用选了。
04.04、
HPET Timer Support 这也是一个新的特性,HPET是intel制定的新的用以代替传统的8254(PIT)中断定时器与RTC的定时器,全称叫作高精度事件定时器。如果你有 一台较新的机器就选它吧,一般它是一个安全的选项,即使你的硬件不支持HPET也不会造成问题,因为它会自动用8254替换。
04.05、[ ] Provide RTC interrupt There is no help available for this kernel option.
04.06、[ ] Symmetric multi-processing support 支持多处理器选项。如果只使用单CPU,那么得关闭。
04.07、
Preemptible Kernel 这可是个新特性,几乎所有介绍2.6的文章都会提到,这就是可抢先式内核。也就是说被一些优先级很高的程序可以先与一些低优先级的程序执行,即使这些程序 是在核心态下执行(这实际上仍然不是真正的抢先式内核)。从而减少内核潜伏期,提高系统的响应。当然在一些特殊的点的内核是不可抢先的,比如内核中的调度 程序自身在执行时就是不可被抢先的。这个特性可以提高桌面系统、实时系统的性能,所以还是选上吧。
04.08、[ ] Local APIC support on uniprocessors
04.09、
Machine Check Exception 如果系统出现一些问题比如CPU过热,内核将会在屏幕上打印相关信息来提醒你。这个功能是需要硬件支持的。你可以查看/proc/cpuinfo看看是否 有mce标志,有的话就选吧。如果你十分十分的不幸,选了它之后出现问题,可以在启动时加nomce参数来关闭它。
04.10、< *> Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4 打开这个选项将会检查你机器上可能存在的问题,如果有一个非致命错误出现将会自动的修复并且记录,这可以帮助你查出程序出现问题的原因,是一个不错的选 项。当然它只能用在AMD Athlon/Duron / Intel Pentium 4这类CPU上。如果你正好在用它们中的一个你就选吧。
04.11、 < > Toshiba Laptop support 东芝笔记本支 持。这个选项是针对Toshiba笔记本的,可以用来访问Toshiba的系统管理模式,也就是可以直接设置BIOS。不过要注意它只在 Toshiba自己的 BIOS中起作用。假如你有一台Toshiba笔记本,可惜它的BIOS是Phoenix的,那这个选项仍然是无用的。台式机就关闭!
04.12、< > Dell laptop support DELL笔记本支持。功能如上面,台式机就关闭!
04.13、[ ] Enable X86 board specific fixups for reboot
04.14、 < > /dev/cpu/microcode - Intel IA32 CPU microcode support 是否支持Intel IA32架构的CPU(Xeon)?这个选项将让你可以更新Intel IA32系列处理器的微代码,当然你还必须在文件系统选项中选择devfs才能正常的使用它。如果你把它译为模块你还需要在modprobe.conf中 加上这一行alias char-major-10-184 microcode 内核本身并不带有微代码的二进制文件,你可以到这个网址去得到新的信息http://www.urbanmyth.org/microcode/
04.15、 /dev/cpu/*/msr - Model-specific reGISter support 是否打开Pentium CPU特殊功能寄存器的功能?这个选项桌面用户一般用不到,它主要用在Intel的嵌入式CPU中的,这个寄存器的作用也依赖与不同的CPU类型而有所不 同,一般可以用来改变一些CPU原有物理结构的用途,但不同的CPU用途差别也很大。
04.16、 /dev/cpu/*/cpuid - CPU information support 是否打开记录Petium CPU相关信息功能?这会在/dev/cpu中建立一系列的设备文件,用以让过程去访问指定的CPU。一般不用选。
04.17、Firmware Drivers --->
04.18、High Memory Support (4GB) ---> 高容量内存支持
04.18.01、(x) off 我用512M内存,选用这项。
04.18.02、( ) 4GB
04.18.03、( ) 64GB
04.19、
Allocate 3rd-level pagetables from highmem除非有几G的内存,否则选择这个是没有意义的。
04.20、[ ] Math emulation Linux核心模拟数学浮点运算器,协处理器是在386时代的宠儿,现在早已下岗。
04.21、
MTRR (Memory Type Range Register) support 在PCI或者AGP总线众进行更快速的通讯。由于现在所有系统都将它们的显卡接在PCI或AGP总线上,你通常需要选择“MTRR”。无论如何,打开这个 选项通常都是安全的——即使你的机器没有使用 PCI或AGP总线的显卡。
04.22、[ ] Boot from EFI support (EXPERIMENTAL) 由于我使用的是GRUB,所以选上这个也没什么用,如果你打算使用EFI的功能,你可以到http://elilo.sourceforge.net看看。
04.23、
Enable seccomp to safely compute untrusted bytecode
第五部分
05、Power management options (ACPI, APM) ---> 电源管理选项
05.01、
Power Management support
05.02、[ ] Power Management Debug Support 电源管理的调试信息支持,如果不是要调试内核有关电源管理部份,请不要选择这项。
05.03、 ACPI (Advanced Configuration and Power Interface) Support ---> Some kernel features may be built directly into the kernel. Some may be made into loadable runtime modules. Some features may be completely removed altogether. There are also certain kernel parameters which are not really features, but must be entered in as decimal or hexadecimal numbers or possibly text. Menu items beginning with , <M> or [ ] represent features configured to be built in, modularized or removed respectively. Pointed brackets <> represent module capable features. To change any of these features, highlight it with the cursor keys and press <Y> to build it in, <M> to make it a module or <N> to removed it. You may also press the <Space Bar> to cycle through the available options (ie. Y->N->M->Y). |
05.03.01、
ACPI Support 高级电源接口配置支持,如果BIOS支持,建议选上这项。
05.03.02、< > AC Adapter 电源适配器
05.03.03、< > Battery 电池
05.03.04、 Button
05.03.05、<*> Fan 风扇
05.03.06、<*> Processor 处理器
05.03.07、<*> Thermal Zone 据说大部份的台式机和笔记本都支持,不选还可能把处理器烧掉。如果你不会让模块正常工作,还是把它编进内核吧,怪吓人的。
05.03.08、< > ASUS/Medion Laptop Extras 华硕笔记本扩展支持,建议关闭
05.03.09、< > IBM ThinkPad Laptop Extras IBM笔记本扩展支持,建议关闭
05.03.10、< > Toshiba Laptop Extras Toshiba笔记本扩展支持,建议关闭
(2001) Disable ACPI for systems before Jan 1st this year
05.04、[ ] Debug Statements详细的ACPI调试信息,不搞开发就别选。
05.05、APM (Advanced Power Management) BIOS Support --->
05.05.01、<*> APM (Advanced Power Management) BIOS support
05.05.02、[ ] Ignore USER SUSPEND 忽略用户暂停请求。建议关闭
05.05.03、[ ] Enable PM at boot time 开机时节能,这项就不用了,建议关闭。
05.05.04、
Make CPU Idle calls when idle CPU空闲时节能
05.05.05、[ ] Enable console blanking using APM 空闲时console转成空白,建议关闭。
05.05.06、[ ] RTC stores time in GMT 按Unix的标准,硬件的时钟应该设为格林威治时间。如果要硬件时钟设成了本地时间,这个选项就不用了。
05.05.07、[ ] Allow interrupts during APM BIOS calls 允许APM的BIOS调用时中断。多数的机器不需要这项,Thinkpad的一些新机器需要这项。如果休眠时挂机(包括睡下去就醒不来),再把这项选上。
05.05.08、 [ ] Use real mode APM BIOS call to power off 建议最好选上此项,保证软件关机。如果你有兴趣可以试试你的机器不选这项能不能正常的软件关机(多数机器不能)。补充一点,如果既选择了ACPI又选择了 APM,先加载的将被使用。
05.06、CPU Frequency scaling ---> 这一选项允许改变CPU的主频,使CPU在低负荷或使用电池时降低主频,达到省电的目的。
05.06.01、
CPU Frequency scaling
05.06.02、
Enable CPUfreq debugging 是否允许调试CPU改变主频的功能,如果要调试,还需要在启动时加上参数。cpufreq.debug= 1:变频技术的内核调试 2:变频技术的驱动调试 3:变频技术的调节器调试
05.06.03、 CPU frequency translation statistics
05.06.04、
CPU frequency translation statistics details
05.06.05、Default CPUFreq governor (performance) ---> 默认的主频调节,圆括号内的是你选择的结果,这里表示以性能为主。
05.06.06.01、(X) performance
05.06.06.02、() userspace
05.06.07、<*> 'performance' governor
05.06.08、 'powersave' governor 最大限度的节约电能调节器。
--- 'userspace' governor for userspace frequency scaling 用户自定义调节器。
05.06.09、 'ondemand' cpufreq policy governor 自动调节主频。
05.06.10、 'conservative' cpufreq governor
--- CPUFreq processor drivers
05.06.11、 ACPI Processor P-States driver 报告处理器的状态。
05.06.12、< > AMD Mobile K6-2/K6-3 PowerNow! AMD移动版K6处理器的变频驱动。
05.06.13、< > AMD Mobile Athlon/Duron PowerNow! AMD移动版毒龙、雷乌的变频驱动。
05.06.14、< > Cyrix MediaGX/NatSemi Geode Suspend Modulation Cyrix处理器的变频驱动。
05.06.15、< > Intel Enhanced SpeedStep Intel的变频技术支持。
05.06.16、
Use ACPI tables to decode valid frequency/voltage pairs 使用BIOS中的主频/电压参数。
05.06.17、[ ] Built-in tables for Banias CPUs 迅驰一代的主频/电压参数。
05.06.18、< > Intel Speedstep on ICH-M chipsets (ioport interface) Intel ICH-M南桥芯片组的支持。
05.06.19、< > Intel Pentium 4 clock modulation P4处理器的时钟模块支持。
05.06.20、< > Transmeta LongRun Transmeta处理器的支持。
05.06.21、< > VIA Cyrix III Longhaul VIA Cyrix处理器的支持。
--- shared options
05.06.22、[ ] /proc/acpi/processor/../performance interface (deprecated) 从/proc/acpi/processor/../performance获得CPU的变频信息。
05.06.23、[ ] Relaxed speedstep capability checks 不全面检测Intel Speedstep,有的系统虽然支持Speedstep技术,却无法通过全面的检测。
第六部分
06、Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> 总线选项
06.01、
PCI support
06.02、PCI Access mode (Any) ---> PCI外围设备配置,强列建议选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备。
06.02.01、( )BIOS
06.02.02、( )MMConfig
06.02.03、( )Direct
06.02.04、(X)Any 选用Any,系统会先尝试直接设置,倘若失败便会退回启用BIOS设置。
06.03、[ ] PCI Express support PCIE支持
06.04、
Legacy /proc/pci interface 是否使用/proc/pci目录下的信息文件来描述PCI设备的信息。现在的系统多数都使用lspci工具来得到这样的信息。
06.05、
PCI device name database 如果你不打算使用lspci工具,就把这项和上面的一项选上。lspci和hotplug都不需要内核中的设备信息库了。
06.06、[ ] PCI Debugging
06.07、 [ ] ISA support ISA总路,现已淘汰,建议关闭。是否使用工业总线。如果你没有老式的ISA设备,可以不选这项。现在基本上都没有ISA的设备了。不过需要注意的是如果 你做嵌入式系统的开发,一些PC104的总线可能会桥接到EISA或者是。VESA总线上。
06.08、[ ] EISA support 扩展ISA总路,早期计算机上的总路,现已淘汰,建议关闭。
06.09、[ ] MCA support IBM PS/2上的总线,现已淘汰,建议关闭。微通道总线。IBM的台式机和笔记本上可能会有这种总线,包括它的p系列、e系列、z系列机器上都用到了这种总线。
06.10、< > NatSemi SCx200 support 这个我不知道是什么东西,看帮助是松下的一种半导体处理器的驱动。
06.11、PCCARD (PCMCIA/CardBus) support ---> 一般只有笔记本电脑上才会有PCMCIA插槽,如果你是台式机的话,可以不选这一项,然后跳过这一部份。
06.11.01、 PCCard (PCMCIA/CardBus) support
06.11.02、[ ] Enable PCCARD debugging 调试PCMCIA设备,除非你是设备驱动的开发人员,否则关闭。
06.11.03、 16-bit PCMCIA support 16位的PCMCIA总线支持。
06.11.04、
32-bit CardBus support 32位的PCMCIA总线支持,通常也叫PCMCIA II总线。
--- PC-card bridges 下面的是不同产家的PCMCIA芯片的驱动支持,如果你知道你的本本用的是什么芯片组的话,可以只选它而不选其它的。要是你不知道,可以全部选上,然后用modprobe一种一种的试。
06.11.04.01、 CardBus yenta-compatible bridge support
06.11.04.02、 Cirrus PD6729 compatible bridge support
06.11.04.03、 i82092 compatible bridge support
06.11.04.04、 Databook TCIC host bridge support
06.12、PCI Hotplug Support ---> PCI热插拨支持。一般来讲只有服务器上会有热插拔的设备,如果你使用的是台式机,你可以不选择此项并跳过这一部份。其实我也没有选这一项,只是为了讲解的方便而选上的。
06.12.01、Fake PCI Hotplug driver (NEW),选上这一选项能让你的机器模拟PCI热插拔。注意,它并不是真正意义上的热插拔,决对不允许带电插拔设备除非你的主板上集成了PCI热插拔芯片并且你的PCI设备本身支持热插拔。
06.12.02、Compaq PCI Hotplug driver (NEW),Compaq服务器上的热插拔芯片组的支持。
06.12.03、IBM PCI Hotplug driver (NEW),IBM服务器上的热插拔芯片组的支持。
06.12.04、ACPI PCI Hotplug driver (NEW),PCI热插拔设备是否支持ACPI电源管理(一般来说都是支持的)。
06.12.05、CompactPCI Hotplug driver (NEW),精简PCI总线的热插拔设备的支持,通常在嵌入式系统中会用到精简PCI总线。
06.12.06、PCI Express Hotplug driver (NEW),PCI加速总线的热插拔设备的支持。现在PCI Express总线的显卡挺火的。
06.12.07、SHPC PCI Hotplug driver (NEW),SHPC热插拔控制芯片的支持。
第七部分
07、Executable file formats --->
07.01、
Kernel support for ELF binaries ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台。
07.02、< > Kernel support for a.out and ECOFF binaries 这是早期Unix系统的可执行文件格式,目前已经被ELF格式取代。
07.03、< > Kernel support for MISC binaries此选项允许插入二进制的封装层到内核中,当使用Java、.net、Python、Lisp等语言编写的程序时非常有用。
第八部分
08.06、ATA/ATAPI/MFM/RLL support ---> ATA设备选项
08.06.01、<*> ATA/ATAPI/MFM/RLL support 08.06.02、<*> Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support 08.06.03、[ ] Support for SATA (deprecated; conflicts with libata SATA driver) 08.06.04、[ ] Use old disk-only driver on primary interface 08.06.05、<*> Include IDE/ATA-2 DISK support 08.06.06、 Use multi-mode by default 08.06.07、<*> Include IDE/ATAPI CDROM support 08.06.08、< > Include IDE/ATAPI FLOPPY support 偶青铜镜没有软驱,这项就去掉了。 08.06.09、< > SCSI emulation support 08.06.10、[ ] IDE Taskfile Access --- IDE chipset support/bugfixes 08.06.11、<*> generic/default IDE chipset support 08.06.12、[ ] CMD640 chipset bugfix/support 08.06.13、[ ] CMD640 enhanced support 08.06.14、[ ] PNP EIDE support 08.06.15、[ ] PCI IDE chipset support 08.06.16、 Sharing PCI IDE interrupts support 08.06.17、[ ] Boot off-board chipsets first support 08.06.18、<*> Generic PCI IDE Chipset Support 08.06.19、< > RZ1000 chipset bugfix/support 08.06.20、 Generic PCI bus-master DMA support 08.06.21、[ ] Force enable legacy 2.0.X HOSTS to use DMA 08.06.22、 Use PCI DMA by default when available 08.06.23、[ ] Enable DMA only for disks 08.06.24、< > AEC62XX chipset support 从 08.06.24 到 08.06.43 ,偶青铜镜全部咔嚓了。 08.06.25、< > ALI M15x3 chipset support 08.06.26、< > AMD and nVidia IDE support 08.06.27、< > ATI IXP chipset IDE support 08.06.28、< > CMD64{3|6|8|9} chipset support 08.06.29、< > Compaq Triflex IDE support 08.06.30、< > CY82C693 chipset support 08.06.31、< > Cyrix/National Semiconductor CS5530 MediaGX chipset support 08.06.32、< > HPT34X chipset support 08.06.33、< > HPT36X/37X chipset support 08.06.34、< > National SCx200 chipset support 08.06.35、< > Intel PIIXn chipsets support 08.06.36、< > NS87415 chipset support 08.06.37、< > PROMISE PDC202{46|62|65|67} support 08.06.38、< > PROMISE PDC202{68|69|70|71|75|76|77} support 08.06.39、< > ServerWorks OSB4/CSB5/CSB6 chipsets support 08.06.40、< > Silicon Image chipset support 08.06.41、< > SiS5513 chipset support 08.06.42、< > SLC90E66 chipset support 08.06.43、< > Tekram TRM290 chipset support 08.06.44、<*> VIA82CXXX chipset support 偶青铜镜用的是威盛KT880+VT8237芯片组。 08.06.45、[ ] IGNORE word93 Validation BITS |
08.07、SCSI device support --->
08.07.01、<*> SCSI device support SATA硬盘这里要选上!
08.07.02、
legacy /proc/scsi/ support
08.07.03、 <*> SCSI disk support 偶青铜镜开始编译内核时,没把这选上,结果SATA硬盘的设备号由/dev/sda变成/dev/hde,还唱着沙哑的歌,跟偶闹心。偶急啊。把这项选 上,设备号变成/dev/sda,硬盘才正常工作。
08.07.04、< > SCSI tape support SISC磁带机支持,服务器备份的工具。从 08.07.04 至 08.07.12.10 ,偶整不太明白,但觉得这些选项是和服务器相关的,跟偶台式机没搭界。因此,咔嚓了没商量。
08.07.05、< > SCSI OnStream SC-x0 tape support 08.07.06、< > SCSI CDROM support 08.07.07、< > SCSI generic support --- Some SCSI devices (e.g. CD jukebox) support multiple LUNs 08.07.08、[ ] Probe all LUNs on each SCSI device 08.07.09、[ ] Verbose SCSI error reporting (kernel size +=12K) 08.07.10、[ ] SCSI logging facility 08.07.11、SCSI Transport Attributes ---> 08.07.11.01、<M> Parallel SCSI (SPI) Transport Attributes 08.07.11.02、<M> FiberChannel Transport Attributes 08.07.11.03、 <M> iSCSI Transport Attributes 08.07.12、SCSI low-level drivers ---> 08.07.12.01、< > Adaptec I2O RAID support 08.07.12.02、[ ] LSI Logic New Generation RAID Device Drivers 08.07.12.03、< > LSI Logic Legacy MegaRAID Driver (NEW) 08.07.12.04、 Serial ATA (SATA) support 08.07.12.05、< > AHCI SATA support 08.07.12.06、< > ServerWorks Frodo / Apple K2 SATA support 08.07.12.07、< > Intel PIIX/ICH SATA support 08.07.12.08、< > Promise SATA TX2/TX4 support 08.07.12.09、< > Pacific Digital SATA QStor support 08.07.12.10、< > VIA SATA support 这个选项,偶青铜镜因为用VIA KT880+VT8237芯片组, 就把它作为驱动编译加入内核,make以后提示没找到 VIA SATA 。出错了。把它做为模块加 载入内核,编译正常。 08.07.12.10、< > VITESSE VSC-7174 SATA support 08.07.12.10、< > BusLogic SCSI support 08.07.12.10、[ ] Omit FlashPoint support 08.07.12.10、< > DMX3191D SCSI support 08.07.12.10、< > EATA ISA/EISA/PCI (DPT and generic EATA/DMA-compliant boards) support 08.08、Multi-device support (RAID and LVM) ---> 08.08.01、[ ] Multiple devices driver support (RAID and LVM) 普通Linux用户通常 不需要RAID(廉价冗余磁盘阵列)或者LVM支持。以下至08.08.10,我是全部去掉的. 08.08.02、< > RAID support 08.08.03、< > Linear (append) mode 08.08.04、< > RAID-0 (striping) mode 08.08.05、< > RAID-1 (mirroring) mode 08.08.06、< > RAID-4/RAID-5 mode 08.08.07、< > RAID-6 mode 08.08.08、< > Multipath I/O support 08.08.09、< > Faulty test module for MD 08.08.10、< > Device mapper support 08.09、Fusion MPT device support ---> 08.09.01、<M> Fusion MPT (base + ScsiHost) drivers (40) Maximum number of scatter gather entries 08.09.02、<M> Fusion MPT misc device (ioctl) driver 08.09.03、<M> Fusion MPT LAN driver 08.10、IEEE 1394 (FireWire) support ---> 笔记本上会用到,台式机特别是兼容机一般没有! 偶的兼容机,当然没有这玩意,支掉没商量。以下至08.10.14,我是全部去掉的. 08.10.01、< > IEEE 1394 (FireWire) support --- Subsystem Options 08.10.02、[ ] Excessive debugging output 08.10.03、[ ] OUI Database built-in 08.10.04、[ ] Build in extra config rom entries for certain functionality 08.10.05、[ ] IP-1394 Entry --- Device Drivers 08.10.06、< > Texas Instruments PCILynx support 08.10.07、< > OHCI-1394 support --- Protocol Drivers 08.10.08、< > OHCI-1394 Video support 08.10.09、< > SBP-2 support (Harddisks etc.) 08.10.10、[ ] Enable Phys DMA support for SBP2 (Debug) 08.10.11、< > OHCI-DV I/O support 08.10.12、< > Raw IEEE1394 I/O support 08.10.13、< > IEC61883-1 Plug support 08.10.14、< > IEC61883-6 (Audio transmission) support 08.11、I2O device support ---> 08.11.01、<M> I2O support 08.11.02、<M> I2O Configuration support 08.11.03、<M> I2O Block OSM 08.11.04、<M> I2O SCSI OSM 08.11.05、<M> I2O /proc support |
08.12、Networking support 网络支持。这个选项里面的小项,请谨慎谨慎
再谨慎!否则,用上新内核后,却上不了网,够你郁闷三天天三夜。
下面的内容见详细介绍 Linux中内核配置选项(2)。
Linux的最大的好处之一就是它的源码公开。同时,公开的核心源码也吸引着无数的电脑爱好者和程序员;他们把解读和分析Linux的核心源码作为自己的最大兴趣,把修改Linux源码和改造Linux系统作为自己对计算机技术追求的最大目标。
Linux内核源码是很具吸引力的,特别是当你弄懂了一个分析了好久都没搞懂的问题;或者是 被你修改过了的内核,顺利通过编译,一切运行正常的时候。那种成就感真是油然而生!而且,对内核的分析,除了出自对技术的狂热追求之外,这种令人生畏的劳 动所带来的回报也是非常令人着迷的,这也正是它拥有众多追随者的主要原因:
首先,你可以从中学到很多的计算机的底层知识,如后面将讲到的系统的引导和硬件提供的中断机制等;其它,象虚拟存储的实现机制,多任务机制,系统保护机制等等,这些都是非都源码不能体会的。
同时,你还将从操作系统的整体结构中,体会整体设计在软件设计中的份量和作用,以及一些宏观设计的方法和技巧:Linux的内核为上层应用提供一个 与具体硬件不相关的平台;同时在内核内部,它又把代码分为与体系结构和硬件相关的部分,和可移植的部分;再例如,Linux虽然不是微内核的,但他把大部 分的设备驱动处理成相对独立的内核模块,这样减小了内核运行的开销,增强了内核代码的模块独立性。
而且你还能从对内核源码的分析中,体会到它在解决某个具体细节问题时,方法的巧妙:如后面将分析到了的Linux通过Botoom_half机制来加快系统对中断的处理。
最重要的是:在源码的分析过程中,你将会被一点一点地、潜移默化地专业化。一个专业 的程序员,总是把代码的清晰性,兼容性,可移植性放在很重要的位置。他们总是通过定义大量的宏,来增强代码的清晰度和可读性,而又不增加编译后的代码长度 和代码的运行效率;他们总是在编码的同时,就考虑到了以后的代码维护和升级。 甚至,只要分析百分之一的代码后,你就会深刻地体会到,什么样的代码才是一个专业的程序员写的,什么样的代码是一个业余爱好者写的。而这一点是任何没有真 正分析过标准代码的人都无法体会到的。
然而,由于内核代码的冗长,和内核体系结构的庞杂,所以分析内核也是一个很艰难,很需要毅力的事;在缺乏指导和交流的情况下,尤其如此。只有方法正确,才能事半功倍。正是基于这种考虑,作者希望通过此文能给大家一些借鉴和启迪。
由于本人所进行的分析都是基于2.2.5版本的内核;所以,如果没有特别说明,以下分析都是基于i386单处理器的2.2.5版本的Linux内核。所有源文件均是相对于目录/usr/src/linux的。
方法之一:从何入手
要分析Linux内核源码,首先必须找到各个模块的位置,也即要弄懂源码的文件组织形式。虽然对于有经验的高手而言,这个不是很难;但对于很多初级的Linux爱好者,和那些对源码分析很有兴趣但接触不多的人来说,这还是很有必要的。
1、Linux核心源程序通常都安装在/usr/src/linux下,而且它有一个非常简单的编号约定:任何偶数的核心(的二个数为偶数,例如2.0.30)都是一个稳定地发行的核心,而任何奇数的核心(例如2.1.42)都是一个开发中的核心。
2、核心源程序的文件按树形结构进行组织,在源程序树的最上层,即目录/usr/src/linux下有这样一些目录和文件:
◆ COPYING: GPL版权申明。对具有GPL版权的源代码改动而形成的程序,或使用GPL工具产生的程序,具有使用GPL发表的义务,如公开源代码;
◆ CREDITS: 光荣榜。对Linux做出过很大贡献的一些人的信息;
◆ MAINTAINERS: 维护人员列表,对当前版本的内核各部分都有谁负责;
◆ Makefile: 第一个Makefile文件。用来组织内核的各模块,记录了个模块间的相互这间的联系和依托关系,编译时使用;仔细阅读各子目录下的Makefile文件对弄清各个文件这间的联系和依托关系很有帮助;
◆ ReadMe: 核心及其编译配置方法简单介绍;
◆ Rules.make: 各种Makefilemake所使用的一些共同规则;
◆ REPORTING-BUGS:有关报告Bug 的一些内容;
● Arch/ :arch子目录包括了所有和体系结构相关的核心代码。它的每一个子目录都代表一种支持的体系结构,例如i386就是关于intel CPU及与之相兼容体系结构的子目录。PC机一般都基于此目录;
● Include/: include子目录包括编译核心所需要的大部分头文件。与平台无关的头文件在 include/linux子目录下,与 intel cpu相关的头文件在include/asm-i386子目录下,而include/scsi目录则是有关scsi设备的头文件目录;
● Init/: 这个目录包含核心的初始化代码(注:不是系统的引导代码),包含两个文件main.c和Version.c,这是研究核心如何工作的好的起点之一。
● Mm/:这个目录包括所有独立于 cpu 体系结构的内存管理代码,如页式存储管理内存的分配和释放等;而和体系结构相关的内存管理代码则位于arch/*/mm/,例如arch/i386/mm/Fault.c;
● Kernel/:主要的核心代码,此目录下的文件实现了大多数linux系统的内核函数,其中最重要的文件当属sched.c;同样,和体系结构相关的代码在arch/*/kernel中;
● Drivers/: 放置系统所有的设备驱动程序;每种驱动程序又各占用一个子目录:如,/block 下为块设备驱动程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系统的设备是如何初始化的,你可以看drivers/block /genhd.c中的device_setup()。它不仅初始化硬盘,也初始化网络,因为安装nfs文件系统的时候需要网络;
● Documentation/: 文档目录,没有内核代码,只是一套有用的文档,可惜都是English的,看看应该有用的哦;
● Fs/: 所有的文件系统代码和各种类型的文件操作代码,它的每一个子目录支持一个文件系统, 例如fat和ext2;
● Ipc/: 这个目录包含核心的进程间通讯的代码;
● Lib/: 放置核心的库代码;
● Net/: 核心与网络相关的代码;
● Modules/: 模块文件目录,是个空目录,用于存放编译时产生的模块目标文件;
● Scripts/: 描述文件,脚本,用于对核心的配置;
一般,在每个子目录下,都有一个 Makefile 和一个Readme 文件,仔细阅读这两个文件,对内核源码的理解很有用。
对Linux内核源码的分析,有几个很好的入口点:一个就是系统的引导和初始化,即 从机器加电到系统核心的运行;另外一个就是系统调用,系统调用是用户程序或操作调用核心所提供的功能的接口。对于那些对硬件比较熟悉的爱好者,从系统的引 导入手进行分析,可能来的容易一些;而从系统调用下口,则可能更合适于那些在dos或Uinx、Linux下有过C编程经验的高手。