Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2474284
  • 博文数量: 867
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 9800
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-27 14:44
文章分类

全部博文(867)

文章存档

2007年(6)

2006年(861)

我的朋友

分类: LINUX

2006-07-30 22:39:21

一、备份重要文件

备份以下这些文件可以在系统发生错误或崩溃时,能较快速的恢复系统原来的状态。

1、备份内核和启动文件

# cd /

# tar cvzf boot.tar.gz boot

2、备份系统函数头文件

# cd /usr/include

# tar cvzf linux.tar.gz linux

3、备份模块中的库文件

# cd /lib/modules

# tar cvzf 2.4.7-10.tar.gz 2.4.7-10

# tar cvzf 2.4.7-10debug.tar.gz 2.4.7-10debug

4、备份linux源码

# cd /usr/src

# tar cvzf linux-2.4.7-10.tar.gz linux-2.4.7-10

# tar cvzf linux-2.4.7-10debug.tar.gz linux-2.4.7-10debug

5、备份重要配置目录

# cd /

# tar cvzf etc.tar.gz etc

二、修改核心参数(PGC2000需要)

1、修改与共享内存相关的核心参数

# cd /usr/include/linux

# vi shm.h

把 #define SHMMAX 0X2000000 /*max shared seg size(bytes)*/

改为#define SHMMAX 0Xa0000000 /*max shared seg size(bytes)*/

2、修改与信号量相关的核心参数

# cd /usr/include/linux

# vi sem.h

把 #define SEMOPM 32 /* <=1 100 max num of ops per semop call*/

改为#define SEMOPM 900 /* <=1 100 max num of ops per semop call*/

3、修改与消息队列有关的核心参数

# cd /usr/include/linux

# vi msg.h

找到以下三行(注释忽略):

#define MSGMNI 16

#define MSGMAX 8192

#define MSGMNB 16384

将其修改为:

#define MSGMNI 128

#define MSGMAX 131072

#define MSGMNB 20000000

4、按上面方法同样修改/usr/src/linux-2.4.7-10/include/linux下的shm.h、sem.h和msg.h文件。

三、下载释放核心源代码

如果只是修改编译内核,这一步可以省去。当我们从Internet站点上下载了新的内核文件(如linux-2.4.7-12.tar.gz),这步是必须的。

1、用tar命令释放内核源代码

# cd /usr/src

# tar zxvf linux-2.4.7-12.tar.gz

文件释放成功后,在/usr/src目录下会生成一个linux子目录。其中包括了源代码。

2、将/usr/include/asm、/usr/inlude/linux、/usr/include/scsi链接到/usr/src/linux/include目录下的对应目录中。

# cd /usr/include

  # rm -Rf asm linux

  # ln -s /usr/src/linux/include/asm-i386 asm

# ln -s /usr/src/linux/include/linux linux

# ln -s /usr/src/linux/include/scsi scsi

四、配置内核

1、删除源代码目录中残留的.o文件和其它从属文件。

  # cd /usr/src/linux-2.4

# make mrproper

2、启动内核配置程序

# cd /usr/src/linux-2.4

# make xconfig

3、配置内核

Linux的内核配置程序提供了一系列配置选项。对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。不合理的配置可能造成内核编译失败。

五、编译内核

1、建立编译时所需的从属文件

# cd /usr/src/linux-2.4

# make dep

2、清除内核编译的目标文件

# make clean

3、编译内核

# make bzImage (注意大小写)

内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。如果用make zImage编译,内核很大的话,系统会提示你使用make bzImage命令来编译。

六、编译可加载模块

如果用户在配置内核时设置了可加载模块,则需要对这些模块进行编译,以便将来使用insmod命令进行加载。

  # make modules

# make modules_install

编译成功后,系统会在/lib/modules目录下生成一个2.4.7-10custom子目录,里面存放着新内核的所有可加载模块。

七、启动新内核

1、将新内核和System.map文件拷贝到/boot目录下

# cp /usr/src/linux-2.4/arch/i386/boot/bzImage /boot/vmlinuz-2.4.7-10custom

# cp /usr/src/linux-2.4/System.map /boot/System.map-2.4.7-10custom

# cd /boot

# rm -f System.map (删除原来的连接)

# ln -s System.map-2.4.7-10custom System.map (重新建立连接)

2、配置/etc/lilo.conf文件,在该文件中加入下面几行:

image=/boot/vmlinuz-2.4.7-10custom

label=linux-custom

initrd=/boot/initrd-2.4.7-10.img

read-only

root=/dev/hda3 (参考lilo.conf文件中现有的配置)

