今天,总算是把Gentoo下困扰我N久的一个问题给解决了,把经历分享下,以便与我同命相连的人google到这篇日志。
主要症状是这样的: 使用华硕K8N4-E/Deluxe主板的,无论是使用Gentoo LiveCD 06/07版还是自编译内核(>2.6.13)启动,都无法识别到SATA硬盘设备,必须采用降级内核的方式或者使用Gentoo LiveCD 2005才能正常识别,而在Ubuntu/Fedora Core (2.6.2系列kernel)下却没有这个问题。只要是大于2.6.13的内核无论是gentoo-sources, genkernel, vanilla-sources, mm-sources, sabayon-sources甚至Ubuntu和Fedora的kernel都没用。我曾经在论坛里发过帖子询问,当时没太在意,以为降级内核到2.6.13就算解决了,但是随便kernel的不断更新,问题越来越多了,udev不能用最新的,与之而来的就是hal不能自动挂载移动储存设备,nvidia驱动不能用100系列版本,否则退出X会花屏,xorg-x11不能用7.3,因为没有100系列的nvidia驱动配合,这么多问题差点让我被迫转投ubuntu了,还好最终还是选择向Gentoo Community寻求帮助。 我在open a new thread之前就发现论坛里用同样一块主板的朋友都遇到了这个问题:
- SATA drives not recognized on kernel > 2.6.11
- Problem finding my SATA-drives
- kernel panic (solved)
- What does “VFS: Cannot open root device…” mean, exactly?
加上后面两个我之前发布的贴子/回复,搜集好所有信息后,我发了个新的帖子:
Kernels(>2.6.13) dont recognize sata disk on K8N4-E [solved]
并给当时发表/回复那些帖子的人发了封private message,也得到了这些人的热心帮助,但是始终没能解决问题。于是我去Gentoo Mailing List上发邮件,也没能得到解决的办法,最终选择了向Gentoo的Bugzilla提交bug,直接询问Gentoo Developers。
Bugzilla Bug 194531 : Kernels (>2.6.13) dont recognize the sata harddisk on ASUS K8N4-E motherboard
在这里得到了解决方案,关闭MMCONFIG PCI Access Mode可以成功识别到SATA设备,正如其中一个developer说的: Nforce motherboards don’t have the best history with the linux kernel。关闭MMCONFIG有两种方式,一是设置内核:
取消自动选择模式和MMCONFIG模式,选择BIOS或者DIRECT方式
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
CONFIG_PCI_GODIRECT=y
# CONFIG_PCI_GOANY is not set
二是在grub.conf的kernel行末尾添加pci=nommconf参数来关闭它。
同样,使用Gentoo LiveCD的话,可以在启动时加入启动参数_nommconf_来顺利引导LiveCD读取SATA硬盘。问题是解决了,不过查看下ubuntu和fedora的kernel config文件,并没有关闭MMCONFIG模式,难道还是Gentoo的问题?
在Developers的帮助下,进入Kubuntu/Fedora LiveCD,cat /proc/iomem发现其中没有那句f0000000-f3ffffff : PCI MMCONFIG 0,意味着Ubuntu和Fedora把MMCONFIG给blacklist了。哪位使用Ubuntu或者Fedora的朋友麻烦把cat /proc/iomem的结果贴出来给我看下,我想知道是Ubuntu/Fedora直接blacklist了MMCONFIG还是在硬件检测时根据我的硬件关闭了MMCONFIG。
这样,整个症结就落在了MMCONFIG上,排除了Gentoo本身的因素。
Gentoo之所以受青睐的原因不仅是它的高度可定制性和portage的包管理方式,还有它背后强大的社区支持。Gentoo的官方论坛 是目前最活跃的linux论坛之一了,里面集结了来自全世界各地的顶尖linux高手和geek,无论是帖子还是回复都是高质量的,即便是不用Gentoo Linux的朋友在里面都能找到很多有价值的东西。而Bugzilla作为forum的补充,提供了与开发人员直接的交流平台,你可以得到最专业的帮助。
I <3 Gentoo and its Community !