由于不常用
光驱,因此不能肯定到底是做了什么之后才使得
光驱不能用的。
之前用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可以使用
光驱。
=============================================================================
linuxsir上的
兄弟帮助我解决了这个问题:
折腾了一下,算是解决了。
找到内核中 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;
}
这段貌似就是相对 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;
}
然后重编译内核,发现可行,虽然不知道原理,但是效果达到了,不妨试试看~
===================================================================
非常感谢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的版本的?
=====================================================================
使用下面的命令看看能否找到设备
wodim --devices
cdrecord --scanbus
阅读(1173) | 评论(0) | 转发(0) |