LinuxSir.cn,穿越时空的Linuxsir!

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

找不到光驱了(已解决)

[复制链接]
发表于 2008-5-16 20:54:01 | 显示全部楼层 |阅读模式
由于不常用光驱,因此不能肯定到底是做了什么之后才使得光驱不能用的。

之前用2.6.24内核时有用过光驱。

现在用2.6.25-r3版,不知道安装了openrc后是不是会导致udev不能认出光驱?

用lspci命令可以看到
03:00.0 IDE interface: Marvell Technology Group Ltd. Device 6121 (rev b1)
我的主板上用Marvell程序来接一个ide接口的dvd。

dmesg | grep cd命令看不到任何关于光驱的信息。

/dev下没有sr0设备。


而在同一个机器上的另一个发行版fedora 8可以使用光驱。

找了好几天,一直找不到答案,希望有兄弟能路过看看,谢谢了。

而且我找不到udevstart命令。
发表于 2008-5-16 23:57:02 | 显示全部楼层
fedora的内核是否相同
内核配置是否相同
回复 支持 反对

使用道具 举报

发表于 2008-5-17 02:09:03 | 显示全部楼层
楼主也是 Marvell 呀,我也是,和楼主情况一样,2.6.24 可以顺利支持,同样的内核配置,2.6.25 就无法识别出光驱,我只好又换回 2.6.24 了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-17 06:23:47 | 显示全部楼层
Post by yyccrasher;1850659
楼主也是 Marvell 呀,我也是,和楼主情况一样,2.6.24 可以顺利支持,同样的内核配置,2.6.25 就无法识别出光驱,我只好又换回 2.6.24 了


原来如此。看来只好等待了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-17 06:26:15 | 显示全部楼层
Post by zhllg;1850633
fedora的内核是否相同
内核配置是否相同


都不一样。fedora的内核比较老,而且只是用它的默认配置。gentoo下用2.6.24内核配置文件来make oldconfig 2.6.25-r3内核也没有用。
回复 支持 反对

使用道具 举报

发表于 2008-5-17 11:49:31 | 显示全部楼层
重新编译一下内核吧,吧Include IDE/ATAPT CDROM support选上,如果是ide的光驱的话
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-17 17:25:58 | 显示全部楼层
Post by jaychun;1850756
重新编译一下内核吧,吧Include IDE/ATAPT CDROM support选上,如果是ide的光驱的话


这个都有。我再看看。
回复 支持 反对

使用道具 举报

发表于 2008-5-20 09:38:34 | 显示全部楼层
折腾了一下,算是解决了。

找到内核中 drivers/ata/ahci.c 这个文件,大概在 700 行左右,会有一段:

[PHP]
        /*
         * Temporary Marvell 6145 hack: PATA port presence
         * is asserted through the standard AHCI port
         * presence register, as bit 4 (counting from 0)
         */
        if (hpriv->flags & AHCI_HFLAG_MV_PATA) {
                if (pdev->device == 0x6121)
                        mv = 0x3;
                else
                        mv = 0xf;
                dev_printk(KERN_ERR, &pdev->dev,
                           "MV_AHCI HACK: port_map %x -> %x\n",
                           port_map,
                           port_map & mv);

                port_map &= mv;
        }
[/PHP]

这段貌似就是相对 2.6.24 新加入的 Marvell 相关的代码,貌似就是多了个 if (pdev->device == 0x6121) 的判断,尝试着去掉,变成:
[PHP]
        if (hpriv->flags & AHCI_HFLAG_MV_PATA) {
                mv = 0xf;
                dev_printk(KERN_ERR, &pdev->dev,
                           "MV_AHCI HACK: port_map %x -> %x\n",
                           port_map,
                           port_map & mv);

                port_map &= mv;
        }
[/PHP]

然后重编译内核,发现可行,虽然不知道原理,但是效果达到了,不妨试试看~ ;)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-22 14:46:39 | 显示全部楼层
非常感谢yyccrasher,你的方法我试了,发现单是删除if (pdev->device == 0x6121) mv = 0x3;else还不够,还要屏蔽掉下面这行
{ PCI_VDEVICE(MARVELL, 0x6121), board_ahci_mv }
这样,重新编译后就可以使用光驱了,否则还是不行。不过我lspci的结果,检验Marvell还是6121,但是,这并不影响使用。
03:00.0 IDE interface: Marvell Technology Group Ltd. Device 6121 (rev b1)

最后再次感谢yyccrasher的帮助。

我想了想,是不是lspci把我的marvell设备给识别错了,本来应该是6145的,但是它给识别成6121了,所以就不能正确使用了。不知道到底是哪个部分来识别marvell的版本的?
回复 支持 反对

使用道具 举报

发表于 2008-5-22 15:15:40 | 显示全部楼层
使用下面的命令看看能否找到设备
wodim --devices  
cdrecord --scanbus
回复 支持 反对

使用道具 举报

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

本版积分规则

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