Linux内核配置选项 参考(3)

来源:互联网 发布:线性时不变系统 知乎 编辑:程序博客网 时间:2024/05/23 13:39
Linux 2.6.7内核编译经验.
2.6高级的特点不在说了,服务器应运上其他系统(WIN-DOS什么是比不了的了)这里只说说对我们桌面用户有什么好处.
2.6中一个主要内部改变是现在内核自身是可抢占的.也就是你操作的响应速度加快,随时可以很快的终止一个正在运行的进程.
2.6人机接口设备更好了.鼠标,键盘等外设更加灵活,支持触摸屏了。对游戏控制杆的支持也得到了提升.
2.6 是以ALSA(Advanced Linux Sound Architecture)取代过时的声音系统,电视卡的支持现在也支持的比较完善.
新硬件方面,很多XP,2003现在都不支持的LINUX现在都可以支持了!AMD64位 CPU的支持那时早就有了的! 
.......
.............太多的优秀,一时也说不完......假如你 能编译一次内核的话------如果你是硬件高手,即使不成功,相信你能学到很多东西..至少可以了解到目前的LINUX对硬件的支持程度..鄙人自认为硬件还可以,结果还是有很多2.6内核支持的东西始终不知道是什么玩意.
..............................................................

至于步骤.简单的说一下.(因为估计没几个人对这个感兴趣,加上我也实在是很懒,再加上我认为大家都比我聪明.所以也就不详细说了,抛砖引玉 ing !! )

系统:RED HAT Fedora Core 2 (所以不用担心gcc , make ,init tools .....的版本过低) grub 引导(因为我比较熟悉grub ,而且Fedora Core 2 默认的也是grub 引导)

步骤:
下载原代码到root 目录(其他目录当然也可以,我是习惯在这个底下而已)
#cd (转到root 目录)
#md5sum kernel-2.6.7 (原代码MD5码验证,这一步实际上我没做,向来比较急性子!况且还要肉眼对比那个什么字符.后来想起来了,但是已经编译成功了,也就再没去验证)
#mv kernel-2.6.7.tar.gz /usr/src (移动内核源码到/usr/src)
#cd /usr/src (进/usr/src目录)
#tar cvf /root/boot.tar /boot (打包备份boot 目录到/root/boot.tar 便于失败后快速恢复) 
#tar cvf /root/modules.tar /lib/modules/kernel-2.6.5-358 (打包备份当前模块到/root/modules.tar 便于失败后快速恢复) 
#tar vzxf kernel-2.6.7.tar.gz (解包内核源码,如果是bz格式的,则tar jvxf kernel-2.6.7.tar.bz)
#cd kernel-2.6.7 (进内核源码目录)
#make mrproper (清理代码数,首次编译可以省略.)
#make menuconfig (建立编译清单)
......
复杂的过程,我花了半个小时.成千上万个细节,一个都 不能出错,不清楚的地方可以参考默认的设置(默认太多,内核会变大,编译花费时间加长,当然,如果什么都默认的话,编译内核也就没有任何意义了),此处生成文件隐藏文件.config
.....
....
#make 
(开始依照.config 的内容编译内核极其模块---modules,机器自己跑,在我的CR600MHz上自己跑了25分钟,建议在命令模式下进行,如果你在X中,那么运行init 3到终端,然后再make,当然这个时候可以在第二个控制台登录后top 一下,你会看到gcc占用CPU 达到80-90$-----在我的机器上是这样,如果你的机器比较快,内存比较大的话,当然你可以图形界面一边编译一边xmms听歌了. )


#make modules_install (安装模块)
#maek install (安装内核到你的系统)

检查:确定grub.conf文件已经被修改,
可以
#cd /boot
#ls -l
看看有没有
initrd-2.6.7.img
vmlinz-2.6.7
#vi grub.conf
看看有没有新内核的启动选项. 
reboot 或者init 6或者 shutdown -h now (重新启动)


注意点:
1:
2.6的内核编译时候不需要执行make dep ; make clear ; make modules
不需要手工修改lilo.conf或者grub.conf
make install 完成所有的新内核配置步骤.

