今天,总算是把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 !
yucca@yucca-desktop:~$ cat /proc/iomem
00000000-0009f3ff : System RAM
00000000-00000000 : Crash kernel
0009f400-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000ce1ff : Video ROM
000f0000-000fffff : System ROM
00100000-3fedffff : System RAM
00100000-002f7d25 : Kernel code
002f7d26-003dce83 : Kernel data
3fee0000-3fee2fff : ACPI Non-volatile Storage
3fee3000-3feeffff : ACPI Tables
3fef0000-3fefffff : reserved
3ff00000-3fffffff : pnp 00:0d
d0000000-dfffffff : PCI Bus #01
d0000000-dfffffff : 0000:01:00.0
e0000000-efffffff : reserved
fa000000-fcffffff : PCI Bus #01
fa000000-faffffff : 0000:01:00.0
fa000000-faffffff : nvidia
fb000000-fbffffff : 0000:01:00.0
fc000000-fc01ffff : 0000:01:00.0
fdc00000-fdcfffff : PCI Bus #03
fdd00000-fddfffff : PCI Bus #03
fde00000-fdefffff : PCI Bus #02
fdeff000-fdefffff : 0000:02:00.0
fdeff000-fdefffff : r8169
fdf00000-fdffffff : PCI Bus #02
fdf00000-fdf1ffff : 0000:02:00.0
fe024000-fe027fff : 0000:00:14.2
fe024000-fe027fff : ICH HD audio
fe028000-fe0283ff : 0000:00:14.0
fe029000-fe0290ff : 0000:00:13.5
fe029000-fe0290ff : ehci_hcd
fe02a000-fe02afff : 0000:00:13.4
fe02a000-fe02afff : ohci_hcd
fe02b000-fe02bfff : 0000:00:13.3
fe02b000-fe02bfff : ohci_hcd
fe02c000-fe02cfff : 0000:00:13.2
fe02c000-fe02cfff : ohci_hcd
fe02d000-fe02dfff : 0000:00:13.1
fe02d000-fe02dfff : ohci_hcd
fe02e000-fe02efff : 0000:00:13.0
fe02e000-fe02efff : ohci_hcd
fe02f000-fe02f3ff : 0000:00:12.0
fe02f000-fe02f3ff : ahci
fec00000-ffffffff : reserved
amd690g+amd 3600+
ubuntu 7.10 x86
already bought PSP-2000 , LOL~
@ yucca: thx very much,似乎ubuntu确实是默认blacklist mmconfig了。你用的nForce的板还是intel的啊?
@ Eliziac: 此女不是一般的FB啊…what’s the your next gadget?
老大不是说了是amd的690G了吗
不好意思,没注意到最下面一行 :P
已经确定ubuntu是默认关闭了mmconfig了,ubuntu的kernel git repository里commit了个UBUNTU: Disable MMCONFIG by default。