内核的配置与编译(编写中)
时间:2006-12-09 来源:sense5
本文最后修改时间: 2005年10月25日 11:59
编者:张招雄
新配置和编译的内核往往能够支持更多的硬件,能够进行更好的进程管理,最大限度地发挥硬件的功能,而且还可以修正旧版本中的错误与传统的Windows相比,这是很具有诱惑力的优点。本章主要介绍有关内核配置和编译方面的知识。本文以RedHat AS 3.0 系统为例,内核为2.4版本。
第一节 基础知识
本节介绍内核的编译步骤和一些选项说明方面的知识。
一、内核编译的一般步骤
1.配置内核
在/usr/src/linux-2.4目录内执行下面的命令:
#make menuconfig
2.检查设置及连接
#make dep
实际上在读取的过程中就生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些内容需要编译。
3.生成内核
#make bzImage
生成的内核是使用gzip压缩的,压缩的内核将留在/usr/src/linux-2.4/arch/i386/boot目录下名为bzImage的文件中。
4.生成模块
#make modules
只有在进行配置的过程中,回答Enable loadable module support时选择“Y”才能生成模块。
严格说来,该命令和编译过程没有直接的关系,它是生成模块间的依赖关系,这样,在启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块.
5.安装模块
#make modules_install
将编译好的模块复制到相应的目录内
6.启用内核
为了能够使用新的内核,还需要进行如下操作:
#cp /usr/src/Linux/System.map /boot/System.map-2.4.X
#cp /usr/src/Linux/arch/i386/bzImage /boot/bzImage
以上这两个文件是刚才编译时新生成的。下面修改/boot下的两个链接文件System.map和vmlinuz,使其指向新内核的文件:
#cd /boot
#rm -f System.map(删除旧的连接,不要删除原文件)
#ln -s System.map-2.4.7 System.map (创建新连接)
编辑/etc/lilo.conf文件,在其中添加如下一段:
image=/boot/bzImage设置为已经安装的内核
label=newLinux 由LILO来引导现在要启动的是那个内核或操作系统
read-only
root=/dev/hda2 这个特别的操作系统的根目录 /
其中root=/dev/hda2一行要根据需要自行加以修改。
运行:
#/sbin/lilo -v ,使新增加的启动参数生效,此时将看到新增加的启动参数。
重新启动系统,以便用新内核进入系统:
#shutdown -r now
在计算机重启后出现LILO启动菜单,选择newLinux,由启用新内核进入系统。
二、内核的设置的常用选项说明
在内核设置时,对内核可以有以下三种选择方式:
[ ]:“n”,即不用此功能。
[* ]:“y”,即将该功能编译进内核。
<M>:“m”,即将该功能编译成模块。
1.Code maturity level options --->代码成熟等级
Prompt for development and/or incomplete code/drivers ——如果要测试现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了,否则可以把它选择为N。
如果设置为Y,以后将会出现一些还在测试中的选项供用户做选择,否则就键入N。
2.Loadable module support --->对模块的支持
Enable loadable module support ——除非准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。
Set version informationon all module symbols ——通常在更新内核版本之后,模块要重新编译。该选项使用户不必更新编译模块而能使用以前的模块,可以不选它。但如果用户选Y,则按照它的说明,用户必须有genksyms这个程序(可用whereis命令查看有无此程序)。
Kernel module loader ——让内核在启动时有自己装入必需模块的能力,建议选上。
3.Processor type and features --->处理器类型和特色
(Pentium-III/Celeron(Coppermine)) Processor family ——选择处理器类型,缺省为Pentium-III/Celeron(Coppermine)。它会对每种CPU做最佳处理,让它运行得快又好。一般来说,没有选择正确的CPU并不会有重大的影响(特别是选择386,这样编译出来的内核也许会比较小但它的运行速度可能就会变慢了)。所以,最好要知道用户的CPU是哪一种。
Machine Check Exception ——该功能允许处理器在检测到硬件错误时通知Linux内核检测到错误!这些错误包括:系统总线错误、内存错误(其中可能包含同位检查或 Error Correction Code (ECC) 问题)、处理器或硬件中的快取错误、处理器中的 Translation Lookaside Buffers (TLB) 错误、其它 CPU 供货商侦测到的特定硬件问题、特定供货商侦测到的硬件问题等。
Toshiba Laptop support ——该功能允许访问Toshiba的系统管理模式,即直接设置BIOS来支持某些功能。该功能只在Toshiba的BIOS的机器中管用。如果你的BIOS不是Toshiba,那么该功能无效。
Dell laptop support ——对Dell笔记本BIOS功能的支持,作用同Toshiba Laptop support选项。
/dev/cpu/microcode - Intel IA32 CPU microcode support ——32位Intel CPU的微代码支持,该功能同时还需要dev file system support(devfs文件系统)的支持。关于微代码的要求和组成等相关信息,请参考:http://www.urbanmyth.org/microcode/
/dev/cpu/*/msr - Model-specific register support ——这个选项桌面用户一般用不到,它主要用在Intel的嵌入式CPU中的,这个寄存器(MSR)的作用也依赖与不同的CPU类型而有所不同,一般可以用来改变一些CPU原有物理结构的用途,但不同的CPU用途差别也很大。
/dev/cpu/*/cpuid - CPU information support ——这会在/dev/cpu中建立一系列的设备文件,用来让进程去访问指定的CPU。一般不用选。
High Memory Support ——内核支持的最大内存数,缺省为off。如果你使用的机器物理内存小于960M,可以不用修改该选项;如果您使用的机器物理内存在1GB-4GB之间,选择4GB;如果你使用的服务器内存在4GB以上,选择64GB。
Math emulation ——该选项询问是否需要Linux内核模拟数学浮点运算器。如果有486Dx、AMD以及Pentium以上计算机的话,这个选项就不必选了,因为它们都有内建的浮点运算器。不过,对于有内建浮点运算器的人来说,选了这个选项并不会因此让内建的浮点运算器失效,但它会增大内核约几十KB。
MTTR(memory type range register)support ——选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供Xserver使用。在Intel p6家族的处理器中(Ppro、 PII和更新的)有一个内存类型范围寄存器(MTTR),可用来控制处理器访问的内存范围。打开它一般可以提升显卡的显示性能。
Symmetric multi-processing support ——对称多处理器支持。除非有多个CPU,否则就不必设置该选项。
(32) Maximum number of CPUs (2-32) ——CPU最多个数的支持。每多一个CPU的支持内核文件大约增加8KB。
[ ] Multi-node NUMA system support ——多结点NUMA系统的支持。NUMA(非一致内存访问)是一个在多重处理系统中配置微处理器的簇的方法,这样他们可以在本地共享内存,提高系统扩展的性能和能力。NUMA被用于对称多处理系统中。
[ ] Unsynced TSC support ——在Multi-node NUMA系统中启用该功能。
4.General setup --->普通的属性设置
这部分内容非常多,一般使用缺省设置就可以了。下面介绍一下一些经常使用的选项。
Networking support ——网络支持。因为在Linux里面,有虚拟的网络设备(1ookback),可以模拟整个网络。而且,—些程序需要它。没有网卡也建议选择该选项。
注意:如果选择N,则“Networking options”和“Network device support”不会出现。
PCI support ——PCI支持。如果使用了PCI的卡,当然必选。
PCI access mode(BIOS,Direct,Any)[Any] ——设置Linux探测PCI设备的方式。选择“BIOS”,Linux将使用BIOS;选择“Direct”,Linux将不通过BIOS;选择“Any”,Linux将直接探测PCI设备,如果失败,再使用BIOS。
PCI device name database ——PCI设备名称数据库支持。如果选择“Y”,内核会查找数据库,并将硬件对应设备的详细资料写入/proc/pci和/proc/ioports文件内,并将设备的厂商、芯片型号等信息写入内核。
[*] ISA bus support ——有使用ISA总线的设备当然要选择该选项。
[ ] EISA support ——有使用EISA总线的设备当然要选择该选项。
[ ] MCA support ——有使用MCA总线的设备当然要选择该选项。
[*] Support for hot-pluggabel devices ——热插拔设备支持。(如usb硬盘,热插拔的SCSI硬盘等。)。
PCMCIA/CardBus support ---> PCMCIA卡(总线)的支持。
[*] System V IPC ——如果将来想编译dosemu(DOS模拟器),则这个选项一定要选,它是让各个程序(process)同步且能彼此交换数据的函数库和一些系统调用;如果不选该选项,很多的程序将会无法执行。即支持System V系统中的进程间的IPC通讯功能。
[ ] BSD Process Accounting ——该功能将会让内核为用户层的进程(用户态的进程)建立一个帐目(进程通过一个特殊的系统调用来通知内核),当程序退出时内核会将进程的相关信息记录到帐目文件中,主要包括进程的创建时间、 创建者,内存占用等信息。
[*] Sysctl support ——除非内存小的可怜,否则应该启动这个功能,启用该选项后内核会增大8K,但能让你直接改变内核的参数而不必重新开机(配置/etc/sysctl.conf,然后使用sysctl -p命令使内核参数立即生效)。
(ELF) Kernel core (/proc/kcore) format ——内核文件的二进制代码格式,ELF或A.OUT。
<*> Kernel support for a.out binaries ——a.out的执行文件是比较古老的可执行代码,用在比较早期的UNIX系统上。Linux最初也是使用这种代码来执行程序,一直到ELF格式的可执行码出来后,有愈来愈多的程序码随着ELF格式的优点而变成了ELF的可执码。
[*] Kernel support for ELF binaries ——因为目前gcc-2.7.0以上的版本都支持ELF,如果没有选择这一项,可能会使大部分程序因此无法执行。各个应用程序的二进制代码格式,可以通过file命令来查看。
要注意,不能同时把a.out和ELF支援编译成modules,一般把a.out编译为modules,把ELF编译为内核。
<*> Kernel support for MISC binaries ——支持MISC格式的二进制文件。一般选y,用于支持java等代码的自动执行。
[ ] Select task to kill on out of memory condition ——如果启用该功能,当总体内存(包括物理内存和虚拟内存)不够用时(no freeable memory),内核会选择kill掉"best"任务。缺省动作是结束掉试图使用内存的进程。
Power Management support ——电源管理支持。想让Linux支持高级电源管理,例如软关机、系统休眠等,需要选择“Power Management support”选项。
Advanced Power Management BIOS support ——高级电源管理BIOS支持。这通常是用在笔记本电脑上的,如果用户有APM的BIOS,支持省电的设备(有电池的),那么用户可以选择该选项,在服务器上一般选择N,以避免一些可能会发生的问题。
ACPI Support --->要想让你的系统使用ACPI来管理你的电源就要选上它,另外要想让它起作用,你还要在系统中安装acpid守护程序。
当启用ACPI功能,并且主板支持ACPI时,AMP功能不再生效。
5. Memory Technology Devices (MTD) ---> 采用内存技术的设备支持。
< > Memory Technology Device (MTD) support ——如果您需要使用Linux来读取一些闪存卡(FLASH Card),需要该功能的支持。或者在嵌入式系统中使用了芯片式硬盘也需要该功能的支持。(该功能主要用于嵌入式系统中。)
6.Parallel port support --->并口支持。如果你有并口设备需要使用并口(例如并口打印机),该选项是必须的。
7.Plug and Play configuration --->即插即用支持
Linux对即插即用目前支持的不如Windows好,有些情况下会和其他设备产生冲突(I/O,DMA,IRQ等)。该选项对PCI设备没有影响,因为它们自己本身就是PNP设备。
Plugand Play support ——选择Y,内核将自动配置即插即用设备。
ISA Plug and Play support ——选择Y,内核将自动配置基于ISA总线的即插即用设备。
8.Block devices --->块设备支持
该选项需要针对具体的设备情况来选择了:
Normal PC floppy disk support ——普通PC软盘支持。
Xt hard disk support ——支持XT的古董级硬盘,这是IBM电脑时代的东西,如果用户还有这种硬盘。那么,就可以把它编进内核或是编成一个模块。大部分的情况都是选择N的。
Parallel port IDE device support ——并口IDE硬盘的支持。(也是老掉牙的设备了。)
< > Compaq SMART2 support ——Compaq的smart2阵列控制器的支持。
< > Compaq Smart Array 5xxx support ——Compaq的Smart 5xxx系列阵列控制器的支持。
< > Mylex DAC960/DAC1100 PCI RAID Controller support —— Mylex DAC960, AcceleRAID, and x
x eXtremeRAID PCI RAID卡(控制芯片)的支持。
< > Promise SATA SX8 support ——Promise SATA SX8系列SATA硬盘控制器的支持。
< > Loopback device support ——如果要在Linux上挂接ISO镜像文件,该功能是必须的。
< > Network block device support ——网络块设备的支持。(通过该选项可以将一个网络文件系统当成本地的块设备来访问,即将网络文件系统Mount到本机,例如:NFS、SMB等)。
RAM disk support ——如果使用过DOS下的ramdrive程序,应该能了解这个选项的意义。它可以把内存当成硬盘,可以格式化,或是放一些文件在其中。但是,当用户关机时,这些数据也随着消失了。当制作一个嵌入式Linux时常用到此功能。
[ ] Per partition statistics in /proc/partitions ——如果启用该功能,将记录每个分区的统计信息,例如读、写等访问信息。一般不需要。
9.Multi-device support (RAID and LVM) --->支持软件磁盘阵列(Software RAID)和卷
[ ] Multiple devices driver support (RAID and LVM) ——如果需要支持软件RAID(不推荐使用)或逻辑卷管理(推荐使用),必须选择该选项。
Logical volume manager(LVM)support ——逻辑卷管理支持。
10.Networking options --->网络选项
这里配置的是网络协议。
<*> Packet socket ——选择Y,一些应用程序将使用Packet协议直接同网络设备通信,而不通过内核中的其它中介协议。例如tcpdump程序。
< > Netlink device emulation ——该选项目前是一个兼容性设备,在将来的内核中将被real netlink socket取代。当某个程序需要访问字符节点如:/dev/tap0 或 /dev/route 时需要此功能。
[*] Network packet filtering (replaces ipchains) ——包过滤防火墙功能的支持。如果要使用Linux防火墙功能,必须开启该选项。只有该选项被选中,后面的IP: Netfilter Configuration --->和IP: Virtual Server Configuration ---> 才会出现。
[ ] Socket Filtering ——Unix套接字的过滤功能。用户态的程序可以通过过滤来告诉内核哪些数据可以通过Socket,哪些数据不可以通过Socket。
<*> Unix domain sockets ——Unix套接字的支持。很多程序都会用到Unix套接字,例如:PostgreSQL、MySQL、Postfix ……等。
[*] TCP/IP networking ——选择Y,内核将支持TCP/IP协议。这个选项无论如何都要选择Y,即使没有网络卡,或是没有连到网络上的设备,在Linux上仍有所谓的lookback设备而且有些程序需要选择该选项。如果用户没有打开这个设置,则X-window system可能会有问题(因为它也需要TCP/IP)。
[ ] IP: multicasting ——多播支持。multicasting是群组广播,它是用在视频会议上的协议,如果想发送一个网络封包(网络的数据),同样的一份数据将送往十部计算机上。用户可以连续送十次分别给十台计算机(点对点的传送),也可以同时送一次,然后让十台计算机同时接收到。当然后者比前者好,由于视频会议要求最好每个人都能同时收到同一份信息,所以如果用户有类似的需要,这个选项就要选择,同时用户还必须去找相关的软件。
[ ] IP: advanced router ——用Linux来做路由器,此选项应该上,否则不要选。
[ ] IP: kernel level autoconfiguration ——内核级自动配置。当内核启动时自动通过内核命令或BOOTP 或 RARP协议设置网络设备的IP地址和路由表。一般用在网络启动或无盘工作站系统中。
< > IP: tunneling ——IP隧道。是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧道技术亦称为IP封装技术(IP encapsulation)。IP隧道主要用于移动主机和虚拟私有网络(Virtual Private Network),在其中隧道都是静态建立的,隧道一端有一个IP地址,另一端也有唯一的IP地址。
< > IP: GRE tunnels over IP ——基于IP的GRE(Generic Routing Encapsulation)隧道。GRE隧道可以基于IPv4的基础网络来封装IPv4或IPv6的网络协议,并且GRE隧道可以使用多播功能(Linux的IP隧道不可以)。主要在Linux与Cisco等路由设备使用隧道进行通讯时使用。
[ ] IP: multicast routing ——多播路由的支持。当Linux用作路由器,并且需要路由多播数据包时需要此功能。
[ ] IP: TCP Explicit Congestion Notification support ——ECN(显式拥塞指示)的支持。由于目前很多老的路由器和防火墙不支持ENC,因此如果你启用了此功能,大概不能与互联网上8%的主机进行通讯。好处嘛,从名称打概略知一二了吧!
[*] IP: TCP syncookie support (disabled per default) ——启用该功能可以在一定程度上防止SYS Flood攻击。关于syscookie的更多信息,请访问:http://cr.yp.to/syncookies.html
< > 802.1Q VLAN Support ——用Linux加上一台二层交换机来实现三层交换,非常节省成本。更多信息请访问:http://www.candelatech.com/~greear/vlan.html
The IPX Protocol ——如果用户希望Novell的计算机资源共享(例如用他们的打印机或是硬盘),那么该选项则要选择Y。至于存取文件的NCPFS的格式,也应该选择以便支援这个文件系统。如此一来,用户就可以通过Novell的IPX通信协议去存取它们的数据了,或者用户希望从dosemu(DOS的模拟器)里使用IPX协议,这时也要把它选中。
Appletalk protocol support ——AppleTalk是存在于苹果机上的一种通信协议,用来与苹果电脑之间的网络通信,通过AppleTalk,彼此的电脑间可以打印和共享文件。如果用户需要连上这样的网络,可以把这个选项打开,就能与苹果电脑做沟通了,或者把该选项编成一个模块亦可。
802.1d Ethernet Bridging ——模拟交换机。选择该选项可以让Linux作为一个网络上的交换机。
Qos and/or fair queueing——服务质量公平调度,建议不选择。
Network testing ---> 网络测试。
12.Telephony Support --->电话支持
Linux下可以支持电话卡,这样就可以使用普通的电话提供语音服务了。电话卡和modem没有任何关系。
13.ATA/IDE/MFM/RLL support --->IDE设备的支持
<*> ATA/IDE/MFM/RLL support ——如果有IDE(或EIDE)设备,这是必选的。如果使用的是SCIS设备,那就可以不用了。
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support ——选择Y,内核将提供对增强IDE硬盘、CDROM和磁带机的支持。如果用户的IDE接口是Enhanced的(增强IDE接口),请用户选Y,即会出现IDE选项的界面,这些选项能加快用户IDE接口的速度或对某些芯片做一些最佳化处理。但如果用户的硬盘或光盘全都是SCSI接口的,那么需要选择N以跳过下面的选项。
use old disk-only driver on primary interface ——通常是选择N。因为有其它新的驱动可用。这个选项的意思是说,如果用户的IDE接口是很旧的,就可以使用这个驱动去驱动旧型的IDE接口(可装二块硬盘;或是一块硬盘,一个光驱)。
[ ] Support for SATA (deprecated; conflicts with libata SATA driver) ——有一小部份SATA接口控制芯片只能使用IDE驱动程序才能使其正常工作。对于使用SATA驱动(在SCSI支持部分可以选择)不能正常工作的SATA设备(很少见的)可以使用该功能,
Include IDE/ATA-2 DISK support ——它包含了增强的IDE接口,所以是必需选择的。
< > PCMCIA IDE support ——如果使用了PCMCIA卡来连接IDE硬盘,那就需要了。
Include IDE/ATAPI CDROM support ——如果希望内核支持IDE/ATAPI接口的光驱,那就需要选择Y。如果是附有一张接口卡的光驱,必需把排线接到那张专用接口卡或者是声卡上,则这个选项必须要选N。现在的光驱通常是IDE/ATAPI接口的,所以这个选项通常是Y。
< > Include IDE/ATAPI TAPE support
< > Include IDE/ATAPI FLOPPY support
< > SCSI emulation support ——将一个IDE设备模拟为SCSI设备来使用。但在内核启动参数中必须加入类似:hdx=scsi的参数。
CMD640 chipset bugfix/support ——很多486和586的主机板都是用CMD640的芯片,它是Neptune芯片和SIS芯片的结合。这种芯片有它的缺点,在许多的情形下,它会造成数据的丢失和错误。如果用户选了这一项,则Linux内核会为用户小心的寻找这些错误并修正它,而且,它会打开对两个IDE接口的支持。不过,在它的说明文件中提到,如果用户的主机板没有PCI界面,只有VESA总线界面,还希望有这项功能的话,则用户必须传送一些参数给内核(ideo=cmd640_vlb);如果不确定,则选择Y。
如果你确定你的IDE控制芯片不是CMD640,将该选项设置为N(不选)。
[*] PCI IDE chipset support ——PCI总线的IDE接口的支持。呵呵,对目前流行的主板来说必选的了。后面的选项就是根据你的主板IDE芯片组来选择一个驱动。
RZ1000 chipset bugfix/support ——这个选项如同前面的CMD640一样。
14.SCSI support---> SCSI设备支持
如果有SCSI设备,就选择Y(现在一般PC机都没有SCSI设备)。接着会有提示要求更进一步的信息,询问是否要支援光驱、硬盘,还有你使用的是那一种SCSI界面卡(这部份请参阅SCSI-HOWTO,有更详细的说明)。如果你的启动分区是SCSI设备,一定要把它编译到内核内。
<*> SCSI disk support ——SCSI硬盘的支持。
< > SCSI generic support ——其他SCSI设备的支持,例如:扫描仪等。
SCSI low-level drivers --->SCSI卡的驱动程序。根据SCSI卡的芯片选择一个驱动。
15.Network device support --->网络设备支持
该选项设置对网络设备的支持,主要有ARCnet设备、Ethernet(10 or 100Mbit)、Ethernet(1000Mbit)、Wireless LAN(non-hamradio)、Token Ring device、Wan interfaces、PCMCIA network device support几大类。一般说来都能找到自己用的网卡的驱动。如果没有,就要找设备供应商要求提供该设备的驱动了。
ARCnet support --->这也是一种网络卡,一般用的不多,所以选择N。如果用户有这样的网络卡,请查阅Documentation/networking/arcnet.txt的说明。
Dummy net driver support ——如果有SLIP或PPP的传输协议,那么就要把该选项打开。因为它不会使Linux内核增大,而且对某些应用程序来说,它可以让我们模拟出来的TCP/IP环境更像TCP/IP环境。如果用户没有SLIP或PPP协议,就不用设置该选项。
< > Bonding driver support ——以太网卡的邦定。启用该功能可以将两块网卡邦定在一起来当两块网卡使用,例如两块100M的网卡邦定之后相当于一块200M的网卡。当然,在你的交换机上也要做端口邦定设置(将两个端口邦定为一个端口使用。)。
EQL(serial line load balancing)support ——如果有两个MODEM,两条电话线,而且用SLIP或PPP协议,可以用这个Driver以便让用户的MODEM有两倍的速度,当然,在网络的另一端也要有同样的设备。
< > Universal TUN/TAP device driver support ——该功能可以使内核可以直接从用应用程序接收数据包或直接将数据发送给应用程序,而不必先通过物理网卡(当然是在本地通讯中。)。
Ethernet (10 or 100Mbit) --->百兆网卡驱动。
Ethernet (1000 Mbit) --->千兆网卡驱动。
PPP(point-to-point)support ——点对点协议。
SLIP(serial line)support ——这是MODEM族常用的一种通信协议,必须通过一台Server(叫ISP)获取一个IP地址,然后利用这个IP地址来模拟以太网络,使用有关TCP/IP的程序。
[ ] Fibre Channel driver support ——光纤通道。主要用在存储系统中。
Wireless LAN (non-hamradio) ——无线网卡的支持。
16.Amateur Radio support --->业余无线广播
可以用来启动无线网络的基本支持,目前的无线网络可以通过公用频率传输数据,如果有此类设备就可以启用。具体请参考AX25和HAMHOWTO文档。
17.IrDA(infrared)support --->红外支持
18.ISDN subsystem --->如果使用ISDN上网,这个就必不可少了。ISDN(Integrated Services Digital Network),它的中文名称是综合数字服务网络,是一种利用电话线把文字、图像声音、视频等信息以数字的方式传送的数字网络,它需要电话交换机设备支持ISDN,这通常需要电信局来做安装。对于在家工作的人来说,ISDN可能是最合适的一种上网方式,因此有愈来愈多的人使用它。如果用户选择Y,则下面会出现一些有关ISDN的选项。如果需要用到ISDN,还需要启用Support synchronous PPP选项。
19.Old CD-ROM drivers(not SCSI、not IDE)--->如果用户的光驱是SCSI或IDE接口的,则不选择该选项;如果用户使用的光驱既不是SCSI接口,也不是IDE接口,则必须选择该选项。
Input core support ---> 核心输入设备的支持。例如游戏控制杆等。
20.Character devices --->字符设备
所谓字符设备,通常是指以字符为单位做处理的设备,例如终端机。对于这些选项的选择也是以预设为主。
Virtual terminal ——选择Y,内核将支持虚拟终端。
Support for console on virtual terminal ——选择Y,内核可将一个虚拟终端用作系统控制台。
Standard/generic (8250/16550 and compatible UARTs) serial support ——选择Y,内核将支持串行口。如果用户是用serial的鼠标(大部分的用户都是用这种鼠标)或是MODEM的话,则该选项一定要选上。
Support for console on serial port——选择Y,内核可将一个串行口用作系统控制台。
I2C support ——I2C是Philips极力推荐的在微控制应用中使用的低速串行总线协议。如果要选择Video For Linux,则该选项必需选上。
Mice ——鼠标。
目前可以支持总线、串口、PS/2、C&T82C710 mouseport、PC110 digitizerpad等多种接口的鼠档,根据需要选择。
PS/2mouse(aka“auxiliarydevice”)support ——如果用户使用的是PS/2鼠标,则该选项应该选择Y。
Joysticks ——游戏手柄。
Watchdog Cards --->虽然称为Cards,但是却可以用纯软件来实现,当然也有用硬件来实现的。如果选中该选项,就会在/dev目录下创建一个名为watchdog的文件,它可以记录系统的运行情况,一直到系统重新启动的1分钟左右。有了这个文件,你就可以恢复系统到重启前的状态了。
QIC-02 tape support ——非SCSI界面的磁带机,除非用户有,否则选择N。
21.Multimedia devices --->视频卡卡的支持
Video For Linux ——支持有关的音频/视频卡。
22.File systems--->文件系统
Linux上支持约二十几种的文件系统。支持某个文件系统的意思是,可以存取某个文件系统的数据或是做拷贝动作。在这些文件系统中,通常的选择方法是按照原来预设的方式,不过,其中的EXT2FS 或 Ext3 选项一定要选上,因为它是Linux系统所使用的文件系统,其他的则根据需求做选择。
通常是把ext2或ext3编译进内核,而让其余的使用模块。
Quota support ——支持磁盘配额。可以限制每个用户所能使用的硬盘空间的上限,在多用户共同使用一台主机的情况中十分有效。
Kernel automounter support ——如果选择Y,内核将提供对automounter的支持,使系统在启动时自动mount远程文件系统。
Ext3 journalling file system support ——ext3文件系统的支持,它的性能比ext2好,如果使用ext3做根文件系统,一定要将该选项编译进内核。
DOS FAT fs ——DOS FAT文件格式的支持,可以支持FAT16、FAT32。这个选项是DOS的文件系统,如果用户没有选Y,则下面的MSDOS,VFAT,UMSDOS将不会出现。
MSDOS ——DOS文件系统的格式。如果想要在Linux下访问硬盘中的MS-DOS分区,或是想将用MS-DOS格式化的磁盘挂进来的话,选择Y。
UMSDOS:UNIX-like file system on top of standard MSDOS fs ——如果把Linux装进DOS的一个目录下,那么用户则要选择这一项。不建议这样做,因为这样就不能看到长文件名了,而且效率也不是很高。
VFAT(Windows95)fs ——windows95所支持的文件系统,是我们常说的FAT32文件系统,如果用户的计算机中装有windows95/98,那么选择这个文件系统可以使用户看到windows95/98的长文件名。
ISO 9660 CDROM file system support ——光盘使用的就是ISO9660的文件格式。
Minix fs support ——新的套件不再建立Minix文件系统,而且很多人不使用它,但是把它配置在内核里仍然是个好主意。某些“恢复磁盘”程序会用到它,而且仍然有许多磁盘可能用Minix文件系统,因为Minix文件系统对于处理磁盘方面是最好的。当初Linus是因为对Minix这个小型的操作系统有很深的经验,所以才写出Linux这个操作系统。Minix文件系统通常用在磁盘上。
NTFS file system support(read only)——NTFS是Windows NT使用的文件格式。
/proc ——它不是硬盘分区里的任何部分,不占用硬盘的空间,而是内核与程序之间的文件系统界面,它表示的只是内存的使用状况和各个程序执行的情况,它也记录了用户的硬件配置。许多程序工具(像“ps”)都会用到它。如果已经将它安装好了,可以执行命令“cat /proc/meminfo”或者是“cat /proc/devices”。有些shells会用/proc/self/fd(在其它系统上为/dev/fd)来处理输出输入。有许多重要的Linux标准工具是靠它来运作的,否则执行有些命令会出问题。
Second extended fs ——这是现在新发行的套件所广泛采用的文件系统,这个是Linux文件系统,请务必选择Y,除非用户能把Linux安装在DOS目录下。
UFS filesystem support ——这是BSD,SunoS,FreeBSD,NetBSD或Nextstep所使用的文件系统。如果用户在电脑上有这些操作系统的话,那么可以选中该选项,否则选择N。
Network File Systems ——网络文件系统
NFS file system support ——如果在网络环境下想要共享文件,选择Y。如果希望挂上其他电脑的文件系统,那么该选项一定要选上。它可以让用户利用网络把其他计算机的硬盘当成自己的来使用(把它变成一个目录)。对于一般用户来说,该选项是选择Y。
SMB filesystem support ——这个文件系统让用户可以挂上windows95/98或windowsNT的文件系统,也就是用户可以访问到在windows下的电脑。
NCP file system support (to mount NetWare volumes)——NCP是一种网络的通信协议,使用IPX协议,它可以利用IPX协议让两台电脑之间的文件共享,并能进行沟通。如果用户想挂上有关Novell的Netware文件系统,那么这个选项就要选上。
Partition Types --->支持的分区类型。该选项支持一些不太常用的分区类型,用户如果需要,在相应的选项上选择Y即可。
#Native Language Support--->本地语言支持。
#System Vand Coherent——该选项是为SystemV以及Coherent的分割区而设置的。如果希望支持SystemV或Xenix相关UNIX系统的FS,并读取它们的数据,那么才有必要选中该选项,否则一般来说该选项是选择N的。
23.Console drivers --->控制台驱动
VGA text console ——选择Y,用户就可以在标准的VGA显示方式下使用Linux了。一般使用VGA text console就可以了,它是标准的80×25的文本控制台。
24.Sound --->声卡驱动
25.USB supprot --->USB支持
很多USB设备,比如鼠标、调制解调器、打印机、扫描仪等,在Linux都可以得到很好支持,可以根据需要自行选择。
26.Bluetooth support --->蓝牙支持。
27.Kernel hacking --->安全模式
通俗地说,这是windows安全模式,因为没有明确解释,就引用这个说法。这是从Linus的README里摘录的:
“kernel hacking”配置的细节通常会产生一个更大或是更慢的内核(或者是又大又慢),而且可能因为将一些常式配置成很活跃地去尝试中断一些不良的程序码,以便找出内核里的问题,而使得内核变得比较不稳定。所以要产生一个内核“产品”的话,你在这里应该回答n。
配置了这个选项,即使系统在崩溃时,也可以在该模式下运行。
如果对Linux内核很熟,想了解这个操作系统上的更深层次的信息,才把这个选项才打开,在/proc下可以看到profile这个文件,记录着相当多的信息。这些信息是供解决问题用的,一般来说,这个选项是选择N的,以免造成系统不稳固或是引起其他的问题。
Cryptographic options --->主要用于VPN的一些加密算法。
实验
本节通过实例具体介绍Linux内核的配置和编译步骤。
将RedHat AS Linux3.0的内核升级到2.4.30版本。
实验步骤:
1.准备新内核
到 http://www.kernel.org/pub/Linux/kernel/ 上下载所需要的内核,并下载对应的内核补丁。
http://www.kernel.org/pub/Linux/kernel/v2.4/Linux-2.4.30.tar.bz2
2.解压缩内核,并创建相应的链接
注意查看/usr/src/Linux-2.4目录,在编译新内核以前首先删除/usr/src/Linux-2.4这个符号链接,然后再解压缩源代码,并创建新的Linux符号链接,指向新的内核源代码目录:
# rm /usr/src/Linux
# tar -xzvf Linux-2.4.20.tar.bz2
# mv Linux Linux-2.4.30
# ln -s /usr/src/Linux-2.4.30 Linux
3.配置内核
做好上面的准备工作后,就可以配置内核了,在/usr/src/Linux下运行make menuconfig命令。
如果要使用中文文件名,还要设置对中文的支持,2.4.30版本的Linux是完全支持简体中文的。
其他详细内容请参阅:“内核设置的常规选项说明”。
4.编译内核
依次执行下面的命令来编译:
# make dep
# make bzImage
# make modules
# make modules_install
请参阅“内核编译的一般步骤”。
5.启用新内核
为了能够使用新版本的内核,还需要做一些改动。
#cp /usr/src/linux/System.map /boot/System.map-2.4.30
#cp /usr/src/linux/arch/i386/bzImage /boot/bzImage
以上这两个文件是刚才编译时新生成的,修改/boot下的两个链接System.map和vmlinuz,使其指向新内核的文件:
#cd /boot
#rm -f System.map(删除旧的链接,不要删除原文件)
#ln -s System.map-2.4.30 System.map (创建新链接)
现在编辑 /etc/lilo.conf,增加如下一段:
image=/boot/bzImage(设置为已经安装的内核)
label=newlinux (由LILO用来说明现在要启动的是哪个内核或操作系统)
read-only
root=/dev/hda2 (操作系统的根目录 /)
其中root=/dev/hda2一行要根据需要加以修改。
运行:/sbin/lilo -v ,使新增加的启动选项生效。此时将看到新增加的启动选项。
#/sbin/lilo -v
确认对/etc/lilo.conf文件的编辑无误,现在重新启动系统:
#shutdown -r now
在计算机重启后出现LILO时选择newlinux,新内核便编译成功了。