随笔-9  评论-21  文章-63  trackbacks-0

本文以Gentoo的2.6.10-r6的内核为例,讲述了如何配置、编译2.6版本的内核。

首先对内核进行菜单配置,
# cd /usr/src/linux
# make menuconfig
进入图形界面的内核配置。

代码成熟度选项,
Code maturity level options  --->
  [*] Prompt for development and/or incomplete code/drivers
  [*]   Select only drivers expected to compile cleanly

    打开使用开发中、不完全的代码/驱动会让内核配置多出很多选项,由于我们需要使用一些正在开发中的功能,因此必需打开这一选项。

通用设置选项,
General setup  --->
  ()  Local version - append to kernel release
  [*] Support for paging of anonymous memory (swap)
  [*] System V IPC
  [*] POSIX Message Queues
  [*] BSD Process Accounting
  [*]   BSD Process Accounting version 3 file format
  [*] Sysctl support
  [ ] Auditing support
  (15) Kernel log buffer size (16 => 64KB, 17 => 128KB)
  [*] Support for hot-pluggable devices
  [*] Kernel Userspace Events
  [*] Kernel .config support
  [*]   Enable access to .config through /proc/config.gz
  [*] Configure standard kernel features (for small systems)  --->
    --- Configure standard kernel features (for small systems)
    [ ]   Load all symbols for debugging/kksymoops
    [*]   Enable futex support
    [*]   Enable eventpoll support
    [*]   Optimize for size
    [*]   Use full shmem filesystem
    (0)   Function alignment
    (0)   Label alignment
    (0)   Loop alignment
    (0)   Jump alignment
 
Local version - append to kernel release:这里填入的是64字符以内的字符串,你在这里填上的字符口串可以用uname -a命令看到。

Support for paging of anonymous memory (swap):这是使用交换分区或者交换文件来做为虚拟内存的,当然要选上了。

System V IPC:表示系统5的Inter Process Communication,它用于处理器在程序之间同步和交换信息,如果不选这项,很多程序运行不起来的。

POSIX Message Queues:这是POSIX的消息队列,它同样是一种IPC。建议你最好将它选上。

BSD Process Accounting:这是充许用户进程访问内核将账户信息写入文件中的。这通常被认为是个好主意,建议你最好将它选上。

Sysctl support:这个选项能不重新编译内核修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核的参数或变量。建议你最好将它选上。

Auditing support:审记支持,用于和内核的某些子模块同时工作,例如SELinux。只有选择此项及它的子项,才能调用有关审记的系统调用。

Kernel log buffer size:内核日志缓存的大小,12 => 4 KB,13 => 8 KB,14 => 16 KB单处理器,15 => 32 KB多处理器,16 => 64 KB for x86 NUMAQ or IA-64,17 => 128 KB for S/390。

Support for hot-pluggable devices:是否支持热插拔的选项,肯定要选上。不然USB、PCMCIA等这些设备都用不了。

Kernel Userspace Events:内核中分为系统区和用户区,这里系统区和用户区进行通讯的一种方式,选上。

Kernel .config support:将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc中得到内核的配置。还记得另一篇贴子我是如何取得启动光盘的内核配置信息,并在此基础上配置新的内核吗?

Configure standard kernel features (for small systems):这是为了编译某些特殊的内核使用的,通常你可以不选择这一选项,你也不用对它下面的子项操心了。

Load all symbols for debugging/kksymoops:是否装载所有的调试符号表信息,如果你不需要对内核调试,不需要选择此项。

Enable futex support:不选这个内核不一定能正确的运行使用glibc的程序,当然要选上。

Enable eventpoll support:不选这个内核将不支持事件轮循的系统调用,最好选上。

Optimize for size:这个选项使gcc使用-Os的参数而不是-O2的参数来优化编译,以获得更小尺寸的内核,建议选上。

Use full shmem filesystem:除非你在很少的内存且不使用交换内存时,才不要选择这项。

后面的这四项都是在编译时内存中的对齐方式,0表示编译器的默认方式。使用内存对齐能提高程序的运行速度,但是会增加程序对内存的使用量。

可加载模块,
Loadable module support  --->
  [*] Enable loadable module support
  [*] Module unloading
  [ ]     Forced module unloading
  [*] Module versioning support (EXPERIMENTAL)
  [ ] Source checksum for all modules
  [*] Automatic kernel module loading

