内核编译

来源:互联网 发布:淘宝店铺名logo设计 编辑:程序博客网 时间:2024/04/29 14:57

代码:
01.Code maturity level options --->
   [*] Prompt for development and/or incomplete code/drivers
   [*] Select only drivers expected to compile cleanly
02.General setup --->
   [*] Support for paging of anonymous memory (swap)
   [*] System V IPC
   [*] POSIX Message Queues
   [ ] BSD Process Accounting
   [*] Sysctl support
   [ ] Auditing support
   [ ] Support for hot-pluggable devices
   [*] Kernel Userspace Events
   [ ] Kernel .config support
   [*] Configure standard kernel features (for small systems) --->
   [*] Load all symbols for debugging/kksymoops
    [ ] Do an extra kallsyms pass
    [*] Enable futex support
    [*] Enable eventpoll support
    [ ] Optimize for size
    [*] Use full shmem filesystem
03.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
04.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 多CPU
(8) Maximum number of CPUs (2-255)
[*] SMT (Hyperthreading) scheduler support
[*] Preemptible Kernel      抢占式内核,请选上它
[ ] Machine Check Exception
< > Toshiba Laptop support
< > 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 --->
   High Memory Support (4GB) --->   高内存
[ ] Allocate 3rd-level pagetables from highmem
[ ] Math emulation
[*] MTRR (Memory Type Range Register) support
[*] Enable kernel irq balancing
[ ] Use register arguments (EXPERIMENTAL)
05.Power management options (ACPI, APM) ---> 电源管理 自定 (偶没选)
06.Bus options (PCI, PCMCIA, EISA, MCA, ISA) ---> 板卡支持 自定
   [*] PCI support
   PCI access mode (Any) --->
   [ ] Message Signaled Interrupts (MSI and MSI-X)
   [*] Legacy /proc/pci interface
   [*] PCI device name database
   [ ] ISA support
   [ ] MCA support
   < > NatSemi SCx200 support
07.Executable file formats --->
   [*] Kernel support for ELF binaries
   <M> Kernel support for a.out and ECOFF binaries
   <M> Kernel support for MISC binaries
08.Device Drivers ---> 设备驱动及网络支持
   Generic Driver Options ---> 默认
    [*] Select only drivers that don't need compile-time external firmware
    [*] Prevent firmware from being built
   Memory Technology Devices (MTD) ---> 不选
   Parallel port support ---> 并行端口 自定(偶没选)
   Plug and Play support ---> 支持热插拔 自定(偶没选)
   Block devices --->
    <*> Normal floppy disk support
    < > Compaq SMART2 support
    < > Compaq Smart Array 5xxx support
    < > Mylex DAC960/DAC1100 PCI RAID Controller support
    < > Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL)
    <M> Loopback device support
    < > Cryptoloop Support
    <M> Network block device support
    < > Promise SATA SX8 support
    <M> RAM disk support
    (16) Default number of RAM disks
    (4096) Default RAM disk size (kbytes)
    () Source directory of cpio_list
    [ ] Support for Large Block Devices
    < > Packet writing on CD/DVD media
     IO Schedulers ---> IO调度器,都选上吧 可以在grub.conf指定用IO调度哪种方式,后面会讲的
      <*> Anticipatory I/O scheduler
      <*> Deadline I/O scheduler
      <*> CFQ I/O scheduler
   ATA/ATAPI/MFM/RLL support ---> ATA设备 自定 (偶没选)
   SCSI device support ---> SCSI设备 自定我有scsi的设备所以有以下选项
    <*> SCSI device support
    [*] legacy /proc/scsi/ support
    --- SCSI support type (disk, tape, CD-ROM)
    <*> SCSI disk support
   因为偶式MPT的SCSI,所以以下都没选,省略之
   Multi-device support (RAID and LVM) ---> 支持RAID和LVM(逻辑卷) 自定
    [*] Multiple devices driver support (RAID and LVM)
    <*> RAID support
    < > Linear (append) mode
    <*> RAID-0 (striping) mode
    < > RAID-1 (mirroring) mode
    < > RAID-10 (mirrored striping) mode (EXPERIMENTAL)
    <*> RAID-4/RAID-5 mode
    < > RAID-6 mode (EXPERIMENTAL)
    <*> Multipath I/O support
    < > Faulty test module for MD
    <*> Device mapper support
    < > Crypt target support
    < > Snapshot target (EXPERIMENTAL)
    < > Mirror target (EXPERIMENTAL)
    < > Zero target (EXPERIMENTAL)
   Fusion MPT device support ---> 偶的SCSI是这个,所以选了 还是自定
     <*> Fusion MPT (base + ScsiHost) drivers
    (40) Maximum number of scatter gather entries
    <*> Fusion MPT misc device (ioctl) driver
   IEEE 1394 (FireWire) support ---> 自定 (偶没选)
   I2O device support ---> 自定 (偶没选)
   Networking support ---> 网络选项
    [*] Networking support
     Networking options --->
        <*> Packet socket
      [ ] Packet socket: mmapped IO
      < > Netlink device emulation
      <*> Unix domain sockets   如果你有网络就               
      < > PF_KEY sockets
      [*] TCP/IP networking
      [ ] IP: multicasting
      [ ] IP: advanced router
      [ ] IP: kernel level autoconfiguration
      < > IP: tunneling
      < > IP: GRE tunnels over IP
      [ ] IP: ARP daemon support (EXPERIMENTAL)
      [*] IP: TCP syncookie support (disabled per default) 能防DOS攻击,但会降低一点性能,总的说性价比不错
      < > IP: AH transformation
      < > IP: ESP transformation
      < > IP: IPComp transformation
      < > IP: tunnel transformation
      <*> IP: TCP socket monitoring interface
      IP: Virtual Server Configuration --->     lvs 支持
      < > The IPv6 protocol (EXPERIMENTAL)
      [*] Network packet filtering (replaces ipchains) ---> 包过滤省略(知道的自己选,不熟悉的都选上)
           以下都没选,省略
     [ ] Amateur Radio support --->
    < > IrDA (infrared) subsystem support --->
    < > Bluetooth subsystem support --->
    [*] Network device support
    < > Dummy net driver support     这个是nis服务器的吧,不大清楚,没用过
    <*> Bonding driver support     双网卡绑定的
    < > EQL (serial line load balancing) support
    < > Universal TUN/TAP device driver support
     ARCnet devices --->
     Ethernet (10 or 100Mbit) --->
     Ethernet (1000 Mbit) --->
      < > Alteon AceNIC/3Com 3C985/NetGear GA620 Gigabit support
      < > D-Link DL2000-based Gigabit Ethernet support
      < > Intel(R) PRO/1000 Gigabit Ethernet support
      < > National Semiconduct DP83820 support
      < > Packet Engines Hamachi GNIC-II support
      < > Packet Engines Yellowfin Gigabit-NIC support (EXPERIMENTAL)
      < > Realtek 8169 gigabit ethernet support
      < > Marvell Yukon Chipset / SysKonnect SK-98xx Support
      <*> Broadcom Tigon3 support
     以下都没选,省略
   ISDN subsystem --->
   Telephony Support --->
   Input device support --->
   Character devices --->
   I2C support --->
   Dallas's 1-wire bus --->
   Misc devices --->
   Multimedia devices --->
   Graphics support --->
   Sound --->
   USB support --->
   MMC/SD Card support ---> 以上都没选,需要的自己选
