在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
不是啊大哥,我使用的是新的啊.:
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
但是我不明白的是我系统自己的那个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支持里也说不定。
从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支持里也说不定。