Enable loadable module support,很多人喜欢将全部功能、硬件支持一股脑的编进内核,而不是使用模块的方式。这样做非常不好(个人觉得)。其实我也做过嵌入式的开发,在针对特定硬件的平台下尽可能将内核编小,将始终是支持模块加载的。例如我们开发的防火墙就是做为内核的模块被加载的。使用模块支持,你的系统能具有更好的可扩充性。还有一个原因就是自己编写的功能模块、设备驱动模块(假设编写的质量不高)以模块方式工作引起Kernel Panic的机率要远远低于不支持模块全部编进内核的方式。讲了这么多,终于可以理直气壮的选上这一功能了。

Module unloading,不选这个功能,加载的模块就不能卸载。没什么需要多解释的,建议最好选上。

Forced module unloading,这个选项能强行卸载模块,即使内核认为这样并不安全,也就是说你可以把正在使用中的模快卸载掉。如果你不是内核开发人员或者骨灰级的玩家,不要选择这个选项。

Module versioning support (EXPERIMENTAL),这个功能可以让你使用其它版本的内核模块,由于我自己写一些模块,所以我会用到这个选项,因为内核更新太快了,我的头文件更新根本赶不上内核的更新。还有,虽然我在Gentoo下开发,但实际真实环境用的却是从kernel.org下载的内核。虽然我选择了这个选项,不过建议你不要选择这个选项。

Source checksum for all modules,这个功能是为了防止更改了内核模块的代码但忘记更改版本号而造成版本冲突。我估计现在没有哪家公司在开发中还没使用版本控制工具,所以不需要这项了。如果你不是自己写内核模块,那就更不需要这一选项了。

Automatic kernel module loading,这个选项能让内核自动的加载部份模块,建议你最好选上。举个例子说明一下,如模块eth1394依赖于模块ieee1394。如果选择了这个选项,可以直接加载模块eth1394;如果没有选择这个选项,必需先加载模块ieee1394,再加载模块eth1394,否则将出错。

2.6内核的配置与编译(4)

处理器内型及特性,
Processor type and features  --->
  Subarchitecture Type (PC-compatible)  --->
  Processor family (Pentium-4/Celeron(P4-based)/Pentium-4 M/Xeon)  --->
  [ ] Generic x86 support
  [*] HPET Timer Support
  [*] Symmetric multi-processing support
  (2)   Maximum number of CPUs (2-255)
  [*]   SMT (Hyperthreading) scheduler support
  [ ] Preemptible Kernel
  [ ] Machine Check Exception
  <M> Toshiba Laptop support
  <M> Dell laptop support
  < > /dev/cpu/microcode - Intel IA32 CPU microcode support
  < > /dev/cpu/*/msr - Model-specific register support
  < > /dev/cpu/*/cpuid - CPU information support
  Firmware Drivers  --->
    < > BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)
  High Memory Support (4GB)  --->
  [ ] Allocate 3rd-level pagetables from highmem
  [ ] Math emulation
  [*] MTRR (Memory Type Range Register) support
  [ ] Boot from EFI support (EXPERIMENTAL)
  [*] Enable kernel irq balancing
  [ ] Use register arguments (EXPERIMENTAL)

Subarchitecture Type,这没什么好说的,如果用PC机的话都选这个。

Processor family,这也没什么好说的,选择你机器对应的处理器即可。

Generic x86 support,这一选项针对x86系列的CPU使用更多的常规优化。如果你在上面一项选的是i386、i586之类的才选这个。

HPET Timer Support,HPET是替代8254芯片的下一代时钟处理器。这里你可以安全的选上这一选项。如果硬件不支持的话,将仍使用8254时钟处理器。

Symmetric multi-processing support,对称多处理器支持,在单CPU的机器上,不选这个选项会更快一些。由于超线程技术,看起来是两颗CPU,因些要选上这个选项。

Maximum number of CPUs (2-255),支持的最大CPU数。

SMT (Hyperthreading) scheduler support,超线程支持,如果你的CPU是P4超线程的,应该选上这一选项。

Preemptible Kernel,这个选项能使应用程序即使内核在高负载时也很可靠,建议最好选上。

Machine Check Exception,这个选项能让CPU检测到系统故障时通知内核,一般我用组装的台式机会选这项。本本嘛,我感觉还是非常可靠的,所以就不选它了。

