trulyliu 发表于 2005-3-23 10:58:38

SATA 硬盘起动不了的解决方案

论坛中有很多朋友反映,在SATA硬盘上安装好系统之后,无法正常启动,
我在上周六安装了6遍系统,也都发生该故障。
经过和 樱家塚反复讨论,经过几天熬到临晨两点(我比较菜)的实验,
最终解决了问题,在这里把经验和大家分享一下。

故障描述:
Magic1.2 final 官方正式版本,
SATA硬盘上安装系统,安装阶段都比较顺利,未出现异常。
但不能启动,一般出现类似错误信息

Mounted /proc filesystem
mounting sysfscreating block devices
vfs: cannot open root device "sda5" or unknow-block(0,0)
please append a correct "root=" boot option
kernel pannic on syncing: Unable to mount root fs on unkonw-block(0,0)

故障分析:
查看这段故障信息之前的信息,发现启动时有检测到光驱,IDE设备的信息,
并且都检测到了,但却没有检测到SATA硬盘的信息。
Magic安装程序Magic installer使用的是2.4的内核,通过加载模块的方法,
在安装阶段识别到了硬盘,一般为sda
而Magic 1.2自身,使用的是2.6的内核,2.6内核本身可以支持SATA硬盘的。
可以猜测有两种可能
1.Magic 1.2提供的2.6内核,编译时没有提供SATA的支持。
2.Magic 1.2提供了模块方式的SATA支持。但initrd镜像文件 /boot/initrd-2.6.9.img 生成时没有预载入SATA支持模块。
这两种情况,都会使启动时不能正常加载SATA硬盘。

解决方案:
经过反复实验,重新编译内核,我在自己机器上解决了问题。
我的相关硬件平台,
ASUS AV8-Delux K8T800PRO + 8237
Maxotr SATA 200G 硬盘
分区情况,
第一主分区:       NTFS (Active)   安装程序识别名称 /dev/sda1
第二扩展分区:
   第一逻辑硬盘:EXT3   /      安装程序识别名称 /dev/sda5
   第二逻辑硬盘:SWAP             安装程序识别名称 /dev/sda6
   ……

用Knoppix 3.6 的live CD启动电脑,
按F2, 可以选择两种内核,
输入knoppix26,使用2.6内核启动。
这时我的硬盘被识别成hde,
这里开始经樱家冢编辑,如有不正确的请trulyliu指正,毕竟我没有SATA,纯属纸上谈兵,呵呵。
假设分了 /、/boot、/home、swap四个区,分别为
/             /dev/hde5
/boot      /dev/hde2
/home    /dev/hde6
swap   /dev/hde7
假设 / 和 /home 使用reiserfs而/boot使用ext3(注意,一定要设置/boot所在分区使用ext2 or ext3,如果用reiserfs你需要重新编译内核把reiserfs编译进内核而非模块,并且需要在grub.conf里面添加内核参数,fstab文件里面也需要添加 notail 的挂载参数,很麻烦的)。
进入到桌面后,菜单-->knoppix-->root shell
#mount -t reiserfs /dev/hde5 /mnt/hde(knoppix自动生成了fstab)
#mount -t ext3 /dev/hde2 /mnt/hde/boot
#mount -t reiserfs /dev/hde6 /mnt/hde/home
#mount -t proc none /mnt/hde/proc       (我不知道这一步是否必须,但是一个可用的系统通常需要proc,即便是chroot的,我不会省略这一步)
#chroot /mnt/hde
#swapon /dev/hde7
至此挂载和转换环境完成并已经启动 bash,在这个环境下编译内核。
我们只需要在原有内核上增加 SATA 支持,
因此需要原内核的配置文件 /boot/config-2.6.9

#cp /boot/config-2.6.9 /usr/src/linux/.config (这里有人理解错误了,以为是 config-2.6.9.config,其实是因为原文中已经有了cd /usr/src/linux 这一步,所以省略了前面的路径名)

把 shell 窗口最大化,否则可能无法启动 make menuconfig
make menuconfig (也可以采用 make xconfig)
出现了内核配置菜单,进入到菜单
Device drivers-->ATA/ATAPI/MFM/RLL suport -->
[ ]   Support for SATA (deprecated; conflicts with libata SATA driver)
这个选项没选,我们把他选上,(注意是编译进内核,应该为 Y 而非 M ,我不知道是不是可以选 M ,没看过这个)
< >   SCSI emulation support
这个也没选上,这个选不选随意,
这个不选的情况下,我的硬盘被认成hda
选上这个选项, 我的硬盘被识别成hde
除此以外,还需要 SATA 控制器模块,根据自己的 SATA 控制器芯片型号选择一下。
补充修改完毕。

还可以根据自己的 CPU 型号,更改 CPU 的相关选项,
我修改成了 K8,因为我是 AMD64 3000+ 的 cpu :D

保存退出
make
make modules
make install
make modules_install
一切正常,内核选项不要修改太多,可能会编译失败,
如果编译失败,请重头做起。

