redhat 9 VFS: Cannot open root device "LABEL=/"

在redhat 9 中安装后重新编译内核 使用的是2.4.20 经过:
从kernel.org 中下载的.
make menuconfig
make dep
make bzImage
make modules
make modules_install
mkinitrd /boot/initrd-2.4.20.img 2.4.22-wanghao
cp bzImage /boot/vmlinux-2.4.20
编译/boot/grub/grub.conf 
#boot=/dev/hda
default=1
timeout=10
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-8)
        root (hd0,1)
        kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/ hdc=ide-scsi
        initrd /boot/initrd-2.4.20-8.img
title windows2k
        rootnoverify (hd0,0)
        chainloader +1
#-------------下面的内容是我加入的-----------------#
title Red Hat Linux (2.4.22)
        root (hd0,1)
        kernel /boot/vmlinux-2.4.20 ro root=LABEL=/ hdc=ide-scsi
        initrd /boot/initrd-2.4.20.img

但是系统重新引导后显示如下:
     VFS: Cannot open root device "LABEL=/" or 00:00
请问那位朋友在redhat9 上面遇到过这样的问题.
多谢各位的回答.



 sakulagi 回复于:2003-08-27 15:51:50

豆腐兄,你加的那一段还是用的旧的initrd啊?


 我爱臭豆腐 回复于:2003-08-27 15:55:23

不是啊大哥,我使用的是新的啊.:
kernel /boot/vmlinux-2.4.20 ro root=LABEL=/ hdc=ide-scsi 

这个文件是我新生成的啊.



 sakulagi 回复于:2003-08-27 16:00:04

引用: mkinitrd /boot/initrd-2.4.22.img 2.4.22-wanghao 
...
#-------------下面的内容是我加入的-----------------# 

initrd /boot/initrd-2.4.20.img 




 sakulagi 回复于:2003-08-27 16:01:39

试试使用“root=/dev/hda2”


 我爱臭豆腐 回复于:2003-08-27 16:03:39

引用: 原帖由 "sakulagi"]
 发表:

     


还是大哥细心 :oops: .是我刚才写错了.实际上我操作的时候是对的,没有写错.只是在论坛上面贴错了.
关键是不知道问题在什么地方.这个东西在as 2.1 redhat 其他的版本上面我没有遇到过.而且刚才在google上面也没有找到什么好的解释.而且看google上面很多人都是在9上面出现的这个事情.:(  :cry:


 sakulagi 回复于:2003-08-27 16:06:25

如果试试用root=/dev/hda2呢?


 我爱臭豆腐 回复于:2003-08-27 16:10:46

引用: 原帖由 "sakulagi"]如果试试用root=/dev/hda2呢?
 发表:

     


多谢大哥的执教.好使了.下面是我的grub.conf 

#boot=/dev/hda
default=1
timeout=10
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
title Red Hat Linux (2.4.20-8)
        root (hd0,1)
        kernel /boot/vmlinuz-2.4.20-8 ro root=LABEL=/ hdc=ide-scsi
        initrd /boot/initrd-2.4.20-8.img
title windows2k
        rootnoverify (hd0,0)
        chainloader +1
title Red Hat Linux (2.4.22)
        root (hd0,1)
        kernel /boot/vmlinux-2.4.20 ro root=/dev/hda2 hdc=ide-scsi


但是我不明白的是我系统自己的那个title 可以也就是title Red Hat Linux (2.4.20-8)这个.为什么我自己写的这个就不可以那?而是要一定指定成root=/dev/hda2  ? 为什么那?


 maluyao 回复于:2003-08-27 16:18:58

两个办法
1. grub.conf 里写成  root=/dev/hdax  前面有弟兄们讲过了
2.内核中把USF 支持勾上,不改 grub.conf


 sakulagi 回复于:2003-08-27 16:21:10

能不能解释一下USF(?UFS?)的含义?


 sakulagi 回复于:2003-08-27 16:25:04

那个UFS是为了支持BSD-like系统的文件系统的操作的啊。有关系么?


 我爱臭豆腐 回复于:2003-08-27 16:27:45

是啊这个东西和uFS有什么关系啊?


 好好先生 回复于:2003-08-27 16:34:38