09.File systems --->   文件系统
   < > Second extended fs support
   <*> Ext3 journalling file system support
   [ ] Ext3 extended attributes
   [*] JBD (ext3) debugging support
   < > Reiserfs support
   < > JFS filesystem support
   < > XFS filesystem support
   < > Minix fs support
   < > ROM file system support
   [ ] Quota support
   < > Kernel automounter support
   <*> Kernel automounter version 4 support (also supports v3)
    CD-ROM/DVD Filesystems --->
     <*> ISO 9660 CDROM file system support
     [ ] Microsoft Joliet CDROM extensions
     [ ] Transparent decompression extension
     < > UDF file system support
    DOS/FAT/NT Filesystems --->    floppy要用到的文件格式
     <*> MSDOS fs support                            
     <*> VFAT (Windows-95) fs support
     (437) Default codepage for FAT (NEW)
     (iso8859-1) Default iocharset for FAT (NEW)
     < > NTFS file system support
    Pseudo filesystems --->
     [*] /proc file system support        proc文件系统支持
     [ ] /proc/kcore support
     [ ] /dev file system support (OBSOLETE)
     [ ] /dev/pts Extended Attributes
     [*] Virtual memory file system support (former shm fs) 虚拟内存支持
     [ ] tmpfs Extended Attributes
     [ ] HugeTLB file system support
    Miscellaneous filesystems --->
    Network File Systems --->
     <*> NFS file system support      nfs客户端支持
     [*] Provide NFSv3 client support
     [ ] Provide NFSv4 client support (EXPERIMENTAL)
     [ ] Allow direct I/O on NFS files (EXPERIMENTAL)
     < > NFS server support       nfs服务端支持
     < > Secure RPC: Kerberos V mechanism (EXPERIMENTAL)              
     < > Secure RPC: SPKM3 mechanism (EXPERIMENTAL)               
     < > SMB file system support (to mount Windows shares etc.) samba支持
     < > CIFS support (advanced network filesystem for Samba, Window and other CIFS compliant servers)
     < > NCP file system support (to mount NetWare volumes)
     < > Coda file system support (advanced network fs)
     < > Andrew File System support (AFS) (Experimental)
    Partition Types --->
    Native Language Support --->     自己
10.Profiling support --->        没            
11.Kernel hacking --->         没选                        
12.Security options --->        没选
13.Cryptographic options --->       没选
14.Library routines --->
   < > CRC-CCITT functions
   <*> CRC32 functions
   <M> CRC32c (Castagnoli, et al) Cyclic Redundancy-Check


五、编译安装
步骤:make -jn(n代表同时编译的进程,可以加快编译速度,n由你的配置决定,我的配置用15-25)
make modules_install
make install

六、grub的设置
设置之前先介绍一下2.6的I/O调度器
2.6包含的四个I/O调度器分别是No-op I/O scheduler、Anticipatory I/O scheduler、Deadline I/O scheduler与CFQ I/O scheduler。
在后文中分别简称为ns、as、ds与cfq。

ns是一个简化的调度程序它只作最基本的合并与排序。与桌面系统的关系不是很大,主要用在一些特殊的软件
与硬件环境下,这些软件与硬件一般都拥有自己的调度机制对内核支持的要求很小,这很适合一些嵌入式系统环境。作为桌面用户我们一般不会选择它。

as是当前内核中默认的I/O调度器。它拥有非常好的性能,在2.5中它就相当引人注意。在与2.4内核进行的对比测试中,在2.4中多项以分钟为单位
完成的任务,它则是以秒为单位来完成的。正因为如此它成为目前2.6测试版中默认的I/O调度器。但它也存在着弱点,它本身是比较庞大与复杂的,
在一些特殊的情况下,特别是在数据吞吐量非常大的数据库系统中它会变的比较缓慢。

ds就是针对as的缺点进行改善而来的,还处于测试阶段,但已经很稳定了。目前表现出的性能几乎与as一样好。加之比as更加小巧,
是相当有前途的调度器,值得一试:)

cfq为系统内的所有任务分配相同的带宽,提供一个公平的工作环境,它比较适合桌面环境。事实上在测试中它也有不错的表现,
mplayer xmms等多媒体播放器与它配合的相当好,回放平滑几乎没有因访问磁盘而出现的跳帧现象。对于喜欢在Linux下听音乐看电影的朋友不妨尝试一下。

好了,下面说说怎么设置:参数的格式为elevator=调度器名

修改/boot/grub/grub.conf,在kernel那行后门加入elevator=deadline

例如:kernel /boot/vmlinuz-2.6.10-bk4 ro root=/dev/你的根分区 elevator=deadline

七、reboot


