+ -
当前位置:首页 → 问答吧 → 【求助】grub无法识别硬盘

【求助】grub无法识别硬盘

时间:2007-11-18

来源:互联网

编译完内核在进行grub设置时出现如下状况:
grub>root (hd0,1)
error 21: selected disk does not exist
grub>setup (hd0)
error 21: selected disk does not exist

退出grub后提示:
probing devices to guess BIOS drives. This may take a long time.

我的硬盘分区情况:
/dev/sda1为swap分区,/dev/sda2为根分区
我在chroot环境下用“df /k”命令显示挂载点只有/dev/shm
在宿主系统中用“df /k”却显示有/dev/sda2文件系统

求解!谢谢!

作者: tuishu   发布时间: 2007-11-18

你有几个硬盘呢?
编译内核时注意你的硬盘串口选项也要选上。

作者: 不开花   发布时间: 2007-11-18

楼主是以root用户执行的grub么?不是的话以root用户试试。
还不行的话,试试root(hd1,1)

作者: 不开花   发布时间: 2007-11-18

引用:
作者: tuishu
编译完内核在进行grub设置时出现如下状况:
grub>root (hd0,1)
error 21: selected disk does not exist
grub>setup (hd0)
error 21: selected disk does not exist

退出grub后提示:
probing devices to guess BIOS drives. This may take a long time.

我的硬盘分区情况:
/dev/sda1为swap分区,/dev/sda2为根分区
我在chroot环境下用“df /k”命令显示挂载点只有/dev/shm
在宿主系统中用“df /k”却显示有/dev/sda2文件系统

求解!谢谢!
swap 放前面的布局不是很好的做法!

作者: d00m3d   发布时间: 2007-11-18

是不是在chroot 前 没有挂载 /dev

# mount -t proc none /mnt/gentoo/proc
# mount -o bind /dev /mnt/gentoo/dev

作者: toeight   发布时间: 2007-11-18

我就一个硬盘,在lfs里是用的root用户执行的,编译的时候由于我只有scsi硬盘,所以只选了scsi相关的

作者: tuishu   发布时间: 2007-11-19

如果确保GRUB已经装好了,可以在BOOT时进入GRUB,LINUX环境下的GRUB是要读取device map 文件的,可能你没有这个文件

作者: trublemaker   发布时间: 2007-11-19

/dev下有这个设备吗?

作者: hohoxu_hao115   发布时间: 2007-11-19

/dev下没有这个设备

作者: tuishu   发布时间: 2007-11-19

请问,/dev下没有map文件如何解决?

我启动lfs系统,是可以进入grub的,

作者: tuishu   发布时间: 2007-11-19

