QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: trulyliu

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

[复制链接]
发表于 2005-7-1 15:26:00 | 显示全部楼层
安装一台机器,选择好STAT和scsi模拟还是不行

后来把scsi下的前两项都选中,并且把scsi支持选为
编译进内核,再把scsi里low-level ...下的3ware选
上才搞定。
回复

使用道具 举报

发表于 2005-7-5 21:15:27 | 显示全部楼层

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

[quote:64494d4238="trulyliu"]论坛中有很多朋友反映,在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.9  ro 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!![/quote]

昏!这个是Magic linux的!Redhat 适用么?我是ata+sata,848p,2.4G 赛龟,装FC3,kernel panic.............
回复

使用道具 举报

发表于 2005-7-6 14:51:29 | 显示全部楼层
1.2 final 使用的内核不支持 SATA,但是后续版本的新内核是支持的。
回复

使用道具 举报

发表于 2005-7-13 12:22:15 | 显示全部楼层
那个版本支持sata阿...给个说明,还有MG的最新版本是那个阿?给个下载连接..MG的主页也不给说明..
回复

使用道具 举报

发表于 2005-7-13 16:47:01 | 显示全部楼层
光盘里的那个不支持,最新的那个看过config了,似乎缺少scsi方面的选项,可能也不支持,其他的应该是支持的,多试试吧。
回复

使用道具 举报

发表于 2005-10-21 21:12:00 | 显示全部楼层
2.0的还是这样啊
回复

使用道具 举报

发表于 2005-10-22 17:04:19 | 显示全部楼层
[code:1]
Device drivers-->ATA/ATAPI/MFM/RLL suport -->
[ ] Support for SATA (deprecated; conflicts with libata SATA driver)
这个选项没选,我们把他选上,(注意是编译进内核,应该为 Y 而非 M ,我不知道是不是可以选 M ,没看过这个)
[/code:1]

究竟这个要不要选? 大家有 SATA 的,总结一下内核的编译选项嘛。
回复

使用道具 举报

发表于 2005-10-22 17:13:04 | 显示全部楼层
[quote:7425f90086="zslevin"][code:1]
Device drivers-->ATA/ATAPI/MFM/RLL suport -->
[ ] Support for SATA (deprecated; conflicts with libata SATA driver)
这个选项没选,我们把他选上,(注意是编译进内核,应该为 Y 而非 M ,我不知道是不是可以选 M ,没看过这个)
[/code:1]

究竟这个要不要选? 大家有 SATA 的,总结一下内核的编译选项嘛。[/quote]

这个用问么?
好像 Kernle 里只有这么一个写着 Support 和 SATA 两个单词的选项…………

我觉着他是不是属于那种通用驱动支持的东西?
回复

使用道具 举报

发表于 2005-10-22 17:35:56 | 显示全部楼层
[quote:8d3d59707d="jiangtao9999"][quote:8d3d59707d="zslevin"][code:1]
Device drivers-->ATA/ATAPI/MFM/RLL suport -->
[ ] Support for SATA (deprecated; conflicts with libata SATA driver)
这个选项没选,我们把他选上,(注意是编译进内核,应该为 Y 而非 M ,我不知道是不是可以选 M ,没看过这个)
[/code:1]

究竟这个要不要选? 大家有 SATA 的,总结一下内核的编译选项嘛。[/quote]

这个用问么?
好像 Kernle 里只有这么一个写着 Support 和 SATA 两个单词的选项…………

我觉着他是不是属于那种通用驱动支持的东西?[/quote]

确实要问一下,因为同 KanKer 讨论时,他说这是属于 deprecated (过时)的东西,会与  libata SATA driver 冲突,sata 硬盘会模拟成 ide 硬盘,出现古怪的 hde 设备名称。

不知有 SATA 设备的仁兄们怎样取舍的?
回复

使用道具 举报

发表于 2005-10-22 17:49:23 | 显示全部楼层

那就不知道了,我的机器是 IDE 的…………
回复

使用道具 举报

发表于 2005-10-22 17:53:44 | 显示全部楼层
看了下 kernel 的 xconfig 里的标注,确实是 deprecated ,并且说明了确实和 libata 冲突。
SCSI 驱动里也有 SATA 的驱动,不知道这两个有没有联系。
是不是 SCSI  里那些驱动打开了就不用 SATA support 了?
回复

使用道具 举报

发表于 2006-4-26 18:03:59 | 显示全部楼层
好像 Device Drivers -> SCSI device support -> SCSI low-level drivers -> Serial ATA (SATA) support
里有sata的选项(包括各种芯片的控制器选项)


另外想说的是可以避开设备名影响起动的方法
就是使用label
label和win下的概念一样
就是可以帮分区一个标签(像名字一样,内核选项里支持就行了,不过一般的都
支持使用label,ml1.2的也支持,
可以给分区一个标签,的命令有tune2fs mke2fs 和 e2label
(插说一下,tune2fs是用来把ext2变成ext3,是无损数据的
我试过了,把我ml系统原来ext2变成ext3文件格式了
tune2fs -j /dev/hda1 -L ml  就行了(L参数是设其标签为ml)
ext3的确,检查硬盘时快多了)
当然e2label是专门用来给分区设标签的
前两个命令只是有-L 的参数可以设标签而已

如果ml安装到/dev/hda1
那么 e2label /dev/hda1 ml
就是grub.conf中用root=LABEL=ml  来代替root=/dev/xxx
在fstab文件中也相应地修改,把/dev/xxx    /   ext3 defaults  0 0改成 LABEL=ml     /    ext3 defaults 0 0
这样就行了,无论识别是sda还是hda还是hde都能正常起动了
当然你可以给其它区设标签,然后同样使用标签来挂载
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-28 17:39 , Processed in 0.080444 second(s), 13 queries .

© 2021 Powered by Discuz! X3.5.

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