和title没有关系,titile可以随便写.但"root=LABEL=/ hdc=ide-scsi"必须要写对啊,不然找不到内核,肯定引导不了.原来的那个内核在系统安装时自动生成了grub.conf,它能找到/,但是新的内核没有那么智能.


 我爱臭豆腐 回复于:2003-08-27 17:27:44

引用: 原帖由 "好好先生"]和title没有关系,titile可以随便写.但"root=LABEL=/ hdc=ide-scsi"必须要写对啊,不然找不到内核,肯定引导不了.原来的那个内核在系统安装时自动生成了grub.conf,它能找到/,但是新的内核没有那么智能.
 发表:

     


多谢啊.知道了:) 看来这个东西并不是很智能啊:) :wink:


 maluyao 回复于:2003-08-27 17:51:57

道理我说不太上来,但就是和UFS 有关系,
当grub.conf写为
root=LABEL=SOMETHING
内核至少可以读到分区的Label (和Windows 下的Label 含义相同),而UFS 支持好象就是干这个用的

你可以试一下,这是我走了很多弯路才总结出来的教训. 

compile kernel 的方式很多,但我觉得俺老马的办法最为标准,建议参考
http://vr.scholarbook.com/nuke/modules.php?name=Sections&op=viewarticle&artid=23
这是RedHat 的官方方法,RH300教材上推荐的.


 text2002 回复于:2004-02-10 10:11:30

为什么一定要指定成root=/dev/hda2 ?
hdc项指的是什么?


 gaussong 回复于:2005-08-03 11:16:59

期待这个问题——不知道大伙有没有好的解决方法?
我最近在VMWARE里面安装RH 9,就遇到这样的问题! ;)


 myforever 回复于:2005-08-16 23:16:12

引用: 原帖由 "text2002" 发表:
为什么一定要指定成root=/dev/hda2 ?
hdc项指的是什么?



root=/dev/hda2 是指定根文件系统的分区位置

hdc是IDE通道2上的master盘


 q1208c 回复于:2005-08-16 23:35:50

这个问题我以前遇到过, 

rh9 的 kernel source 好象有点问题, 

在 config 时好象有个关于 LABEL 的选项, 可能是在 filesystem 那一项, 这个在 rh9 的 kernel source 中默认的 .config (就是空的时候自动生成的那个) 里好象没选中的. 
豆腐兄可以试试.


 Mc_Hill 回复于:2005-08-16 23:57:52

各位老哥,我想问一下豆腐前后写的引用: root=LABEL=/ 
 与 

引用: root=/dev/hda2
 有什么区别?

新手


 topwolf 回复于:2006-06-13 21:20:20

我发现写这个东西的时候,应该先用fdisk -l 看一下root在那个盘,再来写grub.conf。



我来说一下这个LABEL吧。
/dev/hdc2这种属于绝对硬盘定位,hda-d分别代表两个IDE通道的4个接口,hdc2就是第二个IDE接口主盘的第二分区,这是linux最早采用的标示硬盘分区的方法,优点是简单直观。
缺点就是不灵活,比如如果我把硬盘接到另外的ide口或者调换主从盘,则分区表示方法就会变掉,grub和fstab还按照老的标示挂盘的话就会造成无法引导。

所以Redhat从9(好像8也有,记不清了)开始使用了新的硬盘分区表示方式-----分区Label。简单说就是给每个分区一个类似于windows磁盘卷标的特殊Label信息,grub和fstab通过查找这个Label来定位磁盘分区。即使因为某些原因hdc变成hdd或者其他hdX,但分区的label没变的话,grub还是可以通过label找到这个分区。Redhat的分区工具一般会把分区的挂接点作为分区的label,例如根分区的label就是“/”usr分区的label就是“/usr”,依次类推。
采用了label的标示方式后就不用担心设备名字换掉的问题了,同时grub.conf和fstab都要采用label的方式来定位磁盘分区,大家可以对照自己机器的grub.conf和fstab来看就知道了。
忘了说一点,察看和修改分区label的工具为e2label。

对于lz的问题应该是属于编译内核时没有打开内核的label支持功能,导致grub无法找到label对应的分区,具体这个选项名字叫什么忘记了,好像不是前面某位所说的UFS吧,不过分区Label功能确实是来自UFS。





刚才查了一下,这个选项在我的AS4系统里面叫做BSD disklabel (FreeBSD partition tables) support,默认是选中的,不知道RH9是不是这个,或者真的有可能放在UFS支持里也说不定。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值