并把default=linux改为default=linux-custom

3、使新配置生效

 # /sbin/lilo

4、重新启动系统

 # /sbin/reboot

新内核如果不能正常启动,可以在LILO:提示符下启动旧内核。然后查出故障原因,重新编译新内核即可。

一、内核简介

  内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件

和网络系统,决定着系统的性能和稳定性。

  linux的一个重要的特点就是其源代码的公开性,所有的内核源程序都可以在

/usr/src/linux下找到,大部分应用软件也都是遵循GPL而设计的,你都可以获取相应的源

程序代码。全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中,由此引

发的一个明显的好处就是Linux修补漏洞的快速以及对最新软件技术的利用。而Linux的内

核则是这些特点的最直接的代表。

  想象一下,拥有了内核的源程序对你来说意味着什么?首先,我们可以了解系统是如

何工作的。通过通读源代码,我们就可以了解系统的工作原理,这在Windows下简直是天方

夜谭。其次,我们可以针对自己的情况,量体裁衣,定制适合自己的系统,这样就需要重

新编译内核。在Windows下是什么情况呢?相信很多人都被越来越庞大的Windows整得莫名

其妙过。再次,我们可以对内核进行修改,以符合自己的需要。这意味着什么?没错,相

当于自己开发了一个操作系统,但是大部分的工作已经做好了,你所要做的就是要增加并

实现自己需要的功能。在Windows下,除非你是微软的核心技术人员,否则就不用痴心妄想了。

二、内核版本号

  由于linux的源程序是完全公开的,任何人只要遵循GPL,就可以对内核加以修改并发

布给他人使用。Linux的开发采用的是集市模型(bazaar,与cathedral--教堂模型--对应),

为了确保这些无序的开发过程能够有序地进行,Linux采用了双树系统。一个树是稳定树

(stable tree),另一个树是非稳定树(unstable tree)或者开发树(development tree)。

一些新特性、实验性改进等都将首先在开发树中进行。如果在开发树中所做的改进也可以

应用于稳定树,那么在开发树中经过测试以后,在稳定树中将进行相同的改进。一旦开发

树经过了足够的发展,开发树就会成为新的稳定树。开发数就体现在源程序的版本号中;

源程序版本号的形式为x.y.z:对于稳定树来说,y是偶数;对于开发树来说,y比相应的稳

定树大一(因此,是奇数)。到目前为止,稳定树的最高版本是2.4.18;开发树的最新版

本是2.5.10。下载内核版本请访问。

三、为什么重新编译内核

  linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新。新的内核修订

了旧内核的bug,并增加了许多新的特性。如果用户想要使用这些新特性,或想根据自己的

系统度身定制一个更高效,更稳定的内核,就需要重新编译内核。

  通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更

稳定,并且一般会修复老版本中发现的许多漏洞等,经常性地选择升级更新的系统内核是

linux使用者的必要操作内容。

  为了正确的合理地设置内核编译配置选项,从而只编译系统需要的功能的代码,一般

主要有下面四个考虑:

  自己定制编译的内核运行更快(具有更少的代码)

  系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中)

  不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞

  将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些

四、内核编译模式

  要增加对某部分功能的支持,比如网络之类,可以把相应部分编译到内核中

(build-in),也可以把该部分编译成模块(module),动态调用。如果编译到内核中,

在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,

你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,

它都会存在,这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。

如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内

核过分庞大,缺点是你得自己来调用这些模块。

五、新版本内核的获取和更新

  linux内核版本发布的官方网站是。新版本的内核分两种,一

种是full Source版本,另外一种是patch文件,即补丁。完整的内核版本比较大,一般是

tar.gz或者是.bz2文件,二者分别是使用gzip或者bzip2进行压缩的文件,使用时需要解压

缩。patch文件则比较小,一般只有几十K到几百K,但是patch文件是针对于特定的版本的,

你需要找到自己对应的版本才能使用。

  编译内核需要root权限,以下操作都假定你是root用户。请把你需要升级的内核拷贝

到/usr/src/下(下文中以2.4.18的内核的linux-2.4.18.tar.gz为例),命令为

#cp linux-2.4.18.tar.gz /usr/src

  让我们先来查看一下当前/usr/src的内容,注意到有一个linux-2.4的符号链接,指向

一个linux-2.4.7-10(以REDHAT7.2为例)的目录。这就是你所装linux的kernel源代码,

删除这个链接。

  现在解压我们下载的源程序文件。如果所下载的是.tar.gz(.tgz)文件,请使用下面

的命令:

#tar -zxvf linux-2.4.18.tar.gz.tar.gz

  如果你所下载的是.bz2文件,例如linux-2.4.0test8.tar.bz2,请使用下面的命令

#bzip2 -d linux-2.4.18.tar.bz2

#tar -xvf linux-2.4.18.tar

  文件将解压到/usr/src/linux目录中,我们把它稍作修改:

#mv linux linux-2.4.18

#ln -s linux-2.4.18 linux

  如果下载的是patch文件,就可以进行patch操作(下面假设patch-2.4.18已经位于

/usr/src目录下了,否则你需要先把该文件拷贝到/usr/src下):

#patch -p0 < patch-2.4.18

  

六、内核编译

  通常要运行的第一个命令是:

#cd /usr/src/linux

#make mrproper

  该命令确保源代码目录下没有不正确的.o文件以及文件的互相依赖。由于我们使用刚

下载的完整的源程序包进行编译,所以本步可以省略。而如果你多次使用了这些源程序编

译内核,那么最好要先运行一下这个命令。

  确保/usr/include/目录下的asm、linux和scsi等链接是指向要升级的内核源代码的。

它们分别链向源代码目录下的真正的、该计算机体系结构(对于PC机来说,使用的体系结

构是i386)所需要的真正的include子目录。如:asm指向/usr/src/linux/include/asm-i386

等。若没有这些链接,就需要手工创建,按照下面的步骤进行:

# cd /usr/include/

# rm -r asm linux scsi

# ln -s /usr/src/linux/include/asm-i386 asm

# ln -s /usr/src/linux/include/linux linux

# ln -s /usr/src/linux/include/scsi scsi

  这是配置非常重要的一部分。删除掉/usr/include下的asm、linux和scsi链接后,再

创建新的链接指向新内核源代码目录下的同名的目录。这些头文件目录包含着保证内核在

系统上正确编译所需要的重要的头文件。现在你应该明白为什么我们上面又在/usr/src下

"多余"地创建了个名为linux的链接了吧?

  接下来的内核配置过程比较烦琐,但是配置的适当与否与日后linux的运行直接相关,

有必要了解一下一些主要的且经常用到的选项的设置。

  

配置内核可以根据需要与爱好使用下面命令中的一个:

#make config(基于文本的最为传统的配置界面,不推荐使用)

#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)

#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)

#make oldconfig(如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)

  这三个命令中,make xconfig的界面最为友好,如果你可以使用Xwindow,那么就推荐

你使用这个命令,界面如下:

  如果你不能使用Xwindow,那么就使用make menuconfig好了。界面虽然比上面一个差

点,总比make config的要好多了,下图为make menuconfig的界面:

  选择相应的配置时,有三种选择,它们分别代表的含义如下:

  Y--将该功能编译进内核

  N--不将该功能编译进内核

  M--将该功能编译成可以在需要时动态插入到内核中的模块

  如果使用的是make xconfig,使用鼠标就可以选择对应的选项。如果使用的是

make menuconfig,则需要使用空格键进行选取。你会发现在每一个选项前都有个括号, 但

有的是中括号有的是尖括号,还有一种圆括号。用空格键选择时可以发现,中括号里要么

是空,要么是"*",而尖括号里可以是空,"*"和"M"。这表示前者对应的项要么不要,要么

编译到内核里;后者则多一样选择,可以编译成模块。而圆括号的内容是要你在所提供的

几个选项中选择一项。

  在编译内核的过程中,最烦杂的事情就是这步配置工作了,很多新手都不清楚到底该

如何选取这些选项。实际上在配置时,大部分选项可以使用其缺省值,只有小部分需要根

据用户不同的需要选择。选择的原则是将与内核其它部分关系较远且不经常使用的部分功

能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能

相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用

的部分功能代码直接编译到内核中。

至于选项,因为比较复杂,只是简单做一介绍,编译时应视具体情况,参考帮助的内容再

加以选择。

1. Code maturity level options

  代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,

如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;

否则可以把它选择为N。

2. Loadable module support

  对模块的支持。这里面有三项:

  Enable loadable module support:除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。

  Set version inFORMation on all module symbols:可以不选它。

  Kernel module loader:让内核在启动时有自己装入必需模块的能力,建议选上。

3. Processor type and features

  CPU类型。内容蛮多的,不一一介绍了,有关的几个如下:

  Processor family:根据你自己的情况选择CPU类型。

  High Memory Support:大容量内存的支持。可以支持到4G、64G,一般可以不选。

  Math emulation:协处理器仿真。协处理器是在386时代的宠儿,现在早已不用了。

  MTTR support:MTTR支持。可不选。

  Symmetric multi-processing support:对称多处理支持。除非你富到有多个CPU,否则就不用选了。