ls /usr/lib/grub/*/*
ls /boot/grub/

如果 /boot/grub/ 目录缺少文件,拷贝一下(完全可以用Livecd中的)。
cp -v /usr/lib/grub /boot/grub/

使用 livecd ,无須 chroot ,用livecd 的 grub 将引导写到 MBR 或 目标系统(Linux ) 的根分区的第一扇区 。

作者: tfkdmwmqtr   发布时间: 2007-11-20

楼上的,我按照你的方法,grub是成功了,启动系统可以进入grub的启动界面

之后的加载出了问题,说root=/dev/sda2无法找到,请制定正确的路径

请问是怎么回事,我的硬盘是scsi的,内核编译的时候已经把scsi硬盘支持直接编译进了内核里。
上传的图像
a.jpg (15.6 KB, 8 次查看)

作者: tuishu   发布时间: 2007-11-20

引用:
作者: tuishu
楼上的,我按照你的方法,grub是成功了,启动系统可以进入grub的启动界面

之后的加载出了问题,说root=/dev/sda2无法找到,请制定正确的路径

请问是怎么回事,我的硬盘是scsi的,内核编译的时候已经把scsi硬盘支持直接编译进了内核里。
这种现象就很可能是硬盘或文件系统没弄对。
如果你认为你的配置文件没问题,就重编译内核吧。
你可以先检查 /boot/grub/menu.lst 和 /etc/fstab 文件。

作者: tfkdmwmqtr   发布时间: 2007-11-20

to tfkdmwmqtr :

我在chroot之后用df 只看到/dev/shm文件系统

用cfdisk 提示没有找到可用的disk。

但是我在livecd里看到我的硬盘是sda的,并且sda1是swap sda2是ext3
按照这个,我的配置文件是没有错的。如果是内核需要重新编译,我就不明白了。
在没有内核的时候就无法正常显示disk,跟内核似乎无关。 而且我编译的内核把scsi关于disk的都选上了,只是其他的ide disk相关都去掉了。

不明白问题出在什么地方。

作者: tuishu   发布时间: 2007-11-21

livecd启动

挂载目标系统:
代码:
export LFS=/mnt/lfs
mkdir -pv $LFS
mount -v /dev/xxx $LFS
挂载虚拟文件系统
http://www.linuxfromscratch.org/lfs/...06/kernfs.html
代码:
mount -vo bind /dev $LFS/dev
mount -vt devpts devpts $LFS/dev/pts
mount -vt tmpfs shm $LFS/dev/shm
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
chroot 改变根目录到目标系统:
代码:
chroot "$LFS" /usr/bin/env -i \
 HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
 PATH=/bin:/usr/bin:/sbin:/usr/sbin \
 /bin/bash --login +h
列出已挂载的文件系统:
代码:
mount
之后,应该怎么办就怎么办吧。

作者: tfkdmwmqtr   发布时间: 2007-11-21

谢谢楼上的,最后一个问题,

编译内核完了之后,make modules_install 正常,

到make install时就出错,无法产生initrd.img文件,我是scsi硬盘,如果没有这个文件是无法启动的。

直接运行mkinitrd,没有这个命令。我不知道这个命令在哪个包。谢谢

作者: tuishu   发布时间: 2007-11-22

引用:
作者: tuishu
谢谢楼上的,最后一个问题,

编译内核完了之后,make modules_install 正常,

到make install时就出错,无法产生initrd.img文件,我是scsi硬盘,如果没有这个文件是无法启动的。

直接运行mkinitrd,没有这个命令。我不知道这个命令在哪个包。谢谢
lfs里是不用这个东东的。只要你把启动需要的驱动编译进内核就可以了。

作者: hohoxu_hao115   发布时间: 2007-11-22

不是吧,做完了lfs不就跟普通系统一样了么, 对于scsi硬盘没有initrd.img文件无法启动的


试了N遍

作者: tuishu   发布时间: 2007-11-22

引用:
作者: tuishu
不是吧,做完了lfs不就跟普通系统一样了么, 对于scsi硬盘没有initrd.img文件无法启动的


试了N遍
不会,SCSI 没有 initrd 一样能启动

作者: d00m3d   发布时间: 2007-11-22

LZ是内核配置没有正确,我也碰到这样的问题,关注中ing

作者: beyond1314   发布时间: 2007-11-23

引用:
作者: tuishu
楼上的,我按照你的方法,grub是成功了,启动系统可以进入grub的启动界面

之后的加载出了问题,说root=/dev/sda2无法找到,请制定正确的路径

请问是怎么回事,我的硬盘是scsi的,内核编译的时候已经把scsi硬盘支持直接编译进了内核里。
我用的是lfs6.2的livecd,在SCSI的硬盘、ide的硬盘都试过都不行。
我是在vmware下做的,整个过程都没有问题,直到做好系统需要引导时,就出现无法加载,找不到分区的现象。

迷惑中。。

作者: 许木木   发布时间: 2007-11-23

楼上跟我一样,呵呵。

看来,是内核编译有问题吧。正在看内核资料在。可能是有的选项没选中

作者: tuishu   发布时间: 2007-11-23

除 SCSI 外,必要文件系統的支持也要編入內核才行

作者: d00m3d   发布时间: 2007-11-24

热门下载

更多