Toshiba Laptop support,Dell laptop support,这两项都是对本本的支持,其实编译内核的原则应该是让内核能在特定的环境下运行,由于我编译的内核可能公司的其它人也会使用,所以我尽可能的不针对特定的硬件。将对特定的硬件支持编译成模块。

/dev/cpu/microcode - Intel IA32 CPU microcode support,这个选项是让你使用不随Linux内核发行的IA32 microcode,但是你必需有IA32 microcode的二进制文件。

/dev/cpu/*/msr - Model-specific register support,这个选项能让特权CPU访问x86的MSR寄存器。由于超线程并不是真正的多处理器环境,所以不要选择这个。

/dev/cpu/*/cpuid - CPU information support,这个选项能从/dev/cpu/x/cpuid获得CPU的唯一标识符。

BIOS Enhanced Disk Drive calls determine boot disk,台式机的有些BIOS支持从某块特定的硬盘启动,由于本本只能装一块硬盘,所以就不选择这项了。如果你的BIOS不支持这个功能而你选上的话,有可能无法启动。

High Memory Support (4GB),4GB的内存支持,已经足够了。

Allocate 3rd-level pagetables from highmem,除非你真的有几G的内存,选择这个是没有意义的。

Math emulation,估计现在没人有386或486SX的处理器了吧,那就不要选这个。

MTRR (Memory Type Range Register) support,这个选项必需要选上。

Boot from EFI support (EXPERIMENTAL),由于我使用的是GRUB,所以选上这个也没什么用,如果你打算使用EFI的功能,你可以到http://elilo.sourceforge.net看看。

Enable kernel irq balancing,选上这个选项能让内核进行IRQ均衡。

Use register arguments (EXPERIMENTAL),使用-mregparm=3参数编译内核,将前3个参数以寄存器方式进行参数调用。GCC的版本必需大于等于3.0。

电源管理,
Power management options (ACPI, APM)  --->
  [*] Power Management support
  [ ]   Power Management Debug Support
  [ ]   Software Suspend (EXPERIMENTAL)
      ACPI (Advanced Configuration and Power Interface) Support  --->
      APM (Advanced Power Management) BIOS Support  --->
      CPU Frequency scaling  --->

Power Management support,电源管理没什么好说的,不想浪费电就选上。如果不选你可以跳过这部份。

Power Management Debug Support,电源管理的调试信息支持,如果不是要调试内核有关电源管理部份,请不要选择这项。

Software Suspend (EXPERIMENTAL),休眠到硬盘。也就是将内存写入交换分区中,下次启动可以通过参数resume=/dev/swappartition(例如:resume=/dev/hda6)来恢复上次机器运行的状态。这项功能对于系统引导时启动许多服务的机器来说很有用,可以节约启动时间。这项功能根据自己的需要选择吧,如果你选择这项功能,记得恢复休眠后重做交换分区。

ACPI (Advanced Configuration and Power Interface) Support  --->
  [*] ACPI Support
  [ ]   Sleep States (EXPERIMENTAL)
  <M>   AC Adapter
  <M>   Battery
  <M>   Button
  <M>   Video
  <M>   Fan
  <M>   Processor
  <M>     Thermal Zone
  <M>   ASUS/Medion Laptop Extras
  <M>   IBM ThinkPad Laptop Extras
  <M>   Toshiba Laptop Extras
  (0) Disable ACPI for systems before Jan 1st this year 
  [ ] Debug Statements
  [ ] Power Management Timer Support

ACPI Support,这是一种电源管理方式,你可以看看你的BIOS是否支持。如果支持的话建议你选上这项。

Sleep States (EXPERIMENTAL),这项功能可以让系统进入休眠状态(不是休眠到硬盘)。休眠是指系统仍然通着电,只是进入最大幅度的省电状态;而休眠到硬盘是指系统已经断电。不过如果你不是驱动程序的电源管理部份的开发人员,建议你最好不要选择这项。相信未来linux下的驱动对电源支持的功能会越来越好,或者也搞个硬件兼容列表,到时就可以放心的使用这项功能了。

AC Adapter,检测是电源供电还是电池供电,通常只对本本有用。

Battery,通过/proc/acpi/battery得到电池的信息,通常这也是针对笔记本的。

Button,捕获Power、Sleep、Lid(我也不知道这是什么按钮)等按钮是否按下,并做相应的动作。

Video,集成在板上的显卡的ACPI支持,对有些板卡可能不起作用。