4. General setup

  这里是对最普通的一些属性进行设置。这部分内容非常多,一般使用缺省设置就可以了。下面介绍一下经常使用的一些选项:

  Networking support:网络支持。必须,没有网卡也建议你选上。

  PCI support:PCI支持。如果使用了PCI的卡,当然必选。

  PCI access mode:PCI存取模式。可供选择的有BIOS、Direct和Any,选Any吧。

  Support for hot-pluggabel devices:热插拔设备支持。支持的不是太好,可不选。

  PCMCIA/CardBus support:PCMCIA/CardBus支持。有PCMCIA就必选了。

  System V IPC

  BSD Process Accounting

  Sysctl support:以上三项是有关进程处理/IPC调用的,主要就是System V和BSD两种风格。如果你不是使用BSD,就按照缺省吧。

  Power Management support:电源管理支持。

  Advanced Power Management BIOS support:高级电源管理BIOS支持。

5. Memory Technology Device(MTD)

  MTD设备支持。可不选。

6. Parallel port support

  并口支持。如果不打算使用串口,就别选了。

7. Plug and Play configuration

  即插即用支持。虽然linux对即插即用目前支持的不如Windows好,但是还是选上吧,这样你可以拔下鼠标之类的体验一下Linux下即插即用的感觉。

8. Block devices

  块设备支持。这个就得针对自己的情况来选了,简单说明一下吧:

  Normal PC floppy disk support:普通PC软盘支持。这个应该必选。

  XT hard disk support:

  Compaq SMART2 support:

  Mulex DAC960/DAC1100 PCI RAID Controller support:RAID镜像用的。

  Loopback device support:

  Network block device support:网络块设备支持。如果想访问网上邻居的东西,就选上。

  Logical volume manager(LVM)support:逻辑卷管理支持。

  Multiple devices driver support:多设备驱动支持。

  RAM disk support:RAM盘支持。

9. Networking options

  网络选项。这里配置的是网络协议。内容太多了,不一一介绍了,自己看吧,如果你对网络协议有所了解的话,应该可以看懂的。如果懒得看,使用缺省选项(肯定要选中TCP/IP networking哦)就可以了。让我们看看,TCP/IP、ATM、IPX、DECnet、Appletalk……支持的协议好多哦,IPv6也支持了,Qos and/or fair queueing(服务质量公平调度)也支持了,还有kHTTPd,不过这些都还在实验阶段。

10. Telephony Support

  电话支持。linux下可以支持电话卡,这样你就可以在IP上使用普通的电话提供语音服务了。记住,电话卡可和modem没有任何关系哦。

11. ATA/IDE/MFM/RLL support

  这个是有关各种接口的硬盘/光驱/磁带/软盘支持的,内容太多了,使用缺省的选项吧,如果你使用了比较特殊的设备,比如PCMCIA等,就到里面自己找相应的选项吧。

12. SCSI support

  SCSI设备的支持。我没有SCSI的设备,所以根本就不用选,如果你用了SCSI的硬盘/光驱/磁带等设备,自己找好了。

13. Fusion MPT device support

  需要Fusion MPT兼容PCI适配器,不用选。

14. I2O device support

  需要I2O接口适配器支持,在智能Input/Output(I2O)体系接口中使用。

15. 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。耐心点,一般说来你都能找到自己用的网卡。如果没有,你只好自己到厂商那里去要驱动了。

16. Amateur Radio support

  配置业余无线广播。

17. IrDA(infrared)support

  红外线支持。

18. ISDN subsystem

  如果你使用ISDN上网,这个就必不可少了。

19. Old CD-ROM drivers(not SCSI、not IDE)

  做的可真周到,原来那些非SCSI/IDE口的光驱谁还在用啊,自己选吧,用IDE的CD-ROM不用选。

20. Character devices

  字符设备。这个内容又太多了,先使用缺省设置,需要的话自己就修改。把大类介绍一下吧:

  I2C support:I2C是Philips极力推动的微控制应用中使用的低速串行总线协议。如果你要选择下面的Video For linux,该项必选。

  Mice:鼠标。现在可以支持总线、串口、PS/2、C&T 82C710 mouse port、PC110 digitizer pad,自己根据需要选择。

  Joysticks:手柄。即使在linux下把手柄驱动起来意义也不是太大,游戏太少了。

  Watchdog Cards:虽然称为Cards,这个可以用纯软件来实现,当然也有硬件的。如果你把这个选中,那么就会在你的/dev下创建一个名为watchdog的文件,它可以记录你的系统的运行情况,一直到系统重新启动的1分钟左右。有了这个文件,你就可以恢复系统到重启前的状态了。

  Video For linux:支持有关的音频/视频卡。

  Ftape, the floppy tape device driver:

  PCMCIA character device support:

