如下内容转自chinaunix的s270768095,,感受不错 收藏一下(ps:虽然感受大部份内容似曾相识 - -|) linux
内核配置过程比较烦琐,可是配置的适当与否与往后linux的运行直接相关,有必要了解一下一些主要的且常常用到的选项的设置。
配置内核能够根据须要与爱好使用下面命令中的一个: git
#make config(基于文本的最为传统的配置界面,不推荐使用)
#make menuconfig(基于文本选单的配置界面,字符终端下推荐使用)
#make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用)
#make oldconfig(若是只想在原来内核配置的基础上修改一些小地方,会省去很多麻烦) 网络
这三个命令中,make xconfig的界面最为友好,若是你可使用Xwindow,那么就推荐你使用这个命令,界面以下: less
若是你不能使用Xwindow,那么就使用make menuconfig好了。界面虽然比上面一个差点,总比make config的要好多了,下图为make menuconfig的界面: ide
选择相应的配置时,有三种选择,它们分别表明的含义以下:
Y--将该功能编译进内核
N--不将该功能编译进内核
M--将该功能编译成能够在须要时动态插入到内核中的模块
若是使用的是make xconfig,使用鼠标就能够选择对应的选项。若是使用的是 make menuconfig,则须要使用空格键进行选取。你会发如今每个选项前都有个括号, 但有的是中括号有的是尖括号,还有一种圆括号。用空格键选择时能够发现,中括号里要么是空,要么是"*",而尖括号里能够是空,"*"和"M"。这表示前者对应的项要么不要,要么编译到内核里;后者则多同样选择,能够编译成模块。而圆括号的内容是要你在所提供的几个选项中选择一项。
在编译内核的过程当中,最烦杂的事情就是这步配置工做了,不少新手都不清楚到底该如何选取这些选项。实际上在配置时,大部分选项可使用其缺省值,只有小部分须要根据用户不一样的须要选择。选择的原则是将与内核其它部分关系较远且不常用的部分功能代码编译成为可加载模块,有利于减少内核的长度,减少内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不须要的功能就不要选;与内核关心紧密并且常用的部分功能代码直接编译到内核中。 oop
至于选项,由于比较复杂,只是简单作一介绍,编译时应视具体状况,参考帮助的内容再加以选择。 unix
1. Code maturity level options
代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,若是你要试验如今仍处于实验阶段的功能,好比khttpd、IPv6等,就必须把该项选择为Y了;不然能够把它选择为N。 code
2. Loadable module support
对模块的支持。这里面有三项: orm
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/二、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文件格式的支持,能够支持FAT1六、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
7、修改启动管理器
若是用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不需再次调用命令,自动生效。
重启之后就能够用新内核了