Fan,风扇的支持。这一点很明显,不选这项我的本本的风扇一直在转,选上以后风扇只是间断的转转。

Processor,当机器负荷轻时节省处理器的用电,处理器可是电脑中的第一用电大户(可能老式的CRT显示器和它有的一比)。

Thermal Zone,这个我也不太清楚是什么,只是据说大部份的台式机和笔记本都支持,不选还可能把处理器烧掉。如果你不会让模块正常工作,还是把它编进内核吧,怪吓人的。

ASUS/Medion Laptop Extras、IBM ThinkPad Laptop Extras、Toshiba Laptop Extras,这三种本本的扩展支持。你的内核如果只是自己用,选个该选的就行了。

(0) Disable ACPI for systems before Jan 1st this year,输入四位数的年份,在该年的1月1日前不使用ACPI的功能。0表示一直使用。

Debug Statements,详细的ACPI调试信息,不搞开发就别选。

Power Management Timer Support,我的本本支持HPET(要是忘了是什么,再看看前面),所以不选它。要是你的机器不支持,应该把它选上。

APM (Advanced Power Management) BIOS Support  --->
  <M> APM (Advanced Power Management) BIOS support
  [ ]   Ignore USER SUSPEND 
  [*]   Enable PM at boot time
  [ ]   Make CPU Idle calls when idle
  [ ]   Enable console blanking using APM
  [ ]   RTC stores time in GMT
  [ ]   Allow interrupts during APM BIOS calls
  [*]   Use real mode APM BIOS call to power off

APM (Advanced Power Management) BIOS support,高级电源管理的支持,一般来说笔记本应该选上,台式机可以不选。

Ignore USER SUSPEND,只有NEC Versa M系列的笔记本需要选择这一项。

Enable PM at boot time,启动时支持电源管理,选上这个选项能让系统自动的进行电源管理,除非在启动时死机,才不要选这项。

Make CPU Idle calls when idle,系统空闲时调用空闲指令。只有老式的CPU才用这项。其实调用空闲指令还是让CPU执行了一条指令。这个选项在内核循环中调用空闲指令。

Enable console blanking using APM,支持关闭监视器。据说这项功能对所有的笔记本都无效。如果你都按我的建议配置,系统是能自动休眠的(使用ACPI)。你也不用担心你的显示器一直亮着的。

RTC stores time in GMT,按Unix的标准,硬件的时钟应该设为格林威治时间。还是那句老话,因为我还要用Windows,所以硬件时钟设成了本地时间,当然就不要选这项了。

Allow interrupts during APM BIOS calls,允许APM的BIOS调用时中断。多数的机器不需要这项,Thinkpad的一些新机器需要这项。如果休眠时挂机(包括睡下去就醒不来),再把这项选上。

Use real mode APM BIOS call to power off,建议最好选上此项,保证软件关机。如果你有兴趣可以试试你的机器不选这项能不能正常的软件关机(多数机器不能)。

 

补充一点,如果既选择了ACPI又选择了APM,先加载的将被使用。

通过这么多的例子,大家应该可以看出来在menuconfig中,圆括号内是参数,可以选择某一选项或者输入具体的参数。方括号只能选择“Y”或“N”,尖括号除了选择“Y”和“N”还可以选择“M”。“Y”表示将该选项包括在内核中,menuconfig中以“*”表示。“N”表示不使用此选项的功能,“M”表示将此选项的功能编译成模块。

ACPI是为了取代APM而设计的,因此尽量使用ACPI的功能,实在不行再加载apm模块。

[*] CPU Frequency scaling
[ ]   Enable CPUfreq debugging
< >   /proc/cpufreq interface (deprecated)
      Default CPUFreq governor (performance)  --->
---   'performance' governor
<M>   'powersave' governor
<M>   'userspace' governor for userspace frequency scaling
[ ]     /proc/sys/cpu/ interface (2.4. / OLD)
<M>   'ondemand' cpufreq policy governor
<*>   CPU frequency table helpers
<M> ACPI Processor P-States driver
<M> AMD Mobile K6-2/K6-3 PowerNow!
<M> AMD Mobile Athlon/Duron PowerNow!
<M> AMD Opteron/Athlon64 PowerNow!
<M> Cyrix MediaGX/NatSemi Geode Suspend Modulation
<M> Intel Enhanced SpeedStep 
[ ]   Use ACPI tables to decode valid frequency/voltage pairs
---   Built-in tables for Banias CPUs
<M> Intel Speedstep on ICH-M chipsets (ioport interface)
<M> Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface)
<M> Intel Pentium 4 clock modulation
< > nVidia nForce2 FSB changing
<M> Transmeta LongRun
<M> VIA Cyrix III Longhaul
--- shared options
[ ] /proc/acpi/processor/../performance interface (deprecated)
[ ] Relaxed speedstep capability checks