Code maturity level options (代码成熟等级 )
PHP代码:
Code maturity level options--->
[*] Prompt for development and/or incomplete code/drivers
[*] Select only drivers expected to compile cleanly
1.prompt for development and/or incomplete code/drivers.
默认情况下是选择的,这将会在设置界面中显示还在开发或者还没有完成的代码与驱动.你应该选择它,因为有许多设备可能必需选择这个选项才能进行配置,实际上它是安全的。
2.Select only drivers expected to compile cleanly(NEW)
选择这个选项你将不会看到一些已知的存在问题的驱动程序选项,默认的情况下也是选择的。如果 你有设备没有找到驱动选项,你可以将这一项去掉,或许就可以找到相关驱动了,不过它可能是有BUG的。
. General setup (普通属性设置 )
PHP代码:
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
[*] Configure standard kernel features (for small systems)--->
Support for paging of anonymous memory (swap) (NEW)
这个选项将使你的内核支持虚拟内存,也就是让你的计算机好象拥有比实际内存更多 多的内存空 间用来执行很大的程序。默认是选择的。
System V IPC
为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,这里一定要眩
POSIX Message Queues
这是POSIX的消息队列,它同样是一种IPC。建议你最好将它选上。
BSD Process Accounting
这是充许用户进程访问内核将账户信息写入文件中的。这通常被认为是个好主意,
Sysctl support
这个选项能不重新编译内核修改内核的某些参数和变量,如果你也选择了支持/proc,将能从/proc/sys存取可以影响内核的参数或变量。建议你最好将它选上。
Auditing support
审记支持,用于和内核的某些子模块同时工作,例如SELinux。只有选择此项及它的子项,才能调用有关审记的系统调用。
Kernel log buffer size (16 => 64 KB 17 => 128 KB)
内核日志缓存的大小
Kernel Userspace Events
内核中分为系统区和用户区,这里系统区和用户区进行通讯的一种方式
Kernel .config support
将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc中得到内核的配置。
Configure standard kernel features (for small systems)
这是为了编译某些特殊的内核使用的,通常你可以不选择这一选项
. Loadable module support (加载模块选项 )
PHP代码:
Loadable module support--->
[*] Enable loadable module support
[*] Module unloading
[*] Module versioning support (EXPERIMENTAL)
[ ] Source checksum for all modules
[*] Automatic kernel module loading
Enable loadable module support
很多人喜欢将全部功能、硬件支持一股脑的编进内核,而不是使用模块的方式。使用模块支持,你的系统能具有更好的可扩充性。还有一个原因就是自己编写的功 能模块、设备驱动模块(假设编写的质量不高)以模块方式工作引起Kernel Panic的机率要远远低于不支持模块全部编进内核的方式。
Module unloading
不选这个功能,加载的模块就不能卸载。没什么需要多解释的,建议最好选上。
Module versioning support (EXPERIMENTAL)
这个功能可以让你使用其它版本的内核模块
Source checksum for all modules
这个功能是为了防止更改了内核模块的代码但忘记更改版本号而造成版本冲突.
Automatic kernel module loading
这个选项能让内核自动的加载部份模块,建议你最好选上。举个例子说明一下,如模块eth1394依赖于模块ieee1394。如果选择了这个选项,可以 直接加载模块eth1394;如果没有选择这个选项,必需先加载模块ieee1394,再加载模块eth1394,否则将出错。
.Processor type and features (处理器内型及特性)
PHP代码:
Subarchitecture Type (PC-compatible)--->
Processor family (386)--->
[ ] Generic x86 support
[*] HPET Timer Support
[*] Symmetric multi-processing support
[ ] Preemptible Kernel
[ ] local APIC support on uniprocessors
[ ] Machine Check Exception
[ ] Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium
<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--->
High Memory Support (off)--->
[ ] Math emulation
[*] MTRR (Memory Type Range Register) support
[ ] Use register arguments (EXPERIMENTAL)
Subarchitecture Type
这没什么好说的,如果用PC机的话都选这个。
Processor family (386)
这也没什么好说的,选择你机器对应的处理器即可。
Generic x86 support
这一选项针对x86系列的CPU使用更多的常规优化。如果你在上面一项选的是i386、i586之类的才选这个。
HPET Timer Support
HPET是替代8254芯片的下一代时钟处理器。这里你可以安全的选上这一选项。如果硬件不支持的话,将仍使用8254时钟处理器。
Symmetric multi-processing support
对称多处理器支持,在单CPU的机器上,不选这个选项会更快一些。由于超线程技术,看起来是两颗CPU,因些要选上这个选项。
Preemptible Kernel
这个选项能使应用程序即使内核在高负载时也很可靠,建议最好选上。
local APIC support on uniprocessors
Machine Check Exception
这个选项能让CPU检测到系统故障时通知内核
Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium
打开这个选项将会检查你机器上可能存在的问题,如果有一个非致命错误出现将会自动的修复并且记录,这可以帮助你查出程序出现问题的原因,是一个不错的选项.
Toshiba Laptop support
对Toshiba本本的支持
Dell laptop suppor
对Dell的支持
/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的唯一标识符
High Memory Support (off)
如果你有大容量的内存(超过4G)你要选它,以使内核可以使用这部分内存。偶是没这命啦这部分永远为OFF,如果你有你就ON吧。
Math emulation
估计现在没人有386或486SX的处理器了吧,那就不要选这个。
MTRR (Memory Type Range Register) support
在Intel p6家族的处理器中(Ppro、 PII和更新的)有一个内存类型范围寄存器,可用来控制处理器访问的内存范围。打开它一般可以提升显卡的显示性能
.Power management options (ACPI, APM) (电源管理)
PHP代码:
[*] 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电源管理的配置界面,要注意ACPI与APM不能同时使用,如果你同时配置了这两者,那么在系统启动时如果发现一个可工作的ACPI设备那么APM将被关闭,ACPI会被加载
APM (Advanced Power Management) BIOS Support --->
高级电源管理的支持,一般来说笔记本应该选上,台式机可以不眩
CPU Frequency scaling --->
这一选项允许改变CPU的主频,使CPU在低负荷或使用电池时降低主频,达到省电的目的。
.Bus options (PCI, PCMCIA, EISA, MCA, ISA)
PHP代码:
[*] PCI support
PCI access mode (Any)--->
[ ] PCI Express support
[ ] 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
[ ] Legacy MCA API Support
[ ] Support For the mca entry in /proc
[ ] NatSemi SCx200 support
PCCARD (PCMCIA/CardBus) support--->
PCI Hotplug Support--->
PCI support
PCI支持,如果使用了PCI插槽,当然必选
PCI access mode (Any)
选Any,系统将优先使用MMConfig,然后使用BIOS,最后使用Direct检测PCI设备
PCI Express support
PCI Express总线支持
Legacy /proc/pci interface
是否使用/proc/pci目录下的信息文件来描述PCI设备的信息。现在的系统多数都使用lspci工具来得到这样的信息
PCI device name database
如果你不打算使用lspci工具,就把这项和上面的一项选上。lspci和hotplug都不需要内核中的设备信息库了
ISA support
如果你没有老式的ISA设备,老的ISA槽支持,可以不选这项
EISA suppor
扩展工业总线支持
Vesa Local Bus priming
ESA总线,也是扩展工业总线的一种,已经被PCI代替,所以不用选择
Generic PCI/EISA bridge
PCI、EISA两种总线的桥
EISA virtual root device
EISA总线的虚拟根设备
EISA device name database
内核中的EISA设备信息库
MCA support
(IBM的东东) 微通道总线.IBM的台式机和笔记本上可能会有这种总线,包括它的p系列、e系列、z系列机器上都用到了这种总线
Legacy MCA API Support
.
Support For the mca entry in /proc
.
NatSemi SCx200 support
松下的一种半导体处理器的驱动,If you don't know what to do here, say N.
PCCARD (PCMCIA/CardBus) support --->
一般只有笔记本电脑上才会有PCMCIA插槽,如果你是台式机的话,可以不选这一项
PCI Hotplug Support --->
支持PCI热插拔的.
.Executable file formats (可执行文件格式)
PHP代码:
[ ] Kernel support for ELF binaries
[ ] Kernel support for a.out and ECOFF binaries
[ ] Kernel support for MISC binaries
Kernel support for ELF binaries
这个当然y,因为目前gcc2.7.0以上的都有支持ELF了,如果没有选择这一项可能会使用相当多的程序因此无法执行
Kernel support for a.out and ECOFF binaries
a.out的执行文件是比较古老的可执行码,用在比较早期的UNIX系统上.Linux最初也是使用这种码来执行程序,一直到ELF格式的可执行码出来 后,有愈来俞多的程序码随着ELF格式的优点而变成了ELF的可执码.将来势必完全取代a.out格式的可执行码.但目前由于沿有许多的程序还没有取代过 来,所以只好选择Y,等将来有一天,全部的程序都变成了ELF的天下时,那时再disable掉
Kernel support for MISC binaries
可以让你支援別的种类的binary执行档(如:Java、Python ... etc)丟到kernel或编成module都ok
.Device Drivers
PHP代码:
[*] Generic Driver Options--->
[ ] Memory Technology Devices (MTD)--->
[ ] Parallel port support--->
[ ] Plug and Play support--->
[ ] Block devices--->
[ ] ATA/ATAPI/MFM/RLL support--->
[ ] SCSI device support--->
[ ] Old CD-ROM drivers (not SCSI, not IDE) --->
[ ] Multi-device support (RAID and LVM)--->
[ ] Fusion MPT device support--->
[ ] IEEE 1394 (FireWire) support--->
[ ] I2O device support--->
[ ] Networking support--->
[ ] ISDN subsystem--->
[ ] Telephony support--->
[ ] Input device support--->
[ ] Character devices--->
[ ] I2C support--->
[ ] Dallas's 1-wire bus --->
[ ] Misc devices--->
[ ] Multimedia devices--->
[ ] Graphics support--->
[ ] Sound--->
[ ] USB support--->
[ ] MMC/SD card support--->
[ ] InfiniBand support--->
Generic Driver Options
Memory Technology Devices (MTD)
Parallel port support
Plug and Play support
热插拔支持,当然要选择.
Block devices
ATA/ATAPI/MFM/RLL support
SCSI device support
Old CD-ROM drivers (not SCSI, not IDE)
Multi-device support (RAID and LVM)
Fusion MPT device support
IEEE 1394 (FireWire) support
I2O device support
Networking support
ISDN subsystem
Telephony support
Input device support
Character devices
I2C support
Dallas's 1-wire bus
Misc devices
Multimedia devices
Graphics support
Sound
USB support
MMC/SD card support
InfiniBand support

/*****************************************************************************************/

本文档的内容大部份内容都是从网上收集而来,然后配合一些新的截图(内核版本:V2.4.19)。在每一配置项后会有一个选择指南的部份,用来指导大家怎么样根据自己的情况来做相应的选择;还有在每一个大项和文档的最后会有一个经验谈,它是一些高手们在应对问题和处理特有硬件时的一些经验(这个还得靠各位)。文档最后会发到网上,到时会根据网友们的回复随时进行更新。
我们的目的是让我们有一个全面的、简单明了内核编译帮手。

[注:]
请大家能够发表自己的经验和想法,使本文能够不断充实!但是最好不要发一些从网cp过来的没有经过自己实践的文章!

二、配置内核:

1.Code maturity level options:代码成熟等级。
1.1.prompt for development and/or incomplete code/drivers.
如果要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。在linux的世界里,每天都有许多人为它发展支持的driver和加强它的核心。但是有些driver还没进入稳定的阶段。但其作者很欢迎其他人去测试这些driver并提出一些 bugs。这个问题是说,有一些drive还在做测试中,问您是否要选择这些drive或支持的程序码。如果键入Y,往后将会出现一些还在测试中的东西给您做选择。(像Java的程序码和PCI bridge),台则就键入N。

经验谈:

2.Loadable module support:对模块的支持。
预备知识:
模块就像你特意插入核心中的某些东西,如果办公室有一个小网络并且有时想用一下(但并不经常),也许你想把网卡编译成一个模块。使用这个模块,机器必运行和存取/libs下的模块,意思是驱动程序(IDE,SCSI等但必须是NFS支持的网卡),文件系统(通常是ext2但也可以是nfs)和核心类型(最好是elf)必须编译在内核并且不能是模块,模块只有核心引导时才起作用,驱动程序(来网络)的存取,和文件系统安装。这些文件必须编译在核心内否则将能安装启动分区。如果安装启动分区和网络,你需要网络系统文件,和己经编译的网卡。为什么要使用模块? 模块化使核心变的更简捷,它减少核心释放大量的受保护的空间。模块的安装和卸载使用的空间是可重复分配利用的。如果你打开机器有90%以上的时间用到一个模块,编译它。运用这类模块是浪费内存的,原因是一旦你编译了模块它们同样将占用大量的内存,核心需要一些代码来挂上模块。记住,核心在保护空间运行,但模块并不是。这么说,并不经常使用我的设备,把它编译成只支持ext2,ide和elf。而一直使用的网卡,把其它的编译成模块:如a.out, java, floppy, iso9960, msdos, minix, vfat,smb,nfs,smcultra(ethernetcard),serial,printer,sound,ppp,等等。它们许多只是在这或那用上那么几分钟。严格的说,这样做会使核心增大许多而降低它的执行速度。这时我们就可以把这些可能会用的驱动程序编译成一个—个的模块,在需要用的时候才用insmod这个指令加入核心,不用的时候也能rmmod把它从核心移除,或是用lsmod察看目前所载入的模块。
2.1.Enable loadable module support.
除非准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。
2.2.Set version information on all module symbols.
通常,我们更新核心版本之后,模块耍重新的编译。这个选项使您不必更新编译模块而能使用以前的模块。可以不选它。但如果您选y,则按照它的说明,您必须有genksyms这个程序(可用whereis指令查看有无此程序)。
2.3.Kernel module loader.
让内核在启动时有自己装入必需模块的能力,建议选上。注意:在开机就会 mount 上来的 partition 的 FS 、device driver 记得要 compiler 进 kernel,不能把它弄成 modules。请不要夸张到为了完全模组化而忘了把ext2fs和IDE dirver compiler 进 kernel 里。

经验谈:
a.可加载模块是指内核代码(kernel code)的一些片断,比如驱动程序,当编译内核的时候它们也被单独编译。因此,这些代码不是内核的一部分,但是当你需要它的时候,它可以被加载并使用。通常的建议是如果可能,将内核代码编译成可加载模块,因为这样可以使内核更小,而且更稳定。 警告!千万不要将文件系统(File System)部分的代码编译为可加载模块,如果你犯了这个错误,将文件系统(File System)部分的代码编译为可加载模块,结果将是内核无法读取它自己的文件系统。然后内核无法加载它自己的配置文件——一些很明显是在正常启动linux时所必需的东西。我很少使用可加载模块:我喜欢我的内核能够直接和硬件对话,但这只是我自己的偏好。


3.Processor type and features:处理器类型和特色。

3.1.Processor family.
它会对每种CPU做最佳化,让它跑得快又好。一般来说,没有选择正确的CPU并不会有重大的影响(特别是选择386 ,这样编译出来的核心也许会比较小但它的速度可能就会变慢了)。所以,最好要知道您的CPU是哪一种。不过,如果您的gCC编译器是2.7.0版以前的。那么只能选择386或是486。通常"/dev/cpu"选项更高级,多数用户并不需要选择它。
3.2.High Memory Support.
只有当你的计算机有超过1GB内存(不是磁盘空间)时才是必须的。 多数计算机的内存从64到512MB(并且拥有8到60GB硬盘空间),因此"High Memory Support"通常并不使用。
3.3.Math emulation.
这项询问是否需L1nux核心模拟数学浮点运算器。如果有486Dx、AMD以及Pentium机器的话,这个选项就不必选了,因为它们都有内建的浮点运算器。协处理器是在386时代的宠儿,现在早已不用了。不过,对于有内建浮点运算器的人来说,选了这个选项并不会因此让内建的浮点运算器失效。但它会增大核心约45KB。
3.4.MTTR (memory type range register)support.
这项允许在PCI或者AGP总线众进行更快速的通讯。 由于现在所有系统都将它们的显卡接在PCI或AGP总线上,你通常需要选择"MTRR":无论如何,打开这个选项通常都是安全的——即使你的机器没有使用PCI或AGP总线的显卡
3.5.Symmetric multi-processing support.
选项保证内核能够以最佳方式加载多处理器。除非有多个CPU,否则就不用选了。
3.6.Mutiquad NUMA system.
通常也需要多处理器,但它通常是关闭的。

经验谈:

4.General setup:常规内核选项。
4.1. Networking support.
通常每个人都会选择"Networking support",因为你通常需要它,比如Internel。 linux有很重的Internet偏向,而且它在没有联网的情况下无法充分发挥优势。另外,许多其他的操作也网络支持——即使它们看上去跟网络没多大关系。内核在没有网络支持选项的情况下甚至无法编译。简而言之:一定要打开"Networking support"选项。
4.2. PCI support.
现在的所有系统都使用PCI总线,所以你应该选择相关选项。
4.3. PCI access mode.
PCI存取模式。可供选择的有BIOS、Direct和Any,选Any吧。
4.4. Support for hot-pluggabel devices.
热插拔设备支持。支持的不是太好,可不选。
4.5. PCMCIA/CardBus support------>PCMCIA/CardBus support.
有PCMCIA就必选了。
4.6. System V IPC.
如果将来想编译dosemu(DOS模拟器),则这个选项一定要选,它是一个让各个程序(process)同步且能彼此交换数据的函数库和一些系统的调用,没它,很多的程序将会无法执行。
4.7. BSD Process Accounting.
4.8. Sysctl support.
除非你的内存少的可怜,否则你应该启动这个功能,启用该选项后内核会大8K,但能让你直接改变内核的参数而不必重新开机。以上三项是有关进程处理/IPC调用的,主要就是System V和BSD两种风格。如果你不是使用BSD,就按照缺省吧。
4.9. Kernel core (/proc/kcore/) format.
现在的linux发行版以ELF格式作为它们的"内核核心格式"。
4.10. Kernel support for A.OUT binaries.
a. out的执行文件是比较古老的可执行码,用在比较早期的UNIX系统上。linux最初也是使用这种码来执行程序,一直到ELF格式的可执行码出来后,有愈来俞多的程序码随着ELF格式的优点而变成了ELF的可执码。将来势必完全取代a.out格式的可执行码。但目前由于沿有许多的程序还没有取代过来,所以只好选择Y,等将来有一天,全部的程序都变成了ELF的天下时,那时再disable掉。
4.11. Power Management support.
电源管理支持。
4.12. Advanced Power Management BIOS support.
高级电源管理BIOS支持。这通常是用在笔记本电脑上的东西,如果您有APM的BIOS,支持省电的设备的(有电池的那种),那么您可以选上这项,一般人这一项是选n,以避免一些可能会发生的问题。后有8个选项。ATX主板需要这两个选项来自动关闭计算机(turn off the computer,包括关闭电源)。

经验谈:


5.Memory Technology Devices (MTD):配置存储设备。
5.1. Memory Technology Devices (MTD) support.
你需要这个选项来使linux可以读取闪存卡(Flash Card)之类的存储器。 闪存卡通常用于数码相机。通过这个选项,Linux可以读取闪存卡(从特殊的设备中,比如读卡机),并且将图片保存为.jpg格式。除非你确定你需要它,否则不必打开它:如果你发现自己需要,你可以在以后加上。
6.Parallel port support:配置并口。
6.1. Parallel port support.
如果不打算使用,就别选了。

7.Plug and Play configuration:即插即用支持。
7.1. Plug and Playsupport.
几乎所有人都有即插即用设备,因此需要这个选项的支持。 打开这个选项使内核能够自动配置即插即用设备并且使它们在系统中能够使用。 有时需要在BIOS中打开"Plug & Play OS",否则linux(当然Windows也一样)无法配置即插即用设备。
7.2. ISA Plug & Play support.
选项需要以即插即用模式运行的ISA卡(ISA Card)。 例如AWE64声卡。ISA总线(ISA bus)从来都没有即插即用标准,这增加了配置这些板卡的难度。在2.4.x内核之前的早些时候,linux用户在启动时必须呼叫(call)"isapnp"程序(isapnptools包,使用rpm qil isapnptools查看包含的所有文件)。 "isapnp"读取"/etc/isapnp.conf"文件。这个文件包含不同板卡使用的所有端口,地址和中断。如果/etc/isapnp.conf中的信息不正确,或者"isapnp"没有被激活,即插即用设备就无法使用,甚至网卡、modem、声卡也无法工作。 打开"ISA Plug & Play support"选项来代替以前的工序:不再需要/etc/isapnp.conf文件。检测和配置工作都自动进行。 在SuSE 7.1中,在编译2.4.x内核后我必须重命名/etc/isapnp.conf为"/etc/isapnp.conf.old"之类的名称。因为内核和 "isapnp"使用相同的资源,造成很惨的后果。 问题在于SuSE 7.1(以及更老的版本)在启动时自动激活"isapnp",即使内核已经包括了对即插即用的必要支持。这只是对于老Linux系统而言,新的系统默认不使用"isapnp"。

8.Block devices:块设备支持。
8.1. Normal PC floppy disk support.
普通PC软盘支持。每个人都要使用软盘(floppy),所以这个选项要打开(或者,象我这样,作为一个可加载模块)。倘若 /etc/modules.conf或者/etc/conf.modules文件在你的linux发行版中已经被适当配置了,当需要访问软盘的时候,内核会自动加载必须的模块。其他的选项在你使用并口链接IDE存储设备的时候是必需的,但是它们通常是关闭的。"loopback device support"选项可能例外。在Linux下,刻录(burn)光盘之前你通常需要制作一个光盘镜像,在查看镜像文件的内容时需要"loopback device"。 我选择了这个选项作为可加载模块。
8.2. XT hard disk support.
支持XT的古董硬盘,这是IBM电脑时代的东西,如果您还有这种很旧很旧的硬盘。那么,您可以把它编进核心或是编成一个模块。大部分的人这个选项都是选择N的。
8.3. Loopback device support.
这个选项的意思是说,可以将一个文件挂成一个文件系统。如果要烧光盘片的,那么您很有可能在把一个文件烧进去之前,看看这个文件是否符合IS09660的文件系统的内容,是否符合您的需求。而且,可以对这个文件系统加以保护。不过,如果您想做到这点的话,您必须有最新的mount程序,版本是在2.5X版以上的。而且如果您希望对这个文件系统加上保护,则您必须有des.1.tar.gz 这个程序。注意:此处与网络无关。

9.Multiple devices driver support:多设备驱动支持。
9.1. Multiple devices driver support.
普通linux用户通常不需要RAID(廉价冗余磁盘阵列)或者LVM支持。 "RAID"的意思是系统使用两块或两块以上硬盘存储并行信息。当一块磁盘出现问题的时候另一块可以继续工作,系统不停顿。 LVM让使用增加一块硬盘来扩展一个分区成为可能。。在实际应用中,这意味着你不必重新分区或将一个小的分区复制到一个大分区中。 路径名也不会改变。 这可能会十分方便,但是普通用户并不需要它。

10.Networking options:网络选项。
10.1. Packet Socket.
选择"Y",你需要这个选项来与网卡进行通信而不需要在内核中实现网络协议。 在这里我可以简捷一些:一般情况下,打开这个选项。 大多数选项是关闭的,除非你需要特殊的支持。
10.2. TCP/IP networking.
选择"Y",内核将支持TCP/IP协议。这个选项无论如何请您选择Y,即使没有网络卡,或是没有连到网络上的设备,在linux上仍有所谓的 lookback设备而且有些程序需要这个选项。在说明文件中提到,如果您没有打开这个设定,则X-window system可能会有问题(回为它也需要 TCP/IP)。
10.3. IP:multicasting.
所谓的 multicasting是群组广播,它是用在视频会议上的协议,如果想送一个网络封包(网络的数据),同样的一份数据将送往十部机器上。您可以连续送十次给十台机器(点对点的传送),也可以同时送一次,然后让十台机器同时接收到。当然后者比前者好,由于视频会议要求是最好每个人都能同时收到同一份信息,所以如果您有类似的需要,这个选项就要打开。同时您还必须去找相关的软件。

经验谈:
a. 我选择了"Network packet filtering (replaces ipchains)",因为我使用了SuSE的标准防火墙(Standard Firewall)。 防火墙可以保护你的机器不受来自外部Internet的攻击——至少当你正确配置了防火墙的时候是如此。内核级的防火墙保护显然是十分优越的。为了使防火墙能够正常工作,SuSE linux需要对ipchains的兼容支持(Backwards Support)。 因此,我为我的SuSE Linux打开了这个选项。 如果你也在其他发行版中使用了防火墙,请参考它们的手册。你需要"Unix domain sockets"来进行网络链接,但也可以使用其他的东西: XWindow要自动使用Unix sockets,所以如果没有打开这个选项,XWindow将无法启动。 通常这个选项是打开的。 "TCP/IP networking"选项包括了Internet和内部网络所需要的协议。 通常你会希望激活TCP/IP支持。如果你不确定是否应该打开一个选项,参考一下帮助文档。 如果你还是不知道是否应该打开它,一般来说,就把它打开,然后通过试用来决定是否保留。将某些特定的选项编译为模块也是一个很好的办法。

11.Telephony Support:电话支持。
11.1.linux Telephony Support.
这个选项只有当你在计算机中使用电话卡的时候才有用,比如在Internet上打电话。 大多数普通用户没有电话卡,因此不需要这个选项。



12.ATA/IDE/MFM/RLL support:配置对ATA,IDE,MFM和RLL的支持。
12.1. ATA/IDE/MFM/RLL support.
几乎每个人都需要这些协议,除非你的机器只有SCSI硬盘而没有其他任何类型的硬盘。 因此,大多数用户都应该把它打开。 点击它下面的那一栏将会出现一个有更详细配置选项的菜单。仔细填写它们:它们极为重要!
12.2.Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support.
选项是每个使用IDE/ATAPI界面的人都需要的。 包括硬盘,磁带机,ZIP盘,光驱(CDROM)和刻录机(CD-R(W))。 基本上现在的所有计算机(译者注:这里指的是PC)都使用IDE/ATAPI界面,因此这个选项必须打开。
12.3. Include IDE/ATA-2 DISK support.
选项在支持硬盘的时候需要。 因此这个选项也必须打开,除非你的机器是一个纯粹的SCSI系统。
其它的就使用缺省的选项吧,如果你使用了比较特殊的设备,比如PCMCIA等,就到里面自己找相应的选项吧。

