Ubuntu 9.04 下引导修复menu.lst 文件分析


solve Ubuntu 9.04 ALERT: /host/ubuntu/disks/root.disk does not exist,Dropping to a shell! /引导修复/menu.lst 文件分析

今天升级了一些软件,结果不知道为什么Ubuntu 9.04又进不去了,经过了一番探索,现在修好了。

我现在就是用的Ubuntu 下的中文输入法,输入的这些文字。

在尝试处理问题的过程中出现了很多问题,而这些问题应该是绝大多数的人都可能遇到的问题,但是网上没找到很清晰的解释,经过我的尝试,问题已经基本明了,我大概描述如下:

一、开始的时候无法启动桌面,提示***File not exist*** busy box **initramfs* 之类的一些东西,判断是grub4dos 的menu.lst文件出了问题,找到文件,文件在安装目录下的ubuntu/disks/boot/grub下面打开,翻到最后一部分,

## ## End Default Options ##

title        Ubuntu 9.04, kernel 2.6.28-11-generic

uuid        0E48A65048A6367D

kernel        /boot/vmlinuz-2.6.28-11-generic root=UUID=0E48A65048A6367D loop=/ubuntu/disks/root.disk ro quiet splash

initrd        /boot/initrd.img-2.6.28-11-generic

title        Ubuntu 9.04, kernel 2.6.28-11-generic (recovery mode)

uuid        0E48A65048A6367D

kernel        /boot/vmlinuz-2.6.28-11-generic root=UUID=0E48A65048A6367D loop=/ubuntu/disks/root.disk ro single

initrd        /boot/initrd.img-2.6.28-11-generic

title        Ubuntu 9.04, memtest86+

uuid        0E48A65048A6367D

kernel        /boot/memtest86+.bin

### END DEBIAN AUTOMAGIC KERNELS LIST

分析发现title指的是显示标题,kernel指的是启动内核,绿色的两部分是其他的启动方式,我们不用关心。

开始我估计是目录识别的问题,就像是boot.ini中可能遇到的初始目录不对,当然无法引导了。

于是我尝试输入了路径的全称(hd0,0)/ubuntu/disks/root/***( 注(hd0,0)表示第一块硬盘,第一分区),然后发现出现了一点画面,但是又出现了ALERT: /host/(hd0,0)/ubuntu/disks/root.disk does not exist,Dropping to a shell!

判断是root.disk文件的问题,我上网找了一下,发现人家有的引导文件中没有loop这行,我又不确定loop是做什么的,于是删除loop以及后面一小段,

重新启动之后发现有更多的错误,更多的文件没有找到,

然后才明白root.disk是wubi安装后整个系统的虚拟文件,别人有的人没有loop是因为他们是全新安装,并非是wubi集成安装的,于是又添加上了loop那句,

对于/host/(hd0,0)/这个警告肯定也是目录识别的问题,应该是文件系统挂载到host了,

host下面当然就没有找到(hd0,0)了,看来是要初始设置目录,于是将menu.lst该成如下:

## ## End Default Options ##

title        Ubuntu 9.04, kernel 2.6.28-11-generic

root (hd0,0)/ubuntu/disks

uuid        0E48A65048A6367D

kernel        /boot/vmlinuz-2.6.28-11-generic rootdelay=90 root=UUID=0E48A65048A6367D loop=/ubuntu/disks/root.disk ro quiet splash

initrd        /boot/initrd.img-2.6.28-11-generic

引导成功(注意添加红色的部分,其余的两段就无所谓了,平时也不进那里)

host文件夹,实际上就是我之前装xp的根目录。

对于uuid        0E48A65048A6367D

每个人的值可能不一样,所以大家不用改,关键注意红色的和加粗的部分就可以了。

希望能解决各位遇到的问题。

winxos 2009-5-19

补充说明:

后来查了一下:UUID实际上就是一个唯一标识符,就是类似与 (hd0,0)的功能,是作为引导位置的标志,是个新的概念,可能老的grub4dos不能支持。

再次补充说明:

经过昨天晚上的再次尝试,去掉了UUID引导,直接从挂载地址读取,就没问题了。修改后的文件如下:

title   Ubuntu 9.04, kernel 2.6.28-11-generic

root (hd0,0)/ubuntu/disks

UUID=0E48A65048A6367D

kernel   /boot/vmlinuz-2.6.28-11-generic root=/dev/sda1 loop=/ubuntu/disks/root.disk ro quiet splash

initrd   /boot/initrd.img-2.6.28-11-generic

之前我一直以为C盘是hda1(映象中是),结果搞了半天没成功,后面才发现实际上c盘挂到了sda1...难道我的硬盘是sata的?

各位如果还没有引导成功的可以参考改成上面的样子,应该是很稳定了。或者如果不是sata的就将sda1改成hda1就可以了。

winxos 2009-05-20

相关内容