CPU Frequency scaling,这一选项允许改变CPU的主频,使CPU在低负荷或使用电池时降低主频,达到省电的目的。

Enable CPUfreq debugging,是否允许调试CPU改变主频的功能,如果要调试,还需要在启动时加上参数。cpufreq.debug=<value>
1:变频技术的内核调试
2:变频技术的驱动调试
4:变频技术的调节器调试

/proc/cpufreq interface (deprecated) ,是否允许/proc/cpufreq来调节主频,建议使用默认的sysfs来调节。

Default CPUFreq governor (performance) --->,默认的主频调节,圆括号内的是你选择的结果,这里表示以性能为主。

'powersave' governor,最大限度的节约电能调节器。

'userspace' governor for userspace frequency scaling,用户自定义调节器。

/proc/sys/cpu/ interface (2.4. / OLD),兼容2.4内核的用户调节器。

'ondemand' cpufreq policy governor,自动调节主频。

CPU frequency table helpers,多数的CPU需要这一项来调节主频。

ACPI Processor P-States driver,报告处理器的状态。

AMD Mobile K6-2/K6-3 PowerNow!,AMD移动版K6处理器的变频驱动。

AMD Mobile Athlon/Duron PowerNow!,AMD移动版毒龙、雷乌的变频驱动。

AMD Opteron/Athlon64 PowerNow!,AMD64处理器的变频驱动。

Cyrix MediaGX/NatSemi Geode Suspend Modulation,Cyrix处理器的变频驱动。

Intel Enhanced SpeedStep,Intel的变频技术支持。

Use ACPI tables to decode valid frequency/voltage pairs,使用BIOS中的主频/电压参数。

--- Built-in tables for Banias CPUs,迅驰一代的主频/电压参数。

Intel Speedstep on ICH-M chipsets (ioport interface) ,Intel ICH-M南桥芯片组的支持。

Intel SpeedStep on 440BX/ZX/MX chipsets (SMI interface),Intel 440BX/ZX/MX南桥芯片级的支持。

Intel Pentium 4 clock modulation,P4处理器的时钟模块支持。

nVidia nForce2 FSB changing,nVidia nForce2的支持。

Transmeta LongRun,Transmeta处理器的支持。

VIA Cyrix III Longhaul,VIA Cyrix处理器的支持。

/proc/acpi/processor/../performance interface (deprecated),从/proc/acpi/processor/../performance获得CPU的变频信息。

Relaxed speedstep capability checks,不全面检测Intel Speedstep,有的系统虽然支持Speedstep技术,却无法通过全面的检测。

总线类型,
[*] PCI support
      PCI access mode (Any)  --->
[ ] Message Signaled Interrupts (MSI and MSI-X)
[ ] Legacy /proc/pci interface
[ ] PCI device name database
[*] ISA support
[*]   EISA support
[*]     Vesa Local Bus priming
[*]     Generic PCI/EISA bridge
[*]     EISA virtual root device
[ ]     EISA device name database
[ ] MCA support
< > NatSemi SCx200 support
    PCCARD (PCMCIA/CardBus) support  --->
    PCI Hotplug Support  --->

PCI support,没有人不知道这是什么总线类型吧,实在不知道就去google查吧,这个当然要选上。

PCI access mode (Any),强列建议选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备。

Message Signaled Interrupts (MSI and MSI-X),建议你不要选择这项,设备将使用默认的IRQ中断。如果选择这项,充许设备通过PCI总线写入内存堆栈产生一个中断。

Legacy /proc/pci interface,是否使用/proc/pci目录下的信息文件来描述PCI设备的信息。现在的系统多数都使用lspci工具来得到这样的信息。

PCI device name database,如果你不打算使用lspci工具,就把这项和上面的一项选上。lspci和hotplug都不需要内核中的设备信息库了。

ISA support,是否使用工业总线。如果你没有老式的ISA设备,可以不选这项。现在基本上都没有ISA的设备了。不过需要注意的是如果你做嵌入式系统的开发,一些PC104的总线可能会桥接到EISA或者是。VESA总线上。

