zoukankan      html  css  js  c++  java
  • grub修复

    修复ubuntu 10.10 ubuntu 11.04的grub2引导的方法                                                            
                                                                          --------转载请注明:转载自奶牛博客


          自从ubuntu 9.10开始,ubuntu正式开始使用grub2作为引导程序。对于多系统用户,可能有时候会将引导搞丢了(比如双系统下重新安装windows系统等),下面奶牛来介绍下ubuntu等linux系统的grub2的修复。

     1.需要一张可以引导的ubuntu live-cd,并且版本在9.10+

    用live-cd引导进入系统,然后在mnt目录下挂载分区。

    首先我们需要确定一个问题,你的/boot是否单独分区了,如果单独分区了请按照方法A进行,如果/boot没有单独分区,可以按照B来进行。

    A:以/boot为sda8,/为sda9为例,如果还有其它linux分区也用同样的方法挂上来就可以了。

    打开终端,

    sudo su

    fdisk -l (查看分区内容,并且确定硬盘为sda啊还是sdb,或者hda还是sda)

    mount /dev/sda9 /mnt

    mount /dev/sda8 /mnt/boot

    mount –bind /dev /mnt/dev

    mount –bind /proc /mnt/proc

    如果还有其它linux分区,用同样的方法挂载上

    chroot /mnt

    这时没有意外的话我们就已经进入了ubuntu的系统了

    sudo grub-install /dev/sda

    sudo update-grub

    完工,重启,linux系统应该可以进入了。

    B:方法与A类似,但是不用挂载/boot分区,所以mount /dev/sda8 /mnt/boot可以省略。其它操作一样。

    如果在sudo update-grub后出现提示

    Cannot find list of partitions!

    请不要慌张,因为在多系统的环境下会出现这个提示,告诉我们无法识别linux之外的windows系统,正常重启还是可以进入linux的,进入系统后就啥都好说了,继续多来一次update-grub就可以了

    补充Ubuntu 11.04恢复grub的方法

    用ghost全盘恢复ubuntu 11.04的镜像后,需要重新做grub。用Ubuntu liveCD启动后,发现执行grub根本没用!

    下面给出解决方案:

    首先打开终端,输入:

    sudo su

    fdisk -l

    (这个时候观察一下你的硬盘的分区情况,到底是sda还是sdb还是hda,然后找到主分区,比如是sda1,假设你没有把boot单独分区)

    mount /dev/sda1 /mnt

    mount /dev/sda2 /mnt/boot(如果boot单独分区了,执行这个,没有的话就不要执行。默认安装Ubuntu是不会单独分区的。)

    mount –bind /dev /mnt/dev

    mount –bind /proc /mnt/proc

    chroot /mnt

    grub-install /dev/sda1

    update-grub

    就可以了!

    安装(低版本Ubuntu)


    一、安装到mbr(mbr=Master Boot Records,主引导记录区)

      因为安装windows,或者不小心删除/改变了mbr,都有可能导致启动时看不到grub的引导菜单或者提示出错,下面是恢复的办法(写于Ubuntu下,但应该可适用于其它统)

      使用Ubuntu liveCD启动,出现桌面后,打开一个终端,输入:

      sudo grub

      然后在grub>下输入

      grub>find /boot/grub/stage1

      查找到grub的文件所处的位置,如果安装了多个linux系统,会全部显示出来,看好Ubuntu的/boot/grub/所在的位置,然后

      grub>root (hd?,?)

      (hd?,?)中的问号用Ubuntu下的/boot/grub/位置取代,比如上面的find命令查找结果是hd(0,1),那这儿就是root(hd0,1)

      使用下面的命令把grub安装到mbr上:

      grub>setup (hd0)

      退出

      grub>quit

      解释一下:

      sudo grub得到grub命令解释器

      find /boot/grub/stage1用来查找stage1文件的位置,它告诉我们grub的文件在哪儿。只有一小部分grub放在mbr上,其它部分位于你的boot文件夹。grub需要这些文件来安装。

      最后setup(hd0)把grub安装到hd0。当使用hd0参数而没有提供具体分区时,grub安装到mbr。grub认为hd0是第一个硬盘的mbr区标志。


      二、安装到其它分区

      如果想把grub安装到一个分区而不是mbr上,把setup (hd0)改成setup (hdx,y)。X表示是第几块硬盘,Y是这块硬盘上的第几个分区。grub的计数方法是从0开始(如hd0,1表示第一块硬盘上的第2个分区)


      三、如果grub找不到stage1文件或认不出硬盘

      1.使用livdCD加载/root分区

      sudo mkdir /mnt/root

      sudo mount -t ext3 /dev/sda6 /mnt/root

      2.在/mnt/root下加载proc与udev

      sudo mount -t proc none /mnt/root/proc

      sudo mount -o bind /dev /mnt/root/dev

      这样grub能认出你的驱动器了。下一步:

      sudo chroot /mnt/root /bin/bash

      然后如果想安装grub到mbr上,见一,想安装到一个分区,见二


    卸载

    方法一(fdisk法):

    fdisk /mbr


    方法二(Linux dd法): (这个方法蛮管用,建议Linux仍然可以启动的朋友使用,但是要注意的是只能写入446个字节,修改过分区的朋友如果写入了512字节,嘿嘿,后果自负呦)

    原理:利用安装Linux时的主引导分区备份文件把MBR的引导程序恢复到原始状态

    方法:在Linux的终端中执行以下命令即可。

           dd if=/boot/boot.NNNN of=/dev/hda bs=446 count=1

    p.s 在这里只是说一下boot.NNNN是什么和为什么只写入446个字节。boot.NNNN文件就是原理中提到的主引导扇区备份文件。关于写入446字节,我们都知道主引导扇区是一个小扇区,共512个字节,这512个字节的分配是这样的:前446字节为引导程序,接着64字节为分区表,最后剩下的2字节是结束标记。现在明白为什么只写入446个字节了吧。



    方法三(工具法):这个方法分好几种,这里只说说Clear MBR工具和DiskGen

    Clear MBR 自己从网上搜搜下载,我也下载了个试了试,的确是管用的。我推荐大家用这个方法。

    启动DiskGen之后,选择工具  >> 重写主引导记录。好了,GRUB已经被NTLDR代替了,重启吧。


    方法四:开机后光标停在grub>提示符的时候怎么处理 

    第一步,在"grub>"提示符后输入:"rootnoverify  (hd0,0)" 回车。

               解释:将第一块硬盘(hd0)的第一个分区(0)设为根分区/root设备,但不加载文件系统。

    第二步,输入"chainloader +1"回车。

               解释:将启动引导权转交给当前分区的首扇区(Windows系统所在分区的首扇区)。

    第三步,输入"boot"回车。

               解释:无需重启,进入windows系统。

    接下来系统便会执行首扇区上的引导程序。如果不成功那就在第一步改下分区试试。

    这时装有DOS的朋友便可以进入DOS根据上面的方法干掉GRUB。经验证,以上命令只是用来进入DOS,并不是永久的删掉grub,如果不用以上方法清除引导扇区,重启后还是会进入grub提示符。

    最后提示,如果你想ghost linux系统,最好不要删掉目标盘的grub。ghost是无法复制grub的。

  • 相关阅读:
    使<div>做的层不随滚动条的移动而移动
    datagrid 实现 表头水平可以移动 垂直固定
    csapp 、sicp 、深入理解计算机系统、 计算机程序的构造和解释
    window.open使用
    C#进程管理
    asx根据时间点播放
    Ext GrdPanel多种取值方式
    System.ComponentModel.Win32Exception: 拒绝访问
    播放器Object使用
    M3U文件格式
  • 原文地址:https://www.cnblogs.com/Aidanjrc/p/3149765.html
Copyright © 2011-2022 走看看