经验谈:
a. 如果你有ATAPI CDROM的话,应该打开"include IDE/ATAPI CDROM support"选项。 ATAPI的CD-R(W)需要仿真为SCSI的才能被访问。SCSI仿真可以用来访问CDROM和CD-R(W)。如果你使用仿真SCSI的方式来访问CDROM,你将会遇到问题,比如当你挂载(mount)CD的时候出现错误信息(Error Message),或者使用CDROM播放CD唱片(Audio CD) 最好的办法是象图这样,将"include IDE/ATAPI CDROM support"和"SCSI emulation support"选项都打开。需要SCSI仿真的设备通常是CD-R(W),可以在/etc/lilo.conf中加入"append="hdd=ide-scsi":"行进行定义,这将在"配置lilo"中进行讨论。 因为我有一个使用ATAPI界面的内置ZIP驱动器,所以我把"include IDE/ATAPI FLOPPY support"选项打开。 如果你有软盘类的驱动器(译者注:包括ZIP盘、LS-120等大容软驱,但不包括MO磁光盘)。大部分主板使用"PCI IDE"(译者注:就是指通过占用PCI总线带宽进行通信的IDE接口)对硬盘、CDROM和软驱进行访问,因此这个选项必须打开。同样的有两种开启DMA的可能性。 DMA使你的硬件直接访问内存,而不需要处理器的干预。 因此,正如你所希望的,IDE磁盘的访问速度会加快。 "sharing PCI IDE interrupts support"是关闭的,因为你通常不需要它。的确,某些IDE控制器允许和其他设备共享中断,比如网卡。不幸的是,共享IDE中断会使磁盘性能下降,因此通常你不需要共享中断,除非这是解决硬件问题的唯一办法。


我的主板有一颗Pentium II CPU,而且使用的是Intel的芯片组,因此我希望能够对该芯片组提供特殊支持。 当你选择你自己的内核选项时,你应该看看图没有显示的其他芯片组。

13.SCSI support:SCSI设备的支持。
13.1. SCSI support.
如果你有一块SCSI卡,你当然需要打开相关选项。这张截图只显示了当你为你的CD-R(W)选择"SCSI emulation support"

13.2. SCSI disk support.
指硬盘而言,如果有SCSI硬盘,那么就要选这个选项。
13.3. SCSI tape support.
指磁带机而言,如果您有SCSI的磁带机,那么就要选这个选项。
13.4. SCSI CDROM support.
指CDROM,如果您有SCSI光驱,这一项一定要选。
13.5. SCSI generic support.
指其他有关SCSI的东西,也许您有一台SCSI的扫描器或是烧录机,或是其他有关SCSI的配备,您就要选这一项。而且,除此之外,您还必须准备关于这些配备的软件。
13.6. Probe a11 LUNs on each SCSI device.
通常这个选项大部分的人都不会选。我们举个例子来说,如果您的SCSI光驱是那种多片装的,就是一台光驱,但可以一次放好几片光盘片的那种。这种我们叫做Lun。I2O Device Support:配置I2O设备支持。
13.7. Verbose SCSI error reporting(kernel size+=12K).
如果认为您的SCSI硬件配备有些问题,想了解一下它出现的错误信息。那么您可以把这个选项选y,linux核心会告诉您有关于您的SCSI配备的问题(如果有的话)。不过,它会增加核心约 12KB左右。
13.8. SCSI low—level drivers.
下面总共有接近30张的SCSI卡,您可以依需求做选择SCSI卡牌子。

14.I2O Device Support:I20设备支持。
14.1. I2O Device Support.
如果你有I2O界面,你必须选择这个选项。大多数人没有,如果你也没有的话,可以直接将它关闭。

