LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2615|回复: 13

[申精]The root block device is unspecified or not detected解决一法

[复制链接]
发表于 2005-12-28 15:22:27 | 显示全部楼层 |阅读模式
没想到自己的SATA硬盘安装Gentoo这么艰辛,按照handbook上的指南按部就班地安装,结果死活装不上,出错提示如下:
  1. [color="Lime"]>> [/color]Activating udev
  2. [color="lime"]>> [/color]Determining root device...
  3. [color="Red"][b]!! [/b][/color]  Block device /dev/sda3 is not a valid root device...
  4. [color="red"][b]!!  [/b][/color] The root block device is unspecified or not detected.
  5. [color="Gray"]Please specify a device to boot,or  "shell" for a shell...[/color]
  6. boot() ::
复制代码


刚开始在sir的Gentoo版面寻找答案,大多数说是所需的文件系统要以非模块的形式编译进内核,然后把SATA相关驱动也编译进内核。我是个懒人,先用genkernel --menuconfig udv all编译内核,结果不行,出现同样的错误提示,于是直接把LiveCD的内核和initrd拿来用,还是不行,这才感觉问题应该不在内核上。反复看提示,总觉得是Grub不认SATA硬盘。后来经证实的确如此。其实只要在[color="Blue"]grub.conf内,把kernel 那一句里加入 [color="Red"]
  1. doscsi
复制代码
这个命令行就可以了。提供一个我的样例:

  1. default 0
  2. timeout 5
  3. splashimage=(hd0,5)/boot/grub/splash.xpm.gz
  4. title=Gentoo Linux 2.6.12-r6
  5. root (hd0,4)
  6. kernel /kernel-genkernel-x86-2.6.12-gentoo-r6 root=/dev/ram0 real_root=/dev/sda3 ramdisk_size=8192  [color="red"]doscsi[/color] udev
  7. initrd /initramfs-genkernel-x86-2.6.12-gentoo-r6
复制代码



PS:
为了找到解决办法,我可是在www.gentoo.org 潜伏了好几天,一直没有放弃安装Gentoo,直到终于有所发现。在InstallGentoo版面,一个人和我的配置差不多,分区、设置也一样(都是按handbook来的)结果也遇到了和我一模一样的错误。于是我一直盯着那个帖子,过了两天才有人点明正道,说查看其他版本的linux中的grub设置中有doscsi这个参数,叫我们试试看,结果一试还真解决了问题!
发表于 2005-12-28 16:38:20 | 显示全部楼层
我的也是 sata 的硬盘,但是 grub.conf 并没有加 doscsi 这个参数,却没有问题。
回复 支持 反对

使用道具 举报

发表于 2005-12-28 16:41:59 | 显示全部楼层
对呀,我这个也没有问题啊
回复 支持 反对

使用道具 举报

发表于 2005-12-28 17:03:12 | 显示全部楼层
原来这样啊。
我的不是sata的
不用担心。
回复 支持 反对

使用道具 举报

发表于 2005-12-28 19:22:05 | 显示全部楼层
我用的就是SATA的硬盘,日立的,100G,没有这么麻烦!
在grub下,我觉得需要注意的有两点:
1)编译内核的时候一定要加入对SATA的支持(在SCSI那个栏目中)
2)理解好
(hd0) —— 第一个IDE的master
(hd1) —— 第一个IDE的slave
(hd2) —— 第二个IDE的master
(hd3) —— 第二个IDE的slave

所以,hda1、sda1对应的都是(hd0,0),其他的以此类推!
回复 支持 反对

使用道具 举报

发表于 2005-12-28 21:27:48 | 显示全部楼层
是内核参数配置的问题啊
我在grub里根本就没改,
以前也遇到楼主的问题,后来编译内核改了配置就成了
回复 支持 反对

使用道具 举报

发表于 2005-12-28 21:52:52 | 显示全部楼层
最初也遇到过这样的问题,折腾了我一个星期。后来,我把针对自己的 SATA 总线的那部分模块编译进内核(不是作为模块加载),就行了。不知道大家是不是这样解决的?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-12-28 22:03:20 | 显示全部楼层
楼上的各位都是自己编译内核,我是在VMware下安装的Gentoo,lspci里的SCSI控制器是LSI的,怎么编译内核都不行,后来干脆用LiveCD里的内核,可是没有doscsi这句就不能detect root,只有加入doscsi这句才能顺利启动。
回复 支持 反对

使用道具 举报

发表于 2005-12-28 23:32:49 | 显示全部楼层
没有楼主说的那么恐怖吧,
尽管我的不是 SATA 硬盘。

我见其他人也装的很顺利啊!
回复 支持 反对

使用道具 举报

发表于 2005-12-28 23:34:03 | 显示全部楼层
我前一阵子也碰到这个问题,加了doscsi也没用,那篇帖子我也看了(可能是那篇吧)。其实还是要把对scsi的支持放进去才解决问题。VMware用了FusionMPT(好像叫这个,机器在公司我现在看不到)的scsi驱动(在编译时搜索一把53c1030,可以看到location,不在scsi的那个目录,2.6.14里FusionMPT里第一个就是)。不需要把所有scsi驱动都放进去的(就算把scsi目录下所有都放进去也没有用,因为FusionMPT不在那个目录下)。

我的经验是:把lspci出来的信息编译时搜索,即快又准。(搜索不会不知道把,“/”就是)
回复 支持 反对

使用道具 举报

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

本版积分规则

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