EISA support,扩展工业总线。

Vesa Local Bus priming,VESA总线,也是扩展工业总线的一种。我的老486DX66的机器上的显卡就是这种总线,块板上大概还有2个EISA插槽各3个ISA插槽。

PCI/EISA bridge,PCI、EISA两种总线的桥。

EISA virtual root device,EISA总线的虚拟根设备。

EISA device name database,内核中的EISA设备信息库。

MCA support,微通道总线。IBM的台式机和笔记本上可能会有这种总线,包括它的p系列、e系列、z系列机器上都用到了这种总线。

NatSemi SCx200 support,这个我不知道是什么东西,看帮助是松下的一种半导体处理器的驱动。

    总之,只要你的主板没有ISA插槽,而且你也不是搞嵌入式开发,工业自动化控制的。不要选“ISA support”就是了,如今的ISA设备在x86体系上基本是是见不到了。不过自己制板的话,还是ISA的板子最好做。

2.6内核的配置与编译(10)

PCCARD (PCMCIA/CardBus) support  --->
    <M> PCCard (PCMCIA/CardBus) support
    [ ]   Enable PCCARD debugging
    [ ]   Enable obsolete PCCARD code
    <M>   16-bit PCMCIA support
    [*]   32-bit CardBus support
    --- PC-card bridges
    <M> CardBus yenta-compatible bridge support
    <M> Cirrus PD6729 compatible bridge support
    <M> i82092 compatible bridge support
    <M> i82365 compatible bridge support
    <M> Databook TCIC host bridge support

PCCard (PCMCIA/CardBus) support,一般只有笔记本电脑上才会有PCMCIA插槽,如果你是台式机的话,可以不选这一项,然后跳过这一部份。

Enable PCCARD debugging,通常不需要选择调试PCMCIA设备,除非你是设备驱动的开发人员。

Enable obsolete PCCARD code,老式的PCMCIA设备只持。现在很少有这样的设备了,除非你买这样的设备时带了张Linux的驱动光盘才需要选上。而且估计你也只能在二手市场上买到这样的设备。

16-bit PCMCIA support,16位的PCMCIA总线支持。

32-bit CardBus support,32位的PCMCIA总线支持,通常也叫PCMCIA II总线。

下面的是不同产家的PCMCIA芯片的驱动支持,如果你知道你的本本用的是什么芯片组的话,可以只选它而不选其它的。要是你不知道可以象我一样的全部选上,然后用modprobe一种一种的试。最后我终于知道我的HP zv5028的本本用的是yenta-compatible的芯片组了。
--- PC-card bridges
<M> CardBus yenta-compatible bridge support
<M> Cirrus PD6729 compatible bridge support
<M> i82092 compatible bridge support
<M> i82365 compatible bridge support
<M> Databook TCIC host bridge support

PCI Hotplug Support  --->
  <M> Support for PCI Hotplug (EXPERIMENTAL)
  < >   Fake PCI Hotplug driver (NEW)
  < >   Compaq PCI Hotplug driver (NEW)
  < >   IBM PCI Hotplug driver (NEW)
  < >   ACPI PCI Hotplug driver (NEW)
  [ ]   CompactPCI Hotplug driver (NEW)
  < >   PCI Express Hotplug driver (NEW)
  < >   SHPC PCI Hotplug driver (NEW)
 
Support for PCI Hotplug (EXPERIMENTAL),一般来讲只有服务器上会有热插拔的设备,如果你使用的是台式机,你可以不选择此项并跳过这一部份。(其实我也没有选这一项,只是为了讲解的方便而选上的。)

Fake PCI Hotplug driver (NEW),选上这一选项能让你的机器模拟PCI热插拔。注意,它并不是真正意义上的热插拔,决对不允许带电插拔设备除非你的主板上集成了PCI热插拔芯片并且你的PCI设备本身支持热插拔。

Compaq PCI Hotplug driver (NEW),Compaq服务器上的热插拔芯片组的支持。

IBM PCI Hotplug driver (NEW),IBM服务器上的热插拔芯片组的支持。

ACPI PCI Hotplug driver (NEW),PCI热插拔设备是否支持ACPI电源管理(一般来说都是支持的)。

CompactPCI Hotplug driver (NEW),精简PCI总线的热插拔设备的支持,通常在嵌入式系统中会用到精简PCI总线。

