分类: LINUX
2006-06-30 20:34:24
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
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
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)
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 --->
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
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
[*] 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
总线类型,
[*] 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 --->
[ ] Enable PCCARD debugging
[ ] Enable obsolete PCCARD code
[*] 32-bit CardBus support
--- PC-card bridges
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
2.6内核的配置与编译(11)
PCI Hotplug Support --->
< > 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热插拔控制芯片的支持。
2.6内核的配置与编译(12)
可执行文件格式,
[*] 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 POSIX Access Control Lists
[ ] JFS debugging
[ ] JFS statistics
[*] Realtime support (EXPERIMENTAL)
[*] Quota support
[*] Security Label support
[*] POSIX ACL support
< > Minix fs support
< > ROM file system support
[*] Quota support
< > Old quota format 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的文件系统是要内核支持的。
这里概要的介绍了保证系统正常启
动的几个关键点,可能我反而把它讲复杂了。如果你能理解上面的这段话,你应该能清楚的知道哪些文件系统是要编译进内核的,哪些是可以编译成模块的。如果你
不太理解上面的这段话,下篇贴子我将详细介绍每个选项及几种常用的文件系统。当然这里面包含了我的偏见,如果你觉得我的说法不准确,有误导看官的地方,请
一定指出来。我在此先表示多谢了。
2.6内核的配置与编译(14)
<*> 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 POSIX Access Control Lists
[ ] JFS debugging
[ ] JFS statistics
[*] Realtime support (EXPERIMENTAL)
[*] Quota support
[*] Security Label support
[*] POSIX ACL support
< > Minix fs support
< > ROM file system support
[*] Quota support
< > Old quota format 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),新的(第四版)的内核自动加载远程文件系统的支持,也支持第三版。