LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2744|回复: 13

[==LFS精华系列==]在编译内核上多几句嘴

[复制链接]
发表于 2003-3-23 09:17:27 | 显示全部楼层 |阅读模式
本文转载自linuxfans.org的Debian/LFS/Gentoo专题版,是Kuye版主的大作,原文链接:
http://www.linuxfans.org/nuke/mo ... ewtopic&t=15177

这里的内核选项全部是到本文截止日期时(2003年3月21日)最新的 gentoo-2.4.20-r2 版内核,所以将来如果发生改变(2.5.x 内核让我有这种感觉),请不要发出什么惊讶或者诧异的声音。
这里所介绍的内容也仅仅是以前没有出现过的(出现过了吗?如果出现过就忽略别看了 ^_^),至于众人皆知的东西我也懒得说(我用拼音,打字慢,还容易出错)。

这里所有的内容仅仅是我的个人意见,如果您有任何建议,请跟帖。

我这人一向多嘴(虽然现实生活中完全相反),还是不多说了。。。
---------------------------------------------------------

1. Code maturity level options
-> Prompt for development and/or incomplete code/drivers
它的意思是启用内核中一些“不稳定代码”以换取更多功能。
说是不稳定,其实 Linux 内核本身在稳定性方面还是非常令人满意的。
反倒是如果你不启用它的话可能会“我的网卡驱动怎么找不到啊”,“我的控制台怎么不能上 800x600 啊”。
所以,这是必选的。

2. Loadable module support - 模块支持
-> Set version information on all module symbols
模块支持这是每个内核所必选的。
但是这里的“将内核版本号整合进所有模块符号中”,我个人并不推荐这样做,尤其是当需要使用第三方已经编译好的模块时(典型就是 nvidia 卡驱动 3182 版以前的)
因为这样可能会导致在 insmod 时出现“模块于当前内核版本不符的提示”。
个人意见,别选它。

3. Processor Type and Features - 处理器类型和特性
-> Processor family
这里请按照您的 CPU 类型选择合适的选项。
唯一需要注意的就是如果您是使用 gcc 3.1 版(现在应该都是了吧?),最好选择后面据有(gcc>31)的选项,这样会看见在 make bzImage(bzDisk) 时会加入一些特殊的优化选项,就如同我们在 /etc/make.conf 中修改 CFLAGS/CXXFLAGS 的意义一样。
所以,为了 Gentoo 更快一步,请注意这一点。

-> /dev/cpu/*/msr - Model-specific register support 和 /dev/cpu/*/cpuid - CPU Information support
没有两个以上处理器选了也没什么意思。。。

-> Preemptible Kernel
据说可以增加 Linux 内核的抢先式工作能力(之所以这样说是因为我不信它能把 Linux 的分时系统完全改成抢先式),能有效提高 Linux 在运行 XWindow 类图形软件的效率(我硬件可能太烂了,怎么也没感觉出来)。
个人意见:爱选就选,不选白不选。

4. Block devices - 块设备
-> Loopback device support
“回环设备支持”,偶尔会用到的(如 mount iso 时),不过几率很少。
建议编译成模块

5. Networking options - 网络选项
-> Socket Filtering
和我一样不拨号而使用 DHCP 解析的选上它。。。

6. Input core support
如果没有 USB 的键盘鼠标那这里的内容一项也不用选

7. Character devices- 字符设备
-> Enhanced Real Time Clock Support
“增强性实时钟支持”,启用后将生成 /dev/rtc 设备。
这个非常有用,Mplayer 可以用它同步声音和图像(如果没有它的话 mplayer 将使用 sleep() 函数计算声音和图像时间,可能会导致图像比声音快一截),Vmware 也需要它。
请务必选中它。

-> Direct Rendering Manager (XFree86 DRI support)
“直接渲染支持”,这个对非 Nvidia 显卡非常有用,它能使 xfree 直接操作显卡可以达到接近硬件加速的水平。
但仅仅是性能接近硬件加速,并不能和 Nvidia 卡的驱动相媲美。我的 TNT2 加 4192 驱动跑 Quake3 可以稳定 83fps/s,记得以前某人的 ATI 8500 显卡(CPU主频不记得了,反正比我的快),也只能在 6x fps/s。
所以,使用非N卡的朋友,如果您想在 Linux 下更好地跑 3D 游戏,最好还是换一块 Nvidia 的显卡,如果您暂时还不想换显卡,就选上它吧。
(和我一样使用 N 卡的不要选它!)
(btw: 不知道 ATI 的新 Linux 驱动怎么样。。。哪位介绍一下使用后的感受?!)