PCI Express Hotplug driver (NEW),PCI加速总线的热插拔设备的支持。现在PCI Express总线的显卡挺火的。但用于服务器上的PCI加速总线的设备我还没见过。(我是井底之蛙)

SHPC PCI Hotplug driver (NEW),SHPC热插拔控制芯片的支持。文件系统,
<*> Second extended fs support
[*]   Ext2 extended attributes
[*]     Ext2 POSIX Access Control Lists
[*]     Ext2 Security Labels
<*> Ext3 journalling file system support
[*]   Ext3 extended attributes
[*]     Ext3 POSIX Access Control Lists
[*]     Ext3 Security Labels
[ ] JBD (ext3) debugging support
<*> Reiserfs support
[ ]   Enable reiserfs debug mode
[ ]   Stats in /proc/fs/reiserfs
[*]   ReiserFS extended attributes
[*]     ReiserFS POSIX Access Control Lists
[*]     ReiserFS Security Labels
JFS filesystem support
[*]   JFS POSIX Access Control Lists
[ ]   JFS debugging
[ ]   JFS statistics
XFS filesystem support
[*]   Realtime support (EXPERIMENTAL)
[*]   Quota support
[*]   Security Label support
[*]   POSIX ACL support
< > Minix fs support
< > ROM file system support
[*] Quota support
< >   Old quota format support
   Quota format v2 support
[*] Dnotify support
< > Kernel automounter support
< > Kernel automounter version 4 support (also supports v3)
    CD-ROM/DVD Filesystems  --->
    DOS/FAT/NT Filesystems  --->
    Pseudo filesystems  --->
    Miscellaneous filesystems  --->
    Network File Systems  --->
    Partition Types  --->
    Native Language Support  --->
   
  有人说在编译内核时应该将/boot分区和/分区的文件系统编译进内核,其它的可以编译成模块。对,但不确切。让我们来一起了解一下linux系统的启动顺序。在内核被加载后,如果initrd参数传入了内核,内核会去调用指定的文件。当然,initrd和System.map通常都是/boot下。但是同样可以用initrd=(hd1,2)/initrd.img这样的方式指定。内核启动完成后将调用/sbin/init,(如果是链接要保证目标文件能被内核加载)。不同的系统的启动脚本可能不太一样,这里不详细介绍。启动脚本向内核加载模块时可能用/sbin/modprobe或/sbin/insmod,由此看来/sbin的文件系统是要内核支持的。编译的内核模块一般在/lib/modules/的版本目录下,所以/lib/modules的文件系统是要内核支持的。一旦其它文件系统的模块能加载,系统就能向正常的访问内核中的文件系统一样访问模块支持的文件系统了。由于启动脚本、fstab自动加载等文件一般在/etc目录下,因此/etc的文件系统是要内核支持的。
  这里概要的介绍了保证系统正常启动的几个关键点,可能我反而把它讲复杂了。如果你能理解上面的这段话,你应该能清楚的知道哪些文件系统是要编译进内核的,哪些是可以编译成模块的。如果你不太理解上面的这段话,下篇贴子我将详细介绍每个选项及几种常用的文件系统。当然这里面包含了我的偏见,如果你觉得我的说法不准确,有误导看官的地方,请一定指出来。我在此先表示多谢了。

可执行文件格式,
[*] Kernel support for ELF binaries
< > Kernel support for a.out and ECOFF binaries
<*> Kernel support for MISC binaries

Kernel support for ELF binaries,ELF是开放平台下最常用的二进制文件,它支持不同的硬件平台。

Kernel support for a.out and ECOFF binaries,这是早期UNIX系统的可执行文件格式,目前已经被ELF格式取代。

Kernel support for MISC binaries,此选项允许插入二进制的封装层到内核中,当使用Java、.NET、Python、Lisp等语言编写的程序时非常有用。

接下来应该讲硬件设备部份,但考虑到硬件部份是针对具体硬件的,大数Linux玩家都是硬件的DIYer。因此对这一部份应该很熟悉。硬件设备部份将放到最后讲,下一篇将讲文件系统部份。

