LinuxSir.cn,穿越时空的Linuxsir!

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

给你们讲讲我昨天半夜是怎么搞定光驱的内核驱动的,哈哈。

[复制链接]
发表于 2009-12-23 08:55:17 | 显示全部楼层 |阅读模式
不得不承认,我这人很能扯,把算法里面的binary search都用上了,

原始问题如下:

http://www.linuxsir.cn/bbs/thread354002.html

虽然我知道只要把相关的驱动选上就搞定了,但是我google了半天也没有知道应咖用哪个,

在make menuconfig里面/cdrom也没有找到,但是找到一些相关的东西,比如默认内核里面没有打开对光驱的ccache的支持,

于是我干脆就开始尝试,先全选上,结果发现能用了,内核识别了我的光驱,所以肯定就在Serial ATA (prod) and Parallel ATA (experimental) drivers里面,

但是总共可能的驱动有30个左右,怎么从这30个左右里面找到我要的那一个呢?

于是乎我先选前面的一部分,编译了一下,发现没有,很好,干掉一半了,

然后从剩下的里面又选了前面的一部分,编译了一下,发现没有,很好,又干掉一半了,

就重复这个过程,结果很快就找到了,大概总共编译了4或者5次就找到相关驱动了,每次的成本是不到5分钟吧,包括重启,

需要注意的是始终要保存一个能用的内核,然后在grub.conf里面单独加一个选项,要不然出了问题就得mini-install来救命了,

每次编译内核时不要make clean,只是make,这样的话很多东西都不用再重新编译,所以每次尝试的时间成本很小,加上二分法的收敛速度很快,所以很快就搞定了。

谁有什么好的方法也介绍介绍,

比如说我已经知道光驱被识别成sr0了,能不能有什么方式找到对应的内核选项呢?
发表于 2009-12-23 09:22:28 | 显示全部楼层
其实不论用传统的pata驱动还是libata,连接光驱的控制器都必须被内核正确识别和驱动。lspci -v查一下对应的控制器有没有驱起来,如果没有就根据lspci给出的设备名称去内核里面找对应的驱动。驱动编译安装后如果能识别到ide设备但是没有光驱说明没选cdrom支持,再加上去就应该看到光驱了。
lspci -v还可以看到当前已经驱动的设备使用了何种内核模块。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-23 10:18:36 | 显示全部楼层
果然是有简单的办法啊,哈哈,一会去试试。
回复 支持 反对

使用道具 举报

发表于 2009-12-23 11:20:50 | 显示全部楼层
google "kernel configuration archive"
回复 支持 反对

使用道具 举报

发表于 2009-12-23 11:32:44 | 显示全部楼层
实验统计表明,对于一个因素问题,用“0.618法”做16次实验,就可以取得“对分法”做2500次试验所达的效果。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-12-23 11:56:35 | 显示全部楼层
Post by AutoXBC;2058423
实验统计表明,对于一个因素问题,用“0.618法”做16次实验,就可以取得“对分法”做2500次试验所达的效果。

听说过0.618法,不过没用过,看来哥们玩过实验设计。

Post by zhllg;2058420
google "kernel configuration archive"

竟然有这么好的办法。
回复 支持 反对

使用道具 举报

发表于 2009-12-23 12:25:26 | 显示全部楼层
全部编译成模块,加载起来后lsmod一下?
回复 支持 反对

使用道具 举报

发表于 2009-12-23 13:19:13 | 显示全部楼层
统计学好猛啊
回复 支持 反对

使用道具 举报

发表于 2009-12-23 14:09:49 | 显示全部楼层
进来学习,模块驱动比较复杂,经常不知道在那个地方
回复 支持 反对

使用道具 举报

发表于 2009-12-23 15:54:48 | 显示全部楼层
Post by sunwt;2058439
全部编译成模块,加载起来后lsmod一下?


我也喜欢用这个方法。但有些不能模块的,还是要实验。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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