Linux内核配置文档(make menuconfig)
make menuconfig
图形化的内核配置make mrproper -----删除不必要的文件和目录.
#make config(基于文本的最为传统的配置界面,不推荐使用)
#
make menuconfig(基于文本选单的配置界面,,字符终端下推荐使用)
#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
目的都是
生成一个.config文件,这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,你就用这个好了,这个比较方便,也好设置.如果你不能使用Xwindow,那么就使用 make menuconfig好了.界面虽然比上面一个差点,总比make config的要好多了.选择相应的配置时,有三种选择,它们分别代表的含义如下:
Y--将该功能编译进内核 N--不将该功能编译进内核 M--将该功能编译成可以在需要时动态插入到内核中的模块
下面根据解释make menuconfig中出现的菜单的内容.
[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:对模块的支持
模块就像你特意插入核心中的某些东西,如果办公室有一个小网络并且有时想用一下(但并不经常),也许你想把网卡编译成一个模块.如果安装启动分区和网络,你需要网络系统文件,和己经编译的网卡.为什么要使用模块? 模块化使核心变的更简捷,它减少核心释放大量的受保护的空间.模块的安装和卸载使用的空间是可重复分配利用的.如果你打开机器有90%以上的时间用到一个模块,编译它.运用这类模块是浪费内存的,原因是一旦你编译了模块它们同样将占用大量的内存,核心需要一些代码来挂上模块.记住,核心在保护空间运行,但模块并不是.这么说,并不经常使用我的设备,把它编译成只支持ext2,ide和elf.而一直使用的网卡,把其它的编译成模块:如a.out, java, floppy,, iso9960, msdos, minix, vfat,smb,nfs,smcultra(ethernetcard),serial,printer,sound,ppp,等等.它们许多只是在这或那用上那么几分钟.严格的说,这样做会使核心增大许多而降低它的执行速度.这时我们就可以把这些可能会用的驱动程序编译成一个m个的模块,在需要用的时候才用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)部分的代码编译为可加载模块,结果将是内核无法读取它自己的文件系统.然后内核无法加载它自己的配置文件mm一些很明显是在正常启动Linux时所必需的东西.我很少使用可加载模块:我喜欢我的内核能够直接和硬件对话,但这只是我自己的偏好.
3.Processor type and features:处理器类型和特色.
3.1.Processor family. 它会对每种CPU做最佳化,让它跑得快又好.一般来说,没有选择正确的CPU并不会有重大的影响(特别是选择386 ,这样编译出来的核心也许会比较小但它的速度可能就会变慢了).
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":无论如何,打开这个选项通常都是安全的mm即使你的机器没有使用 PCI或AGP总线的显卡
3.5.Symmetric multi-processing support.选项保证内核能够以最佳方式加载多处理器.除非有多个CPU,否则就不用选了.
3.6.Mutiquad NUMA system.通常也需要多处理器,但它通常是关闭的.
[4]、General setup:常规内核选项.
4.1. Networking support. 内核在没有网络支持选项的情况下甚至无法编译.简而言之:一定要打开"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就必选了.通常,台式机和服务器等用的网卡均不支持PCMCIA标准,PCMCIA是专门用在笔记本或PDA、数码相机等便携设备上的一种接口规范(总线结构).也就是笔记本网卡通常都支持PCMCIA规范,而台式机网卡则不支持此规范.PCMCIA是英文"PERSONAL COMPUTER MEMORY CARD INTERNATIONAL ASSOCIATION"的缩写.
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)之类的存储器.
[6].Parallel port support:配置并口.如果不打算使用,就别选了.
[7].Plug and Play configuration:即插即用支持.
7.1. Plug and Playsupport.
7.2. ISA Plug Play support.选项需要以即插即用模式运行的ISA卡(ISA Card). 例如AWE64声卡.ISA总线(ISA bus)从来都没有即插即用标准,这增加了配置这些板卡的难度.
[8].Block devices:块设备支持.
8.1. Normal PC floppy disk support.普通PC软盘支持.可选择这个选项作为可加载模块.
8.2. XT hard disk support.支持XT的古董硬盘.
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支持.10.Networking options:网络选项.
[10].Networking options:网络选项
10.1. Packet Socket.选择"Y",你需要这个选项来与网卡进行通信而不需要在内核中实现网络协议.
10.2. TCP/IP networking.选择"Y",内核将支持TCP/IP协议.
10.3. IP:multicasting.所谓的multicasting是群组广播,它是用在视频会议上的协议,
经验谈:
a. 我选择了"Network packet filtering (replaces ipchains)",因为我使用了SuSE的标准防火墙(Standard Firewall).防火墙可以保护你的机器不受来自外部Internet的攻击mm至少当你正确配置了防火墙的时候是如此.内核级的防火墙保护显然是十分优越的.为了使防火墙能够正常工作,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)).12.3. Include IDE/ATA-2 DISK support.选项在支持硬盘的时候需要.
其它的就使用缺省的选项吧,如果你使用了比较特殊的设备,比如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中断会使磁盘性能下降,因此通常你不需要共享中断,除非这是解决硬件问题的唯一办法.
[13].SCSI support:SCSI设备的支持.
13.1. SCSI 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 lowmlevel drivers.下面总共有接近30张的SCSI卡,您可以依需求做选择SCSI卡牌子.
[14].I2O Device Support:I20设备支持.
14.1. I2O Device Support.如果你有I2O界面,你必须选择这个选项.I2O,是英文"Intelligent Input & output"的缩写,中文意思是"智能输入输出", 它是用于智能I/O系统的标准接口.
[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的规定了.
15.4. SLIP(serial line) support.这是MODEM族常用的一种通讯协议,必须通过一台Server(叫ISP)获取一个IP地址,然后利用这个IP地址,可以模拟以太网络,使用有关TCP/IP的程序.
15.5.1. Ethernet(10 or 100Mbit).
15.5.2. EISA, VLB, PCI and on board controllers.选择网络卡,包括直接附在主机板上的那种.
15.5.3. Pocket and portable adaptors.通常用在可携式的电脑上,这类型的网络卡(口袋型的),由于体积很小在安装和取下方面很方便,因此笔记本相关电脑上便常常采用这种网络卡.
15.5.4. Token Ring driver support.Token Ring是IBM电脑上的网络.它叫令牌环网络,和以太网络是很类似的东西.
15.5.5. ARCnet support. 这也是一种网络卡,通常一般人用不到,所以选n.
经验谈:这一般是新手难办的一个地方.
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)不存在mm即使你已经编译了,错误信息(Error Message)对于查找真正问题的所在几乎没有作用.你可以将它们都选上,这样可以避免一些问题:如果内核需要它们,就会使用它们,,如果不需要,就不用.
[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上网支持
[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设...