15.Network Device Support:网络设备支持。
15.1. Network Device Support.
网络设备支持。上面选好协议了,现在该选设备了,可想而知,内容肯定多得很。还好还好,里面大概分类了,有ARCnet设备、Ethernet(10 or 100 Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support几大类。我用的是10/100M的以太网,看来只需要选则这个了。还是10/100M的以太网设备熟悉,内容虽然多,一眼就可以看到我所用的RealTeck RTL-8139 PCI Fast Ethernet Adapter support,为了免得麻烦,编译到内核里面好了,不选M了,选Y。耐心点,一般说来你都能找到自己用的网卡。如果没有,你只好自己到厂商那里去要驱动了。
15.2. Dummy net driver support.
如果有SLIP或PPP的传输协议,那么要把这一项打开。因为一来它不会让您的linux核心增大。二来,对某些应用程序来说,它可以让我们模拟出来的TCP/IP环境更像TCP/IP环境。如果您没有SLIP或PPP 协议,就不用打开了。#EQL(serial line load balancing) support------如果有两个MODEM,两条电话线而且用SLIP或PPP协议,可以用这个Driver以便让您的MODEM有两倍的速度。当然,在网络的另一端也要有同样的设备。
15.3. PPP(point-to-point)support.
点对点协议,近年来,PPP协议已经慢慢的取代SLIP的规定了,原因是PPP协议可以获取相同的IP地址,而SLIP则一直在改变IP地址,在许多的方面,PPP都胜过SLIP协议。
15.4. SLIP(serial line) support.
这是MODEM族常用的一种通讯协议,必须通过一台Server(叫ISP)获取一个IP地址,然后利用这个IP地址,可以模拟以太网络,使用有关TCP/IP的程序。
15.5.1. Ethernet(10 or 100Mbit).
如果您使用网络卡,那么这个选项一定要选y,否则以下对网络卡的选择将不会出现。或是您有网络卡,这时您同样的也要选y。之后,下面会列出许多网络卡让您选择。像我们平常用的都是NE2000相容卡。
15.5.2. EISA, VLB, PCI and on board controllers.
选择网络卡,包括直接附在主机板上的那种。如果选择y,则底下会列出其他的网络卡让您做选择,这些卡对于一般人来说很少会去用到。所以大部分的人这项是选N的。
15.5.3. Pocket and portable adaptors.
通常用在可携式的电脑上,这类型的网络卡(口袋型的),由于体积很小在安装和取下方面很方便,因此笔记本相关电脑上便常常采用这种网络卡。
15.5.4. Token Ring driver support.
Token Ring是 IBM电脑上的网络。它叫令牌环网络,和以太网络是很类似的东西。如果您希望使用的Token Ring网络卡以便连接到这种网络,那么选Y,一般人都选N。
15.5.5. ARCnet support.
这也是一种网络卡,通常一般人用不到,所以选n。如果您有这样的网络卡,请看Documentation/networking/arcnet.txt的说明。

经验谈:这一般是新手难办的一个地方。
a. 我从来都没有在没有网卡支持的情况下将linux内核编译成功过。 因此,你应该打开这个选项。 你还应该打开虚拟驱动(Dummy Driver),作为内核的一部分或者一个可加载模块。 当没有物理网卡的时候,Linux需要一块虚拟网卡(Dummy Network)。即使已经有了物理网卡,Linux仍然经常使用虚拟网卡。 在图所示的菜单中,你可以选择网络类型和网卡。注意,如果你想要通过modem来访问Internet的话,你需要进行更多的设置: 你必须打开"PPP support for async serial ports"(用于COM端口)或者"PPP support for sync tty ports"(用于通过诸如SyncLink adapter进行的高速连接)选项以提供PPP支持。 如果你没有打开它们,内核将会告诉你PPP模块(PPP Module)不存在——即使你已经编译了,错误信息(Error Message)对于查找真正问题的所在几乎没有作用。你可以将它们都选上,这样可以避免一些问题:如果内核需要它们,就会使用它们,如果不需要,就不用。
我的以太网卡是一块使用 3c509/3c529芯片的3COM百兆网卡。因为我并不需要与网络进行物理连接(我有网卡,但是我并不通过modem来访问网络),因此我将这个趋同编译成一个可加载模块,以便万一要需要网卡的时候可以使用。 你当然需要选择与你机器的情况相符的网络类型和网卡。另外,你必须使用诸如SuSE linux下的"yast2"之类的配置程序配置网络链接。

16.Amateur Radio support:配置业余广播支持。
16.1. Amateur Radio support.
如果你希望使用业余广播支持,应该打开这个选项,并且打开相应的驱动。 多数人不需要这个选项。

17.IrDA(infrared)support:配置红外线(无线)通讯支持。
17.1. IrDA(infrared)support.
如果你有无线设备,比如无线鼠标或无线键盘,你应该打开这个选项。 多数桌面机器不需要这个选项。

18.ISDN subsystem:配置ISDN。
18.1. ISDN support.
如果使用ISDN上网,这个就必不可少了。ISDN(Integrated Services Digital Network),它的中文名称是综合数字服务网络,是一个利用电话线,把声音,影片信息以数字的方式传送的数字网络,它需要电话交换机设备有支持 ISDN,这通常需要电信局来做安装,对于在家工作的人来说,ISDN可能是最舒适最便宜的一种方式,因此有愈来愈多的人使用它。不过,除非是公司,不然一般人很少会使用到ISDN的,所以这部分的选项大都选N。如果您选择Y,则下面会出现一些有关ISDN的问题。如果需要用到ISDN,可以去看看杂志的介绍。只要是有关网络的杂志应该都会有介绍。还需要启用Support synchronous PPP选项(参考PPP over ISDN)。

19.Old CD-ROM drivers(not SCSI、not IDE):配置老CDROM。
在486和386机器中,CDROM并不是通过硬盘IDE(ATAPI)控制器连接的,而是通过声卡或一块特殊的板卡。 使用这些老CDROM需要选择对应的驱动。 这个选项在现在的系统中显得多余。

20.Input Core Support:
这个选项提供了2.4.x内核中最重要的特性之一的USB支持。 Input core support是处于内核与一些USB设备之间的层(Layer)。如果你拥有其中一种USB设备,你必须打开"input core support"选项。 现在所有的主板都有USB接口,所以,原则上你应该打开它。

21.Character devices:字符设备。
21.1. Virtual terminal.
选择"y",内核将支持虚拟终端。
21.2. Support for console on virtual terminal.
选择"y",内核可将一个虚拟终端用作系统控制台。
21.3. Standard/generic (dumb) serial support.
选择"y",内核将支持串行口。标准序列接口的选定。如果您是用serial的鼠标(大部分的人都是用这个),或是MODEM的话,则这一项一定要选。大部分的人这一项都选y。
21.4. Support for console on serial port.
选择"y",内核可将一个串行口用作系统控制台。
21.5. I2C support.
I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面的Video For linux,该项必选。
21.6. Mice.
鼠标。现在可以支持总线、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad------根据需要选择。非串行的鼠标,支持象PS/2。看一看你鼠标的键。许多双键鼠标是PS/2,即使它们的连接看起来象串行的。
21.6.1. PS/2 mouse (aka "auxiliary device") support.
如果用户使用的是PS/2鼠标,则该选项应该选择"y"。
21.7. Joysticks.
手柄。即使在linux下把手柄驱动起来意义也不是太大,游戏太少了。
21.8. Watchdog Cards.
虽然称为Cards,这个可以用纯软件来实现,当然也有硬件的。如果你把这个选中,那么就会在你的/dev下创建一个名为watchdog的文件,它可以记录你的系统的运行情况,一直到系统重新启动的1分钟左右。有了这个文件,你就可以恢复系统到重启前的状态了。

经验谈:
a.
最上面的选项("virtual terminal")允许在XWindow中打开xterm和使用字符界面登录。 通常这个选项是打开的。第二个选项("support for console on virtual terminal")告诉内核将诸如模块错误、内核错误启动信息之类的警告信息发送到什么地方,在XWindow下,通常设置一个专门的窗口来接收内核信息,但是在字符界面下,这些信息通常被发送到第一个虚拟终端(Virtual Terminal)(CTRL+ALT+F1)。 将这个选项打开。 你还可以选择将信息发送到串口(Serial Port)设备,比如打印机或其他的终端(第四个选项)。 如果将信息发送到打印机,你还必须使用选项三激活串口。同样,如果你使用串口鼠标(Serial Mouse),你也必须激活串口。 再说一遍,选项三("standard/generic (8250/16550 and compatible UARTs) serial support")通常是打开的。在我的系统中,我将它编译为一个可加载模块。原因是在启动的时候SuSE老抱怨"serial support"丢失,而如果确定模块的确存在,将其编译为可加载模块是避免上述抱怨的的好办法。 配置字符型设备是极为重要的工作。如果你的配置不正确,你有可能得到一个根本不能工作的系统。
如果你想使用远程使用自己机器上的xterm,比如通过telnet或者ssh,你必须打开"unix98 PTY support"选项。 桌面系统看上去似乎不需要这个选项,但是许多后台进程需要使用这个选项。因此,无论如何,将它打开是个好主意,至少可以避免启动时显示错误信息(至少SuSE是这样)。 所有拥有并口打印机的人当然需要"Parallel printer support"。 不过,并不是所有人都需要并口:USB打印机就不需要。 内核信息可以通过打开"Support for console on line printer"选项传送到并口:通常,你并不需要它。 如果你有某些设备需要占用并口,你需要"support for user-space parallel port device drivers"选项,但是通常不必。 同样,你通常不需要"I2C support"选项:这是视频处理卡所需要的,但是如果你发现你需要它,你通常可以在以后加入到内核中——只要你觉得内核运行得好。如果你使用鼠标和游戏杆,你需要打开相应的支持,但是并不是所有鼠标都使用这个驱动。 现在的CD-R(W)使需要"QIC-02 Tape support"的磁带机(Tape Drives)大量闲置,因此这个选项通常是关闭的。

如果你使用串口鼠标,你根本不需要这个选项的任何项目,但是所有其他类型的鼠标则需要在这里进行参数配置。 如果你使用最初的总线鼠标(ORIGINAL Bus Mouse)你需要打开最上面的选项。 现在的许多计算机使用另外一种鼠标,通常(而且是错误的)称作"busmouse"或者"PS/2鼠标"。这些鼠标通常连接到/dev/aux,并且插在一个与键盘相同的小接口中。 通常,这种鼠标通过键盘来连接到计算机。要让这些鼠标正常工作,你必须打开如图29所示的选项,"mouse support (not serial and bus mice)"和"PS/2 mouse (aka "auxiliary device" support)"。这些是上面没有讨论的内核选项。它们通常是关闭的。 "Ftape, the floppy tape device driver"选项需要对连接到软驱控制器的磁带机的支持。甚至即使你有一个那样的磁带机,这个选项都不是必须的,至少不是首要的。 其他选项需要3D显卡。 如果你有一块连接到AGP总线(AGP Bus)的显卡,你需要打开AGP支持,还需要相应的驱动(在/dev/agpgart(AGP支持))。注意,你可以编译一个不包含这些选项,但是能够正常工作的内核,但那没必要! 如果没有这些选项,XWindow 4.0或者更高版本(被现在的多数发行版使用)将无法工作。 我的机器有一块AGP显卡,nVidia TNT2,但是内核的相应模块并不支持这块显卡(nVidia拒绝透露开发驱动所必须的技术细节)。 很不幸,打开AGP支持对于我来说没有多大意义。虽然有这个问题,我仍然可以在不需要内核驱动的情况下使用XWindow 4.0。 "Direct rendering support"是为XWindow 4.0提供的图形加速选项。 要想使用这个选项,你的显卡必须能够被支持,而且你必须使用XFree86 4.0及以上版本。 另外,你还需要打开"AGP support"选项。 你可以编译一个不包含这些选项的内核,它照样可以正常工作。

22.Multimedia Devices:配置多媒体设备。
如果你有一块视频处理卡或者广播卡,需要打开这个选项。 跟前面一样,这个选项不是必需的。

23.File System:配置文件系统。
23.1. Kernel automounter support.
选择"y",内核将提供对automounter的支持,使系统在启动时自动 mount远程文件系统。
23.2. DOS FAT fs.
DOS FAT文件格式的支持,可以支持FAT16、FAT32。这个选项是DOS的文件系统,如果您没有选y,则下面的MSDOS,VFAT,umsdos将不会出现。
23.3. MSDOS fs support.
如果你想要在 linux 下使用你硬盘中的 MS-DOS 分割区,或是想将用 MS-DOS 格式化的磁盘挂进来的话,回答y 。
23.4. FAT(Windows95) fs support.
windows95所支持的文件系统,是我们常说的vfat文件系统,如果您的系统中装有windows95,那么选择这个文件系统将对以让您看到windows95的长文件名。
23.5. umsdos: UNIX like fs on top of std MSDOS FAT fs.
如果把linux装进DOS的一个目录下那么您则要选择这一项。不建议这样做,因为如此一来,就不能看到长文件名了。而且效率上不是很好。
23.6. Quota support.
Quota可以限制每个用户可以使用的硬盘空间的上限,在多用户共同使用一台主机的情况中十分有效。
23.7. /proc file system support.
这是最 slick 的文件系统之一。它不是你硬盘分割区里的任何东西,不占用硬盘的空间,而是核心与程序之间的文件系统介面,它表示的只是内存里头的状况和各个程序执行的情形,它也记录了您硬件上配备。。许多程序工具(像″ps ″)都会用到它。如果已经将它安装好了,有空不妨试试看″cat /proc/meminfo ″或者是″ cat /proc/devices ″。有些 shells ,像是 rc ,会用 proc/self/fd(在其它系统上为 /dev/fd )来处理输出入。几乎可以确定你在这里得要回答y ,有许多重要的 linux标准工具是靠它来运作的,否则有些指令会出问题。
23.8. ISO 9660 CD-ROM file system support.
光盘使用的就是ISO 9660的文件格式。
23.9. NTFS file system support.
ntfs是NT使用的文件格式。
23.10. UFS filesystem support.
这是BSD,SunoS,FreeBSD,NetBSD或Nextstep所使用的文件系统。如果您在电脑上有这些操作系统的话,那么可以选这一项。否则一般人都选n。

23.11. Network File Systems:网络文件系统。
23.11.1. NFS file system support.
如果你在网络环境下而且想要分享档案,回答 y 。如果希望挂上别的电脑的文件系统,那么这个选项一定要选进去。它可以让您利用网络把别人的硬盘当成自己的来使用(把它变成一个目录)。对于一般人来说,这个选项是选y。
23.11.2. SMB filesystem support.
这个文件系统让您可以挂上windows95或windowsNT的文件系统,也就是您也可以抓到在windows下,网上邻居上的电脑。
23.12. Partition Types.
分区类型,该选项支持一些不太常用的分区类型,用户如果需要,在相应的选项上选择"y"即可。
23.13. Native Language Support:本地语言支持。

经验谈:
a.
在这里,你可以指定linux能够访问的文件系统。或许你希望制作一个能够访问Windows分区和Windows软盘的内核,但是你必须保证内核可以访问Linux自己的ext2文件系统,或者是更新的 ReiserFS文件系统。如果你没有这样做,Linux会无法启动,因为内核无法读取它自己的启动盘。要想访问DOS/Windows软盘和分区,你需要打开"DOS FAT support"选项:但是要想访问Windows NT/2000的分区,你需要另外一个只读(Read-only)驱动,这将在后面进行选择。要想读写DOS/Windows分区和软盘,你需要打开"MSDOS fs support"选项(注意,"DOS FAT support"并不提供读写功能)。 事实上,每个人都希望这样,因此通常这个选项是开着的。 "VFAT"需要Windows95/98的长文件名支持。我的机器是一个可以通过lilo启动Windows 98和Linux的双重启动系统(dual boot system)。 因此,我需要激活"VFAT"。 你需要加入对ISO 9660的支持来读取标准格式的光盘(CD)。 "Joliet extensions"选项允许在ISO 9660标准中使用长文件名。多数人都希望能够读取现在的光盘,因此这些选项通常也是打开的。 图详细讲述了一些附加选项,其中包括包括Linux的ext2文件系统。

/proc 目录中的文件包含了关于系统状态的许多重要信息,比如那些中断正在使用。 一般来说,你应该把这个选项("/proc file system support")打开。。 "Second extended fs support"选项针对linux的标准文件系统(Ext2 FS)你必须打开这个选项,并且编译进内核(不是作为可加载模块)!图32和33没有显示"ReiserFS"选项,它也可以在这里打开:Ext2文件系统的继承者,ReiserFS能够更好的对付由于断电或者类似情况而带来的对文件系统的破坏。 目前ReiserFS仍然处于开发阶段,因此被标志为试验代码。即使是这样,多数发行版现在都已经支持ReiserFS,但是,虽然ReiserFS被认为会在将来取代Ext2,我现在并不推荐将它作为所有分区的文件系统。 如果你(在Windows下)使用一个叫"packetCD"的将光盘虚拟成低速磁盘的软件,你需要打开"UDF file system support"选项 这对在与其他PC交换数据时十分方便。在Linux下通过将这些被封包的光盘挂载(mount)为UDF文件系统也可以进行读取,比如使用命令"mount -t udf /dev/scd0 /cdrom"。 这一部分还包括"Network file systems"、"partition types"和"Native language support"选项。 你不必选择"Network file systems",除非你的计算机处于一个需要使用"Network file systems"选项的大型网络之中,"SMB file support"选项也是一样,对于普通的单机(Standalone Computer)来说,并不需要这些选项。 "Partition Types"选项是一个很高级但对于有效的使用Linux内核来说并不必要的选项。 最好是关闭它。
b.不知道需要那些文件系统怎末办?
键入″ mount ″它看起来会像这样:
sunlyy% mount
/dev/hda1 on / type ext2 (defaults)
/dev/hda3 on /usr type ext2 (defaults)
none on /proc type proc (defaults)
/dev/fd0 on /mnt type msdos (defaults)
仔细看看每一行;在" type "后面的那个字就是文件系统的格式。在这个例子中,我的 / 和 /usr 分割区是 second extended 格式,我使用 /proc ,而且挂有一张以msdos (bleah) 为文件系统格式的磁片。如果你有使用 /proc ,可以试试″cat /proc/filesystems ″。它会给你一份目前使用的核心所支援的文件系统列表。

24.Console drivers:配置控制台驱动。
24.1. VGA text console.
选项在VGA模式下启动字符模式。 多数人都需要它,因此这个玄学爱你跟通常是开着的。 只有一些386计算机没有VGA兼容显卡,选择这个选项对于现在的多数计算机来说都没有问题。
24.2. video mode selection support.
使启动的时候能够使用字符模式的分辨率。 如果你希望一行能够有更多的字的话,这通常会给你提供方便,不过通常你不必打开它们。 下面两个选项是试验性质的,我建议你关闭它们。
25.Sound sound:声卡驱动。
在这部分,你可以配置声卡。 如果你的linux发行版使用ALSA的声卡驱动(比如SuSE 6.3及以上版本),将"sound card support"作为可加载模块就足够了。 ALSA驱动将会在待会儿被编译并连接进来(见"SuSE和ALSA声卡驱动")。如果你的发行版使用的是内核的标准声卡驱动,你必须正确选择你使用的声卡。 事实上,这里列出了所有牌子的声卡,因此,理论上选择声卡不成问题。如果你的声卡在你的发行版的标准内核下工作的很正常,你也可以使用配置程序(比如SuSE的"yast2")来找出你的声卡使用什么驱动。请放心,声卡并不是十分关键的:如果某些地方出错,你将会失去音效,但是内核仍然可以正常工作。
26.USB support:配置USB支持。
27.kernel hacking:配置"kernel hacking"选项.这很简单:不要打开!

附:(随时更新)
(1).参考文档:http://www.linuxfocus.org/ChineseGB/July2002/article252.sh