21. File systems

  文件系统。内容又太多了,老法子,在缺省选项的基础上进行修改。介绍以下几项:

  Quota support:Quota可以限制每个用户可以使用的硬盘空间的上限,在多用户共同使用一台主机的情况中十分有效。

  DOS FAT fs support:DOS FAT文件格式的支持,可以支持FAT16、FAT32。

  ISO 9660 CD-ROM file system support:光盘使用的就是ISO 9660的文件格式。

  NTFS file system support:ntfs是NT使用的文件格式。

  /proc file system support:/proc文件系统是linux提供给用户和系统进行交互的通道,建议选上,否则有些功能没法正确执行。

  还有另外三个大类都归到这儿了:Network File Systems(网络文件系统)、Partition Types(分区类型)、Native Language Support(本地语言支持)。值得一提的是Network File Systems里面的两种:NFS和SMB分别是linux和Windows相互以网络邻居的形式访问对方所使用的文件系统,根据需要加以选择。

22. Console drivers

  控制台驱动。一般使用VGA text console就可以了,标准的80*25的文本控制台。

23. Sound

  声卡驱动。如果你能在列表中找到声卡驱动那自然最好,否则就试试OSS了。

24. USB supprot

  USB支持。很多USB设备,比如鼠标、调制解调器、打印机、扫描仪等,在linux都可以得到支持,根据需要自行选择。

25. Kernel hacking

  配置了这个,即使在系统崩溃时,你也可以进行一定的工作了。普通用户是用不着这个功能的。

  配置完后,存盘退出,当然你也可以把现在的配置文件保存起来,这样下次再配置的时候就省力气了。

接下来是编译,输入以下命令。

#make dep

#make clean

#make bzImage或make zImage

#make modules

#make modules_install

#depmod -a

  第一个命令make dep实际上读取配置过程生成的配置文件,来创建对应于配置的依赖关系树,从而决定哪些需要编译而那些不需要;第二命令make clean完成删除前面步骤留下的文件,以避免出现一些错误;make zImage和make bzImage则实现完全编译内核,二者生成的内核都是使用gzip压缩的,只要使用一个就够了,它们的区别在于使用make bzImage可以生成大一点的内核。建议大家使用make bzImage命令。

  后面三个命令只有在你进行配置的过程中,在回答Enable loadable module support (CONFIG_MODULES)时选了"Yes"才是必要的,make modules和make modules_install分别生成相应的模块和把模块拷贝到需要的目录中。

  严格说来,depmod -a命令和编译过程并没有关系,它是生成模块间的依赖关系,这样你启动新内核之后,使用modprobe命令加载模块时就能正确地定位模块。

更新

  经过以上的步骤,我们终于得到了新版本的内核。为了能够使用新版本的内核,我们还需要做一些改动:

#cp /usr/src/linux/System.map /boot/System.map-2.4.18

#cp /usr/src/linux/arch/i386/bzImage /boot/vmlinuz-2.4.18

  以上这两个文件是我们刚才编译时新生成的。下面修改/boot下的两个链接System.map和vmlinuz,使其指向新内核的文件:

#cd /boot;rm -f System.map vmlinuz

#ln -s vmlinuz-2.4.18 vmlinuz

#ln -s System.map-2.4.18 System.map

七、修改启动管理器

  如果用LILO,修改/etc/lilo.conf,添加以下项:

image=/boot/vmlinuz-2.4.18

label=linux240

read-only

root=/dev/hda2

  其中root=/dev/hda2一行要根据需要自行加以修改。

  运行:

#/sbin/lilo -v

  确认对/etc/lilo.conf的编辑无误,现在重新启动系统:

#shutdown -r now

如果是用Grub启动管理器,则添加如下几项即可。

title Red Hat linux (2.4.18)

root (hd0,0)

kernel /vmlinuz-2.4.18 ro root=/dev/hda2

Grub不需再次调用命令,自动生效。

重启以后就可以用新内核了。