一切都正常结束后,我们需要修改 grub 的配置文件,
vi /boot/grub/grub.conf
我原来的配置文件如下
# grub.conf generated by MagicInstaller.

# Note that you do not have to rerun grub after making changes to this file.
default=0
timeout=10
splashimage=(hd0,4)/boot/grub/splash.xpm.gz
title win2000
rootnoverify (hd0,0)
chainloader +1
title MagicLinux
root (hd0,4)s
kernel /boot/vmlinuz-2.6.9ro root=/dev/sda5 vga=791 splash=silent
initrd /boot/initrd-2.6.9.img
title MagicLinux (Graphics Mode)
root (hd0,4)
kernel /boot/vmlinuz-2.6.9 init 5 ro root=/dev/sda5 vga=791 splash=silent
initrd /boot/initrd-2.6.9.img
title MagicLinux (Console Mode)
root (hd0,4)
kernel /boot/vmlinuz-2.6.9 init 3 ro root=/dev/sda5 vga=791 splash=silent
initrd /boot/initrd-2.6.9.img
title MagicLinux (Single Mode)
root (hd0,4)
kernel /boot/vmlinuz-2.6.9 init 1 ro root=/dev/hda5 vga=791 splash=silent
initrd /boot/initrd-2.6.9.img

把 sda 都修改成了 hda, 如果你的硬盘被识别成了 hde,则修改成 hde

同理修改 /etc/fstab

保存退出,重新启动系统。

启动硬盘上的 magic 1.2
如果还发生同样的出错信息
Mounted /proc filesystem
mounting sysfscreating block devices
vfs: cannot open root device "hdat5" or unknow-block(0,0)
please append a correct "root=" boot option
kernel pannic on syncing: Unable to mount root fs on unkonw-block(0,0)

查看在这之前的硬件监测信息
应该可以识别到了硬盘,看看是别出的名称是什么,hda 还是 hde 或者其它
重新修改 /boot/grub/grub.conf 还有 /etc/fstab
这样就可以正常启动,看到 pp 的桌面了。

如果出错信息不同,探出一个 TEXT 模式话框,说根文件系统 / 没有正常加载,
那是你忘记修改 /etc/fstab 了。


经过几天的熬熬夜奋斗,终于解决了问题。

在此要特别感谢 樱家塚
是他不厌其烦的给我解答问题,互相交流,才最终把问题解决。

对Magic Linux 的开发小组也同样感谢,
虽然出了小的差错,但目前这种开发模式,不可避免的会遇到问题,
相信他们是因为缺乏硬件测试平台,才会产生这个问题的。
以后新版本开发,希望大家都参与进来,提供更多的测试平台反馈。。


I love Maigc Linux!!

bluemx 发表于 2005-3-23 12:31:03

建议官方出一个新内核安装方便一点

trulyliu 发表于 2005-3-23 22:59:36

自己顶一下。。。

樱家冢 发表于 2005-3-25 19:06:10

发现这帖没有置顶,工作失误啊,现在改过,呵呵。

Rohwa 发表于 2005-3-25 21:07:40

不好搞啊。。。。

KDE 发表于 2005-3-25 21:10:48

请稍等

Rohwa 发表于 2005-3-25 21:21:43

官方咋说列?
真郁闷了,硬盘牛了还不支持。。。。。


期待~

jozhu 发表于 2005-3-26 04:48:02

一定要knoppix吗?我想只要2.6内核的live cd都可以吧.

樱家冢 发表于 2005-3-26 13:53:24

一定要knoppix吗?我想只要2.6内核的live cd都可以吧.
是的,2.6的livecd都可以,关键在于搞清楚你的SATA硬盘到底会被识别成什么样的设备。

秦川小小牛 发表于 2005-3-28 17:00:46

可怜我的数据呀。

muyen 发表于 2005-3-28 19:29:09

我是新手,不要笑啊,一定要自己编译内核吗?可不可以给一个支持STAT的在DOS下先引导起来~~~~~~有的看没的用,痛苦啊

樱家冢 发表于 2005-3-28 23:15:30

我是新手,不要笑啊,一定要自己编译内核吗?可不可以给一个支持STAT的在DOS下先引导起来~~~~~~有的看没的用,痛苦啊
这个,安装是可以的,就是装好以后的驱动不支持的说,等内核更新吧,相信离问题解决的日子不远了。

jozhu 发表于 2005-3-29 07:59:49

楼主这里是不是写错了?

cdroot /mnt/hde 这句好象写错了吧? 在我这怎么是无cdroot这个命令?
cd root/mnt/hde我也试了,提示为无此文件。

还有就是mount /mnt/hde 这条,hde应该是装magic linux的分区吧?比如我的magic装在sda3,就写成mount /mnt/sda3。 不这样的话会有错误提示说找不到这个文件。

不知是不是这样,请高手指正

trulyliu 发表于 2005-3-29 12:05:01

chroot 是写错了,不好意思。

秦川小小牛 发表于 2005-3-30 14:57:19

那还不快快修改。
页: [1] 2 3 4
查看完整版本: SATA 硬盘起动不了的解决方案