zoukankan      html  css  js  c++  java
  • ubuntu live cd修复grub引导项

    1. 通过Ubuntu Live CD(安装盘,选择try Ubuntu)进入Ubuntu系统

    打开终端,依次进行如下操作:

     

    [plain] view plain copy
     
     
    1. 1. sudo fdisk -l  

    出现如下界面:

    2. 然后会看到,有好多不一样的硬盘分区,但是当时我装系统的时候没有分boot分区,而且我当时给的/目录的容量是20G,很显然,/dev/sda7就是我的根目录所在的硬盘(如果没有分boot分区,boot分区启动默认是位于/目录)。然后执行:

             

    [plain] view plain copy
     
     
    1. 2. sudo mount /dev/sda7 /mnt  
     

    3. 接下来是新建MBR分区,即进行如下操作

     

    [plain] view plain copy
     
     
    1. 3. sudo grub-install --root-directory=/mnt /dev/sda  

    4. 更新grub

            

    [plain] view plain copy
     
     
    1. 4. sudo update-grub      

    ##这一步并非必须

     

    ----------------------------------------------------2017.5.2更新-------------------------------------------------------------------

    Linux老手们告诫用户一定要先装windows再装linux,但是有些时候如果windows死机或者中毒后必须重装windows系统时,就需要对Grub进行修复了。这其中原因是因为windows把多重引导程序Grub覆盖了,而自身程序却没有引导Linux启动的能力。

    解决的方法很简单,就是重新修复Grub,需要的东西就是安装盘。

    Ubuntu修复:

    使用光盘启动Ubuntu,选择Try Ubuntu without any change to your computer。

    成功的从光盘启动后就已经做好了修复Grub的准备了。在Ubuntu的命令行中依次输入以下内容。

    grub

    find /boot/grub/stage1

    root (hdx,y)

    setup (hd0)

    quit 

     

    命令

    含义

    grub

    启动光盘上的grub程序,如果用户正在使用Ubuntu,需要使用sudo  grub以获得root权限。 

    find /boot/grub/stage1

    查找硬盘上linux系统将/boot存放在哪个硬盘分区中,grub在安装时需要读取这个目录中的相关配置文件。

    root(hdx,y)

    指示linux内核文件所在硬盘分区(也就是/boot所在目录分区),将这里的(hdx,y)替换为上一行中查找的那个分区,注意括号中不能存在空格。

    setup(hd0)

    在第一块硬盘中安装grub引导程序。

    quit

    离开引导程序grub。

          利用grub命令来启动损坏的Linux系统,可能你的电脑因为某些原因损坏不能自动启动了。当然原因很多,可能的现象也很多。 

    这里说一下这种情况下的处理方法,即:屏幕上提示grub>,但你的硬盘上数据没有丢失,各分区都是好的。这种情况是你的grub信息损坏了,但比较严重的是系统启动不了。 

          当然,在正常启动情况下,屏幕上出现grub的启动项选择菜单时按c键也是可以进入grub>状态的。这时候我们需要用grub的命令来手工启动系统。 只需要用到四个命令boot、kernel、initrd、boot。

          但grub本身命令很多,比如查看文件内容的cat ,你输入help会得到。

          首先,输入“ root (hd ” ,然后按两次 TAB 键; /* 这会列出你电脑上可能的磁盘设备,硬盘为 hd0/hd1 或 sd0/sd1 等 */ 

          然后,选择你的安装 Linux 系统的硬盘,比如 hd0 ,输入 “ root (hd0, ” 再按两次 TAB 键; /* 这会列出你的第一块硬盘上的分区情况,你会知道哪个是 swap 交换分区, 0x82 ,哪个是 Linux 分区 0x83 */

          选择你认为可能的 /boot 目录所在的分区, 输入root (hd0, 1)回车; 

          接着,输入cat /boot/vm, 按两次 TAB 键,如果出现一些 vm 开头的文件,比如 vmlinuz-2.6.15-26-386 说明这里是 /boot 所在的分区。 

          删除上一次的输入,再输入cat /boot/initrd,按两次 TAB 键,如果出现一些 initrd 开头的文件,比如 initrd.img-2.6.15-26-386 说明这个 /boot 所在的分区有 initrd ,即 ramdisk 镜像;

          删除上一次的输入,再输入cat /sbin/init,按两次 TAB 键,如果出现一些 init 开头的文件,比如/sbin/init说明这个分区是/所在的分区; 

          如果没有出现/sbin/init文件,说明(hd0,1)分区仅仅是/boot分区而不是/分区。重新输入root (hd0,N)命令,这里 N 是某个 Linux 分区,然后再试cat /sbin/init, 直到屏幕上出现/sbin/init,说明你找到了/分区,严格来说,应该是/sbin目录所在的分区;

        依次输入命令: 

    [plain] view plain copy
     
     
    1. root (hd0,1) /* 假设 /dev/hda2 是你的 /boot 所在的分区 */   
    2. kernel /boot/vmlinuz-2.6.15-26-386 ro dev=/dev/hda3 /* 假设 /dev/hda3 是你的 / 所在的分区 */  
    3. initrd /boot/initrd.img-2.6.15-26-386   
    4. boot   

    即可启动系统。 

    这里的关键问题是如何确定系统的几个分区:/boot / /sbin

  • 相关阅读:
    十道海量数据处理面试题与十个方法大总结[转]
    Velocity常用语法详解
    你选择哪一种方式创建线程?
    通俗易懂地讲解TCP建立连接的三次握手和释放连接的四次挥手
    由浅入深的理解网络编程【转】
    [转载]OSI七层模型详解
    简单谈谈数据库索引
    【HBase】 常用命令
    【HBase】知识小结+HMaster选举、故障恢复、读写流程
    【HBase】HBase架构中各种组件的作用
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/8472232.html
Copyright © 2011-2022 走看看