<*> Second extended fs support
[*]   Ext2 extended attributes
[*]     Ext2 POSIX Access Control Lists
[*]     Ext2 Security Labels
<*> Ext3 journalling file system support
[*]   Ext3 extended attributes
[*]     Ext3 POSIX Access Control Lists
[*]     Ext3 Security Labels
[ ] JBD (ext3) debugging support
<*> Reiserfs support
[ ]   Enable reiserfs debug mode
[ ]   Stats in /proc/fs/reiserfs
[*]   ReiserFS extended attributes
[*]     ReiserFS POSIX Access Control Lists
[*]     ReiserFS Security Labels
JFS filesystem support
[*]   JFS POSIX Access Control Lists
[ ]   JFS debugging
[ ]   JFS statistics
XFS filesystem support
[*]   Realtime support (EXPERIMENTAL)
[*]   Quota support
[*]   Security Label support
[*]   POSIX ACL support
< > Minix fs support
< > ROM file system support
[*] Quota support
< >   Old quota format support
   Quota format v2 support
[*] Dnotify support
< > Kernel automounter support
< > Kernel automounter version 4 support (also supports v3)
    CD-ROM/DVD Filesystems  --->
    DOS/FAT/NT Filesystems  --->
    Pseudo filesystems  --->
    Miscellaneous filesystems  --->
    Network File Systems  --->
    Partition Types  --->
    Native Language Support  --->
   
Second extended fs support,标准的Linux文件系统,建议将这种文件系统编译进内核。

Ext2 extended attributes,Ext2文件系统的结点名称、属性的扩展支持。

Ext2 POSIX Access Control Lists,POSIX系统的访问权限列表支持。也就是Owner/Group/Others的Read/Write/Execute权限。请参考Unix标准文件系统权限。

Ext2 Security Labels,扩展的安全标签,例如SElinux之类的安全系统会使用到这样的扩展安全属性。

Ext3 journalling file system support,如果你熟悉Redhat Linux,你一定会习惯Ext3文件系统。

Ext3 extended attributes,Ext3文件系统的结点名称、属性的扩展支持。

Ext3 POSIX Access Control Lists,POSIX系统的访问权限列表支持。

Ext3 Security Labels,扩展的安全标签支持。

JBD (ext3) debugging support,Ext3的调试。除非你是文件系统的开发者,否则不要选上这一项。

Reiserfs support,如果你熟悉Suse Linux,你一定会习惯Reiserfs文件系统。

Enable reiserfs debug mode,Reiserfs的调试。除非你是文件系统的开发者,否则不要选上这一项。

Stats in /proc/fs/reiserfs,在/proc/fs/reiserfs文件中显示Reiserfs文件系统的状态。一般来说不需要选择这一项。

ReiserFS extended attributes,Reiserfs,文件系统的结点名称、属性的扩展支持。

ReiserFS POSIX Access Control Lists,POSIX系统的访问权限列表支持。

ReiserFS Security Labels,扩展的安全标签支持。

JFS filesystem support,JFS是IBM公司设计用于AIX系统上的文件系统。后来这一文件系统也能应用于Linux系统。

JFS POSIX Access Control Lists,POSIX系统的访问权限列表支持。

JFS debugging,JFS的调试。除非你是文件系统的开发者,否则不要选上这一项。

JFS statistics,在/proc/fs/jfs文件中显示Reiserfs文件系统的状态。一般来说不需要选择这一项。

XFS filesystem support,XFS是SGI公司为其图形工作站设计的一种文件系统,后来这一文件系统也能应用于Linux系统。

Realtime support (EXPERIMENTAL),实时卷的支持,能大幅提高大文件的读写速度。不过并不太安全,建议暂时不要选择这一选项。

Quota support,XFS文件系统的配额支持。

Security Label support,扩展的安全标签支持。

POSIX ACL support,POSIX系统的访问权限列表支持。

Minix fs support,Minix可能是最早的Linux系统所使用的文件系统。后来被Ext2文件系统所取代。

ROM file system support,内存文件系统的支持。除非你是嵌入式系统的开发者,明确知道你要干什么,否则不要选这一项。

Quota support,配额支持。也就是说限制某个用户或者某组用户的磁盘占用空间。

Old quota format support,旧版本的配额支持。

Quota format v2 support,新版本(第二版)的配额支持。

Dnotify support,基于目录的文件变化的通知机制。

Kernel automounter support,内核自动加载远程文件系统的支持。

Kernel automounter version 4 support (also supports v3),新的(第四版)的内核自动加载远程文件系统的支持,也支持第三版。

posted on 2006-12-03 20:18 Flutist 阅读(313) 评论(0)  编辑 收藏 引用 所属分类: Linux系统实现
只有注册用户登录后才能发表评论。