inux内核在启动的时候,能接收某些命令行选项或启动时参数。当内核不能识别某些硬件进而不能设置硬件参数或者为了避免内核更改某些参数的值,可以通过这种方式手动将这些参数传递给内核。如果不使用启动管理器,比如直接从BIOS或者把内核文件用 “cp zImage /dev/fd0”等方法直接从设备启动,就不能给内核传递参数或选项--这也许是我们使用引导管理器比如LILO的好处之一吧。

LINUX的内核参数是以空格分开的一个字符串列表,通常具有如下形式:

name[=value_1][,value_2]...[,value_10]

“name”是关键字,内核用它来识别应该把“关键字”后面的值传递给谁,也就是如何处理这个值,是传递给处理例程还是作为环境变量或者抛给“init”。值的个数限制为10,你可以通过再次使用该关键字使用超过10个的参数。

首先,内核检查关键字是不是 `root=',`nfsroot=', `nfsaddrs=', `ro', `rw', `debug'或 `init',然后内核在bootsetups数组里搜索于该关键字相关联的已注册的处理函数,如果找到相关的已注册的处理函数,则调用这些函数并把关键字后面的值作为参数传递给这些函数。比如你在启动时设置参数name=a,b,c,d,内核搜索bootsetups数组,如果发现“name”已注册,则调用“name”的设置函数如name_setup(),并把a,b,c,d传递给name_setup()执行。

所有型如“name=value”参数,如果没有被上面所述的设置函数接收,将被解释为系统启动后的环境变量,比如“TERM=vt100”就会被作为一个启动时参数。

所有没有被内核设置函数接收也没又被设置成环境变量的参数都将留给init进程处理,比如“single”。

常用的设备无关启动时参数

1、init=...

设置内核执行的初始化进程名,如果该项没有设置,内核会按顺序尝试/etc/init,

/bin/init,/sbin/init, /bin/sh,如果所有的都没找到,内核会抛出 kernel panic:的错误。

2、nfsaddrs=...

设置从网络启动时NFS的启动地址,已字符串的形式给出。

3、nfsroot=...

设置网络启动时的NFS根名字,如果该字符串不是以 "/"、","、"."开始,默认指向“/tftp-boot”。

以上2、3在无盘站中很有用处。

4、no387

该选项仅当定义了CONFIG_BUGi386时才能用,某些i387协处理器芯片使用32位的保护模式时会有BUG,比如一些浮点运算,使用这个参数可以让内核忽略387协处理器。

5、no-hlt

该选项仅当定义了CONFIG_BUGi386时才能用,一些早期的i486DX-100芯片在处理“hlt”指令时会有问题,执行该指令后不能可靠的返回操作系统,使用该选项,可以让linux系统在CPU空闲的时候不要挂起CPU。

6、root=...

该参数告诉内核启动时使用哪个设备作为根文件系统。比如可以指定根文件为hda8:root=/dev/hda8。

7、ro和rw

ro参数告诉内核以只读方式加载根文件系统,以便进行文件系统完整性检查,比如运行fsck;rw参数告诉内核以读写方式加载根文件系统,这是默认值。

8、reserve=...

保留端口号。格式:reserve=iobase,extent[,iobase,extent]...,用来保护一定区域的I/O端口不被设备驱动程序自动探测。在某些机器上,自动探测会失败,或者设备探测错误或者不想让内核初始化设备时会用到该参数;比如: reserve= 0x300,32 device=0x300,除device=0x300外所有设备驱动不探测 0x300-0x31f范围的I/O端口。

9、mem=...

限制内核使用的内存数量。早期BIOS设计为只能识别64M以下的内存,如果你的内存数量大于64M,你可以指明,如果你指明的数量超过了实际安装的内存数量,系统崩溃是迟早的事情。如:mem=0x1000000意味着有16M内存,如果是mem=0x6000000,就是96M内存了。

注意:很多机型把部分内存作为BIOS的映射,所以你在指定内存大小的时候一定要预留空间。你也可以在 pentium或者更新的CPU上使用mem=nopentium关闭4M的页表,这要在内核配置时申明。

10、panic=N

默认情况,内核崩溃--kernel panic 后会宕机而不会重启,你可以设置宕机多少秒之后重启机器;也可以在/proc/sys/kernel/panic文件里设置。

11、reboot=[warm|cold][,[bios|hard]]

该选项仅当定义了CONFIG_BUGi386时才能用。2.0.22的内核重启默认为cool reboot,warm reboot 更快,使用"reboot=bios"可以继承bios的设置。

12、nosmp 和 maxcpus=N

仅当定义了 __SMP__,该选项才可用。可以用来禁用多CPU或者指明最多支持的CPU个数。

(---未完待续---)

Linux内核参数(二)

作者:grub007 发表于:2003-09-24 10:24:38

Linux内核参数(二)

__续 linux内核参数(一)

grub007 --秦霄汉

20030923 23:39

北京

内核开发和调试的启动时参数

这些参数主要用在内核的开发和调试上,如果你不进行类似的工作,你可以简单的跳过本小节。

1、debug

linux的日志级别比较多(详细信息可以参看linux/kernel.h),一般地,日志的守护进程klogd只把比DEBUG级别高的日志写进磁盘;如果使用该选项,klogd也把内核的DEBUG信息写进日志。

2、profile=N

在做内核开发的时候,如果想清楚的知道内核在什么地方耗用了多少CPU的时钟周期,可以使用核心的分析函数设置变量prof_shift为非0值,有两种方式可以实现:一种是在编译时指定,另一种就是通过“profile=”来指定;他给出了一个相当于最小单位--即时钟周期;系统在执行内核代码的时候, profile[address >> prof_shift]的值就会累加,你也可以从 /proc/profile得到关于它的一些信息。

3、swap=N1,N2,N3,N4,N5,N6,N7,N8

设置内核交换算法的八个参数:max_page_age, page_advance, page_decline, page_initial_age, age_cluster_fract, age_cluster_min, pageout_weight,bufferout_weight。

4、buff=N1,N2,N3,N4,N5,N6

设置内核缓冲内存管理的六个参数:max_buff_age, buff_advance, buff_decline,buff_initial_age, bufferout_weight, buffermem_grace。

使用 RAMDISK的参数

(仅当内核配置并编译了 CONFIG_BLK_DEV_RAM)。一般的来说,使用ramdisk并不是一件好事,系统自己会更加有效的使用可用的内存;但是,在启动或者制作启动盘时,使用ramdisk可以很方便的装载软盘等设备上的映象(尤其是安装程序、启动过程中),因为在正真使用物理磁盘之前,必须要加载一些必要的模块,比如文件系统模块,scsi驱动等(可以参见我的initrd-x.x.x.img文件分析-制作安装程序不支持的根文件系统)。

早期的ramdisk(比如1.3.48的核心)是静态分配的,必须以ramdisk=N来指定ramdisk的大小;现在ramdisk可以动态增加。一共有四个参数,两个布尔型,两个整形。

1、load_ramdisk=N

如果N=1,就加载ramdisk;如果N=0,就不加载ramdisk;默认值为0。

2、prompt_ramdisk=N

N=1,提示插入软盘;N=0,不提示插入软盘;默认为1。

3、ramdisk_size=N或者ramdisk=N

设定ramdisk的最大值为N KB,默认为4096KB。

4、ramdisk_start=N

设置ramdisk的开始块号为N,当ramdisk有内核的映象文件是需要这个参数。

5、noinitrd

(仅当内核配置了选项 CONFIG_BLK_DEV_RAM和CONFIG_BLK_DEV_INITRD)现在的内核都可以支持initrd了,引导进程首先装载内核和一个初始化的ramdisk,然后内核将initrd转换成普通的ramdisk,也就是读写模式的根文件系统设备。然后 linuxrc执行,然后装载真正的根文件系统,之后ramdisk被卸载,最后执行启动序列,比如/sbin/init。

选项noinitrd告诉内核不执行上面的步骤,即使内核编译了initrd,而是把initrd的数据写到 /dev/initrd,只是这是一个一次性的设备。

一、引言:

本文档的内容大部份内容都是从网上收集而来,然后配合一些新的截图(内核版本: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.shtm

具体如下:太多了,打了主要的部分。有些地方没有说明,看命令就明白了。

1、下载内核文件如:linux-2.4.18-3.tar.gz拷贝到/usr/src目录并解压缩。

# cd /usr/src

# tar zvxf linux-2.4.18-3.tar.gz

2、进入解压目录。(/usr/src/linux-2.4.18-3,视文件名而定)

# cd /usr/src/linux-2.4.18-3

# make mrproper

# make xconfig

3、进行选译,自己设定个性化的内核。完后点“save and exit”

4、进行编译。

# make dep

# make clean

# make bzImage (I要大写哟)

5、编译模块。

# make modules

# make modules_install

# depmod -a

6、编译完成,开始替换文件。

# cd /boot

# rm System.map

# rm vmlinuz

# mv /usr/src/linux-2.4.18-3/System.map System.map

# mv /usr/src/linux-2.4.18-3/arch/i386/boot/bzImage vmlinux

7.修改开机设定。

GRUB是 /boot/grub/grub.conf文件 lilo是/etc/lilo.conf文件

可以用命令

# mkinitrd /boot/initrd-2.4.18-3.img 2.4.18-3来生成initrd文件。

用GRUB来举例子说。(红色部分)

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE: You have a /boot partition. This means that

# all kernel and initrd paths are relative to /boot/, eg.

# root (hd0,7)

# kernel /vmlinuz-version ro root=/dev/hda10

# initrd /initrd-version.img

#boot=/dev/hda

default=1

timeout=5

splashimage=(hd0,7)/grub/splash.xpm.gz

title Red Hat Linux (2.4.18-3)

root (hd0,7)

kernel /vmlinuz-2.4.18-3 ro root=/dev/hda10

initrd /initrd-2.4.18-3.img

title win xp

rootnoverify (hd0,0)

chainloader +1

重启计算机,完工。

附加说明:

内核编译好后在以下几个位置的。

1。bzImage文件 /usr/src/linux-2.4.18-3/arch/i386/boot目录

2。外挂模块 /usr/src/linux-2.4.18-3/arch/i386/lib目录

3。已安装的模块文件 /lib/modules/2.4.18-3目录

好了就打到这儿,手都打软了,有没有稿费给我哟。找冷风肯定不行了,只有找你2位了。哈哈--

从上下载最新的内核源文件linux-2.4.20.tar.bz2,并于rh8上编译。

1. cp linux-2.4.20.tar.bz2 /usr/src

2. cd /usr/src

3. tar xvfj linux-2.4.20.tar.bz2

4. ln -sf linux-2.4.20 linux

5. cd /usr/src/linux

6. make mrproper

7. cd /usr/include/

9. ln -sf /usr/src/linux/include/asm-i386 asm

10. ln -sf /usr/src/linux/include/linux linux

11. ln -sf /usr/src/linux/include/scsi scsi

12. make menuconfig

13. make dep

14. make clean

15. make bzImage或make zImage

16. make modules

17. make modules_install

18. depmod -a

19. cp /usr/src/linux/System.map /boot/System.map-2.4.20

20. cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.20

21. cd /boot

22. ln -sf vmlinuz-2.4.20 vmlinuz

23. ln -sf System.map-2.4.20 System.map

24. /sbin/mkinitrd /boot/initrd-2.4.20.img 2.4.20

25. vi /etc/rc.sysinit,将keybdev替换成usbkbd,mousedev替换成usbmouse.

25. Grub启动, 在/etc/grub.conf中增加

title Red Hat linux (2.4.20)

root (hd0,0)

kernel /vmlinuz-2.4.20 ro root=/dev/hda2

Grub不需再次调用命令,自动生效。

重启以后就可以用新内核了。

over

make menuconfig的变化

(1) processor type and features

  删去

    symmetric multi-processing support

  增加

    MTTR (memory type range register)support. [*]

(2) general setup

  增加

    advanced power management BIOS support <*>, 然后选中以下7项

    parallel port support 中,增加 parallel port support <*>

(3) network devices中,在Ethernet (10 r 100M bit)中,选中3COM cards [*]

3c590/3c900 series <*>

Input Core Support中, 打开所有 <*> (除了joystick) (这样就支持USB)

File Systems中,打开Ext3 journalling file system support <*>

DOS FAT fs <*>

MSDOS fs support <*>

vfat (windows-95) fs support <*>

Network File Systems

SMB file system support (to mount windows shares etc.) <*>

Native Language Support

选中

simplified chinese charset <*>

traditional chinese charset <*>

USB support

打开UHCI Alternate Driver (JE) support <*>

打开OHCI (Compaq, iMacs, OPTi, SiS, ALi, ... ) support

USB Human Interface Devices (HID)

打开

USB Human Interface Device (full HID) support

HID input layer support [*]

/dev/hiddev raw HID device support [*]

USB HIDBP Keyboard (basic) support

USB HIDBP Mouse (basic) support

UHCI (Intel PIIX4, VIA, ...) support (NEW) <*>

OHCI (COMPAQ, iMacs, OPTi, SiS, ALi, ...) support <*>

最新一次的改变:

2.4.20 make menuconfig的变化

(0) Code maturity level options

  增加

    [*] Prompt for development and/or incomplete code/drivers

(1) processor type and features

  删除

    symmetric multi-processing support

(1) General Setup

  删除

    [ ] ISA bus support

(1) Plug and Play configuration

  删除

阅读(1274) | 评论(0) | 转发(0) |
0

上一篇:Apache1.3.27配置手册

下一篇:solaris安全手册

给主人留下些什么吧!~~