8. File system - 文件系统
-> Supermount removable media support
supermount,可以在插入光盘时根据 fstab 自动 mount,推出时自动 umount。
还记得当第一次在 2.4.19 版 gentoo 内核看见它时可真是激动啊,这可是以前只有在 Mandrake 里才能享受到的“优待”啊,咱们 Genter 可真是幸福~!
不过问题来了,Gentoo 出于安全性考虑,只允许 uid=0 的超级用户(如 root) mount,换句话说就是我们就算打开了这个功能后也只能得到一个错误提示罢了。。。
比起这个功能,我还是希望我的机器只有我能随意加载文件系统,所以,我只有忍痛割爱了。
要是您想试试这个功能,请降低 mount 的 uid 使普通用户也能运行它。

-> Native Language Support
这里我不想多说,最起码把 cp437,cp936,iso 8859-1 编译成模块,对,没看错,是说模块,不是编译进内核!
 楼主| 发表于 2003-3-23 09:18:39 | 显示全部楼层
2. Loadable module support - 模块支持
-> Set version information on all module symbols
模块支持这是每个内核所必选的。
但是这里的“将内核版本号整合进所有模块符号中”,我个人并不推荐这样做,尤其是当需要使用第三方已经编译好的模块时(典型就是 nvidia 卡驱动 3182 版以前的)
因为这样可能会导致在 insmod 时出现“模块于当前内核版本不符的提示”。
个人意见,别选它。
前两天一个兄弟的问题就是这样的,我给说反了,不好意思:)
发表于 2003-3-23 09:45:12 | 显示全部楼层

module version的那个问题

内核里面的帮助好像说得糊里糊涂的
我看了好几遍,觉得选Y也不是,选N也不是
 楼主| 发表于 2003-3-23 09:48:45 | 显示全部楼层
看上面的应该是选N啊,不过我的驱动只有nvidia要另装的,所以也没出过什么问题。
发表于 2003-3-23 10:39:59 | 显示全部楼层
好想给你精一下, 这样以后我再编译新版内核的时候忘记参数就可以直接查精华区了
发表于 2003-3-23 11:16:43 | 显示全部楼层
我不觉得有他说的那个问题????
发表于 2003-3-23 14:50:44 | 显示全部楼层
-> Direct Rendering Manager (XFree86 DRI support)
"直接渲染支持",这个对非 Nvidia 显卡非常有用,它能使 xfree 直接操作显卡可以达到接近硬件加速的水平。
但仅仅是性能接近硬件加速,并不能和 Nvidia 卡的驱动相媲美。我的 TNT2 加 4192 驱动跑 Quake3 可以稳定 83fps/s,记得以前某人的 ATI 8500 显卡(CPU主频不记得了,反正比我的快),也只能在 6x fps/s。
所以,使用非N卡的朋友,如果您想在 Linux 下更好地跑 3D 游戏,最好还是换一块 Nvidia 的显卡,如果您暂时还不想换显卡,就选上它吧。
(和我一样使用 N 卡的不要选它!)
(btw: 不知道 ATI 的新 Linux 驱动怎么样。。。哪位介绍一下使用后的感受?!)

---------------------------
我在用8500,用到这里的时候,只要把agp gart编译成模块就可以了,自带的什么驱动千万不能要

如果是gentoo,装xfree 4.3, emerge xfree-drm就行了,还是那句,kernel带的驱动不能要。如果是9500以上,老老实实用4.2.1,然后emerge ati-driver.

性能上,比大多人预想的要好(ati的卡在linux下完全不能用/根本没有驱动等等),但是比我预想的差。。同设置下,quake3一般有100多fps,而windows有200FPS...anyway, much better than TNT2.

btw, gcc2编译的module一般不能用在gcc3编译的kernel里面..倒是版本号差点无所谓的,insmod -f就行
 楼主| 发表于 2003-3-30 13:39:02 | 显示全部楼层
我现在就是用2.95.3的gcc来编译内核了,因为pure lfs里推荐这样做。
发表于 2003-3-30 15:34:27 | 显示全部楼层
SIS的显卡怎么班??
也要另装驱动吗?
发表于 2003-3-30 16:26:53 | 显示全部楼层
-> Native Language Support
这里我不想多说,最起码把 cp437,cp936,iso 8859-1 编译成模块,对,没看错,是说模块,不是编译进内核!也要另装驱动吗?

为什么是模块?那位老大给我一个理由呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表