第一:
Ubuntu开机出现grub rescue的模式下修复
grub rescue >
网上给出的解决方案:
第一步,找出你的
Linux盘在那个分区以及grub目录在什么位置。
如果你还记得最好,忘了也无所谓,使用下面命令逐个试探即可:
grub rescue>ls
回车后,ls命令会列出所有磁盘分区信息,如:
hd0,4),(hd0,7),(hd0,8),(hd0,9)
循环使用如下命令,直至显示该分区所包含文件内容而不是unknown filesystem以及其他一些不正常信息
grub rescue>ls (hd0,0)/boot/grub
(查看了所有分区,没有一个分区有/boot文件)
第二步:
grub rescue>set root=(hd0,8)
//括号里分区为上一步尝试成功的分区,即linux grub 所在分区
grub rescue>set prefix=(hd0,8)/boot/grub
第三步:
grub rescue>insmod normal.mod
网上有些insmod /grub/normal.mod的,我的Ubuntu 10.04并不成功
至此,应该退出了grub rescue模式,进入了熟悉的grub模式
第四步:
grub>normal
第五步:修复grub
进入Linux系统后,在命令行里
sudo update-grub
第六步:
sudo grub-install /dev/sda //sda是你的启动磁盘
第二:
继续搜,live cd 救援:
ubuntu用livecd修复grub2
首先用livecd启动,然后在终端下切换到root权限:(你不嫌麻烦的话可以跳过这一步,在一下的每一步前面加sudo) www.2cto.com
sudo -i
接下来找一找你ubuntu10.04所在分区,用:
fdisk -l
我的部分输出如下:
Device Boot Start End Blocks Id System
/dev/sda1 1 914 7341673+ 12 Compaq diagnostics
/dev/sda2 * 915 4967 32554359 7 HPFS/NTFS
/dev/sda3 4968 8006 24410767+ 83 Linux
/dev/sda4 8007 19457 91980126+ 5 Extended
/dev/sda5 8007 14085 48829536 83 Linux
/dev/sda6 14086 14328 1951866 82 Linux swap / Solaris
/dev/sda7 14329 14344 128488+ 83 Linux
/dev/sda8 18485 19457 7815591 b W95 FAT32
/dev/sda9 14345 18308 31839232 83 Linux
/dev/sda10 18308 18484 1413120 82 Linux swap / Solaris
下面挂载原系统的根目录:
mount /dev/sda9 /mnt
将/dev/sda9挂载到了/mnt下,当然你也可以选其他地方,这里注意如果你有单独为/boot分区的话,要单独挂载一次/boot,比如说 如果你原来的/boot挂载到/dev/sda12上了,那个你这里要再输入mount /dev/sda12 /mnt/boot。我这里没有把它单独分出来,所以就不需要了。
下面是最后一步了:
grub-install --root-directory=/mnt /dev/sda
这里我刚开始的时候自做主张的写成了grub-install –root-directory=/mnt /dev/sda9,同学们不要学我,- -!
如果看到
Installation finished.No Error Reported.
就表示已经成功啦!重启看看,熟悉的grub引导画面是不是又回来了?
悲剧的是我的出现的是grub>命令行界面
第三、继续搜:
一. Grub是一个非常好用的系统启动器,可以引导linux、dos、win、freebsd等多个系统。
二. 它引导的时候去寻找/boot/grub/menu.lst文件,把里面的启动列表显示出来供用户选择
但是如果grub出了问题,找不到menu.lst文件,就会出错,停留在grub>模式下。
别着急,即使到了这一步,也还是有办法可以进入系统的,这时候可以在命令模式下进行操作,这也是grub强大的地方,下面列出的命令,是进入系统必须的步骤:
root (hd0,0)
kernel /vmlinuz root=/dev/hda3
(悲剧又发生了:kernel命令找不到)搜了一下grub2不用kernel改用linux改为linux /vmlinuz root=/dev/hda3,悲剧继续:提示找不到文件)
boot
其中,root (hd0,0)这一行是挂载启动分区,使得里面的内核文件可以被访问到。(hd0,0)指的是第一块硬盘的第一个分区,要视具体情况而定,填写自己的启动分区区号。
kernel /vmlinuz root=/dev/hda3这一行加载系统内核,并且挂载根文件系统“/”,供读取文件用。/vmlinuz就是要挂载的系统内核,当然也可以写详细些,比如/vmlinuz-2.4.20-8,如果你知道自己的内核版本(或者通过按TAB键获得帮助)。root=/dev/hda3指定根分区“/”的位置,我的位置在/dev/hda3,所以我这样写,也是要根据自己的情况填写。
最后,boot这个命令是必须的,有了它就是说明按以上的参数启动系统了。
注意:虽说看起来很简单,只有简单的3行,但是有一些前提条件影响着你的执行结果,你必须知道自己的启动分区的位置,还有根分区“/”的位置,否则是进入不了系统的。
第四、继续搜:
linux下/boot目录丢失的恢复
1,查看分区,boot分区是独立的,进入boot后删掉所有的文件
2,删除boot启动之后的启动画面,因为vmlinuz-*和initrd-*都在/boot目录下,所有是不可能手动指定内核的路径点
3,利用镜像按esc,进入rescue模式
root:
输入:linux rescue 找不到could not find kernel image:linux 彻底悲剧了这可怎么办啊(求大神解决)
4,提示当前的系统被挂载在/mnt/sysimage下边,系统会去查找/ect/fstab文件,如果有就会有下边的提示,如果没有会告诉你没有任何分区
5,使用chroot 来改变当前的操作路径,不然是对内存中的系统操作
6,建立一个目录/cdrom,将光驱挂载,查找kernel相关的包
如何知道/boot下边的内核文件是由哪个包生成的呢?在别的机器上用rpm -qf file来查询
7,强制安装内核包,要加参数--force强制安装,不然提示包已经安装
8,查看/boot目录,多文件了
9,但是删掉了/boot目录内容的时候也把grub的stage2删掉了,下边就需要安装grub了,如果是安装在mbr中用,路径用/dev/sda,如果是装在分区的superblock中,需要用/dev/sdax,x代表具体的分区。现在就发现多了grub目录了
10,但是grub目录中并没有grub.conf文件,也就是说系统启动还是无法找到正确的引导文件,
就需要编辑配置文件,添加如图所示行
11,重启就可以看到grub界面了,系统就可以启动了
最后:
按第二:挂在完,插入u盘拷贝吧。悲剧又发生了cp: failed to preserve ownership for `/mnt/a/ets/linuxsoft/mysql-5.0.37': Operation not permitted
更改权限,cp + -r 最后重要资料基本复制出来了
参考资料:搜:
http://www.2cto.com/os/201306/217520.html
http://blog.csdn.net/mayabin/article/details/968497
http://xuxd32.blog.163.com/blog/static/4812193320091016102226668/
http://www.2cto.com/os/201212/176373.html