2:
重点在make menuconfig (这里也可以make xconfig make gconfig make oldconfig )
可以去掉的硬件一大堆,比如对自己没用的声卡驱.1000M, 10000M的网卡.1394接口,PCMCIA估计没几个人台式机有的吧?呵呵.

注意file system 中选择ext2为编译进内核,EXT3编译为模块(当然可以直接编译进内核,但是内核会大一点),否则无法启动.
如果要挂载WINDOWS 的FAT32磁盘需要编译vfat为模块.NTFS则选NTFS模块(从2.6开始支持写操作,但是偶不建议修改WINDOWS下NTFS格式的磁盘---可能损坏NTFS磁盘的数据记录) ,其他的文件系统,什么MAC文件系统支持,BeOS文件系统支持,FreeBSD文件系统支持,SOLARIS文件系统支持等等......支持的太全面了,大都可以去掉.不过要保留SMB和NFS(呵呵,除非你只是单机使用)
ISO9600文件系统(标准光盘文件系统,还有M$的光盘文件系统支持,名字叫什么J***的.记不太清楚了.最好也选择了.)
选择自己的主板芯片支持.
P4的CPU 有几个优化的选项,如果你的是P4那么SYE YES !(具体名字不太记得清楚,如果你要编译的话,自己每一项看看说明)
Preemptible Kernel一定是要选择的,几乎所有介绍2.6内核的文章都会提到此项,这就是可抢先式内核。也就是说被一些优先级很高的程序可以先与一些低优先级的程序执行,即使这些程序是在核心态下执行,从而减少内核潜伏期,提高系统的响应。这个特性可以提高桌面系统、实时系统的性能.
还有什么ACPI和APM的电源管理,依照你机器的新旧选择也不一样.

3:kernel debuging 最好都不要了,个人觉得那些都不太有用.而且有个4K stack 编译进去后据说会装不了最新的NVIDIA的驱动.
........看你的造化了.反正我是编译了六次才通过了,现在正在2.6.7内核的测试期.^_^

4.loopback设备要编译到kernel里
否则会ALL of your loopback devices are in use 

5.显卡的驱动要编到模块里.因为以后要安装驱动,升级模块.

=========================================

我最后做出来可以运行的内核大小是1.3M 

#lsmod 来看modules . 总共<10M
声卡.显卡.光;软;硬驱.都正常驱动.
补充一点:
ALSA的声卡驱动的确不一般.音质???呵呵.如果你编译好了自己就知道了.

NVIDIA官网 的显卡驱动(我用的是NVIDIA-drive-3356o.pkg.run)也真是牛,就是在LINUX下的安装稍微麻烦点,在README里边没看到支持2.6的内核,但是偶装了还是可以跑,现在好象有3.6**的了?).

偶TNT2M64/32M的显卡装了WINDOWS最新的驱动后,在 XP下跑红警都慢,98下CS还卡儿吧唧的! 
在LINUX下玩RUNE和那个什么HERH???效果牛的不的了!chrom??和"滑雪的企鹅"更是不在话下,所以偶更加确定以下事实:
"M$就是会:w:w:w:w.什么DERECT7.8.9,的确在技术含量上还真是没GL的效果好.尽管拿点钱来搞什么投资,还弄个什么这个那个渲染比赛,不外乎要求便是,你的用DIXT9.0~~~~WHICH IS ME --------M$的技术来做,蠢蛋都知道什么意思,
掏钱买个这个奖项那个奖项.不外乎就是想:多给自己树立点形象,树立一点技术先进,科技含量高的形象.
"有传闻说,微软曾经在对支持超线程的CPU按一个CPU还是按两个CPU收取授权费(license)的问题上拿不定主意,.........."

呵呵,哈哈.

注:

(游戏的名字都记得不太清楚,偶习惯的shell是bash ,而且也就懂bash,所以命令偶一般只记第一个字母,其他的都是交给TAB键了,,呵呵,谁叫我是个懒人呢.而且记性还不好,自己的生日都记不住.总是在过生日的时候吃完了方便面,接到老爸的电话提醒,于是出于补偿的扭曲心态,喝酒喝到拿铁轨当楼梯).)



转自:http://blog.chinaunix.net/uid-331645-id-2132279.html