[分享]grub 出现file not found解决方法

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
gududehuo
帖子: 92
注册时间: 2008-05-25 22:58

[分享]grub 出现file not found解决方法

#1

帖子 gududehuo » 2008-06-03 16:54

一直使用grub引导系统(包括xp,dos,从光驱启动,从iso文件启动,从img启动,从pe启动,都可以用grub启动,当然也包括linux),真是多面手,而且使用方便智能,
对于grub启动出现file not found的错误也提出我的解决方法(菜鸟一个)。
grub好像有两个版本,grub和grub4dos,前者就是ubuntu自带的,而后者是好象国人在grub的基础开发的,功能强大的多,我用的就是grub4dos,
grub的启动顺序:mbr(stage1)----stage1_5(对应各类文件类型有对应的stage1_5)-----stage2----menu.lst(启动配置文件)
grub4dos的启动顺序:mbr---grldr---menu.lst(grub4dos需要的文件简单多,而且可以直接在xp的菜单中引导,只要在boot.ini文件中添加x:\grldr="grldr",而且其提供了一个bootlace.com可以直接写mbr,这个功能够实用可以直接用xp启动菜单引导linux,wubi使用的也是这个)
现在说一下file not fount的解决方法:
title linux
root(hd0,0)
kernel /vmlinuz
initrd /initrd.gz

title linux 是在grub界面显示的内容
root(hd0,0)配置grub的根目录
kernel /vmlnuz和initrd /initrd.gz,则说明需要加载的内核,
而出现file not found是因为kernel是到root指定的"分区"中找是否有个"vmlinuz"这个文件,如果root指定的”分区错误”或者”目录错误”或者”文件名错误”,都会出现file not found.
当出现这个问题是,你可以在grub界面选中无法启动的那项,比如linux,按"e"键,编辑该项,会出现该项的内容
root(hd0,0)
kernel /vmlinuz
initrd /initrd.gz,
然后移到root(hd0,0)这项,按e键编辑,如果还知道是那个分区则直接改写,如果不知道使用grub的自动补全功能,删除”0,0)”,然后按TAB键会出现该计算机存在的硬盘列表,应该还记的linux安装在哪个硬盘,我们输入0( 0表示的是第一个硬盘),再输入“,”,再按TAB键,会出现选种硬盘的分区列表,(0-4表示的是主分区,5以后的数字表示逻辑分区,如果一个硬盘有一个主分区三个逻辑分区,则对应的0表示主分区,5表示逻辑分区1,6表示逻辑分区2,7表示逻辑分区3,如果一个硬盘有两个个主分区两个个逻辑分区,则对应的0表示主分区1,1表示主分区2,5表示逻辑分区1,6表示逻辑分区2,你硬盘有几个主分区几个逻辑分区要搞清楚),记的你安装是选择的分区然后输入该分区对应的数字,假设我们安装在逻辑分发区1,则输入5,在输入“)”,好了按enter返回。
移到kernel /vmlinuz,按e编辑,也是利用自动补全,删除vmlinuz,按TAB,会出现前面root指定分区根目录下的所有文件夹和文件,如果在这里出现了vmlinuz则说明你前面指定的分区没错,或者你输入v,在按TAB,则会列出所有以v打头的文件夹和文件(可以用来找文件),如果只有一个文件他直接会输入这个文件。
(在补充一下ubuntu安装的位置,如果是wubi装的,则在对应的分区有ubuntu文件夹,ubuntu内有disks(主要文件在这里),install,docs,winboot,disks中有boot文件夹,shared,root.disk(虚拟磁盘五wubi装的东西全都在里面,swap.disk,),boot中有个grub文件夹和vmlinuz和initrd.gz,grub中有menu.lst文件(启动配置文件)。如果是光盘安装的,安装位置我就不知道了,但你需要知道boot是独立分区还是在/下,)
如果你连装在哪个盘都了,当然可以使用使用grub的自动补全一个分区找,但是文件太多就效率太低,那么可以使用find –set-root 目录解构+文件名,让grub自动找某个文件所在分区并设为root,(要注意的就是目录结构你要说明了,否则grub也还是找不到,所以我前面补充了两种ubuntu的目录结构),如果你要vmlinuz所在分区,则输入find –set-root /vmlinuz,grub会自动在每个分区的根目录找寻vmlinux文件,找到就吧所在分区设为root,比如我们要找wubi安装的,我们就输入find –set-root /ubuntu/disks/root.disk,这样grub会尝试在每个分区找寻同样目录结构下是否存在root.disk,找到则把那个分区设为root,然后第2条命令由于wubi装的ubuntu的vmlinuz放在/ubuntu/disks/boot下,则输入kernel /ubuntu/disks/boot/vmlinuz,第3句也一样。如果光盘安装的就找/grub/menu.lst(boot有独立分区),/boot/grub/menu.lst(没有boot独立分区)
这样一番下来没错误就应该能启动了启动了。说明一点最好记原来kernel整个句子,因为vmlinuz后面跟的是内核参数,没有这些也是启动不起来的,而这个就不是grub能管的,你只要记下重新输入(也没多少就是指定根分区……之类的)
启动后就可以更写menu.lst到正确配置下次就不用这么麻烦了,菜鸟的我觉得使用grub最主要还是自动补全功能,在多说一句grub4dos功能强多了,系统维护可以用map功能启动很多软盘镜像,现在还可以直接启动光盘镜像(这功能好象还不怎么完善)。
增加启动xp安装在主分区1
titile windows xp
root(hd0,0)
chainloader /ntldr
启动dos.img(dos软盘镜像,,放在主分区1)
title dos
map --mem (hd0,0)/dos.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
启动光盘镜像(功能不完善,我启动ubuntu8.04光盘会花屏)
title iso
map –mem (hd0,0)/ubuntu.iso (hd32) //加载到内存比较慢
map –hook
chainloader (hd32)

title iso
map (hd0,0)/ubuntu.iso (hd32)
map –hook
chainloader (hd32)

本人菜鸟一个,请高手多多指教。
上次由 gududehuo 在 2008-06-03 17:04,总共编辑 1 次。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#2

帖子 BigSnake.NET » 2008-06-03 16:57

iso 挂到内存, 要注意内存够不够..
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
gududehuo
帖子: 92
注册时间: 2008-05-25 22:58

#3

帖子 gududehuo » 2008-06-03 17:03

1.5g还不够吗
Wesley_S
帖子: 7
注册时间: 2014-06-04 14:42

Re: [分享]grub 出现file not found解决方法

#4

帖子 Wesley_S » 2014-10-24 10:23

这个帖子帮了大忙了,多谢楼主~~~~ :em09
回复