文档章节

Linux grub引导修复

leolan
 leolan
发布于 2016/10/24 23:04
字数 1105
阅读 7
收藏 0


很多时候,特别是在linux调整分区后,开机重启时会出现
        error : unknow filesystem
        grub rescue>
        的字样,系统就是进不去。这表示你的grub2的配置文件坏了……
        由于分区调整或分区UUID改变造成grub2不能正常启动,从而进入修复模式了(grub rescue),也称救援模式。
        
        在救援模式下只有很少的命令可以用:set  ,  ls , insmod , root , prefix

        (1)set  查看环境变量,这里可以查看启动路径和分区。
        (2)ls   查看设备
        (3)insmod  加载模块
        (4)root  指定用于启动系统的分区,在救援模式下设置grub启动分区
        (5)prefix 设定grub启动路径

具体修复步骤如下:
       1、查看分区:grub rescue> ls   回车
            会出现如下字样:
            (hd0) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5) (hd0,msdos2) (hd0,msdos1)
       注:上面是我的分区设备,每个人可能不一样,但原理都是一样的。
        grub> find /boot/grub/grub.conf 也行
       2、寻找ubuntu所在分区:
           (就是寻找你的Linux系统是装在以上哪个分区里)
              grub rescue> ls (hd0,msdos1)/
            若出现 unknown filesystem字样,则尝试下一个
            ……
            若出现的是你的ubuntu 主文件夹下的文件夹和文件的名字,那就是的要找的分区了。

        3、修改启动分区:
             (假如你找到的启动分区是hd0,msdos8)
         grub rescue> root=(hd0,msdos8)
         grub rescue> prefix=/boot/grub                         //grub 路径设置
         grub rescue> set root=(hd0,msdos8)
         grub rescue> set prefix=(hd0,msdos8)/boot/grub
         grub rescue> insmod normal                            // 启动 normal 启动
         grub rescue> normal
        之后你就会看到熟悉的启动菜单栏了

  4、进入命令行启动ubuntu
          进入系统启动选项界面后还是进不去,
       因为你还没有真正的修改 grub, 这个要到 ubuntu 里修改
进入系统启动项界面后,按 C 进入命令行模式
        grub > set root=hd0,msdos8
        grub > set prefix=(hd0,msdos8)/boot/grub
        grub > linux /vmlinuz-xxx-xxx root=/dev/sda8   // 里边的 xxxx 可以按 Tab 键,如果有 acpi 问题 , 在最后加一句 acpi=off
        grub > initrd /initrd.img-xxx-xxx
        grub > boot
       这样就可以进入了

        5、进入ubuntu修复grub
  在终端里运行         sudo update-grub
                                          sudo grub-install /dev/sda

       6、重启,搞定!!

 注:我当时只是修改了1~3步骤,然后在菜单栏就可以进入系统了,且一切正常。
       可惜,在重启时,系统就只有一个光标在左上角不停的闪,咋也进不了系统。后来开机按F2,开机启动项改为硬盘启动就好了。

#################################################################################################

法二
首先制作 Ubuntu 启动 USB
  复制代码代码如下:
  sudo dd if=ubuntu-13.10-desktop-amd64.iso of=/dev/sdb1 #/dev/sdb1 为 USB 盘符
  1.使用启动 USB 进入 Ubuntu 试用环境
  2.查看硬盘分区状况,获取 Linux 系统安装分区编号
  代码如下:
  sudo fdisk -l
  查看输出结果,然后根据文件类型和分区大小来判定 Linux 系统安装在哪块硬盘和安装的分区。我的电脑是在 /dev/sda3 安装了 Fedora。
  或者,打开 Gparted 图形化工具来查看分区信息也可以。
  挂载 Fedora 安装分区
  3.已知 Fedora 安装在了 /dev/sda3 上,所以我们可以用下面命令来挂载 Fedora 安装分区。你需要将 /dev/sda3 换成自己的 Linux 安装分区。
  代码如下:
  sudo mount /dev/sda3 /mnt
  4.挂载其他所需的目录(使用 --bind)
  代码如下:
  sudo mount --bind /dev /mnt/dev
  sudo mount --bind /proc /mnt/proc
  sudo mount --bind /sys /mnt/sys
  5.Chroot 到硬盘上的 Linux 系统
  代码如下:
  sudo chroot /mnt 【chroot命令把根目录切换到指定目录下】
  6.安装&更新 Grub
  代码如下:
  grub2-install /dev/sda
  grub2-mkconfig -o /boot/grub2/grub.cfg
  7.Grub 已经修复成功,我们还需要退出 chroot 环境、卸载已经挂载的设备与目录:
  代码如下:
  exit #退出 chroot 环境
  sudo umount /mnt/dev
  sudo umount /mnt/proc
  sudo umount /mnt/sys
  sudo umount /mnt
  8.重启。
#################################################################################################

可以进grub 这就好办了 >root (hd0,x) 提示: 输入(后 ,按 TAB键 自动补全 很好用的 。x表示你的linux根分区
>linux /vmlinuz ro quiet
>initrd /initrd.lz
>boot



先找到menu.lst菜单文件:
find --set-root /boot/grub/menu.lst
然后加载:
Grub 命令索引configfile /boot/grub/menu.lst
菜单文件可以换成grub.conf试试。








个人学习笔记,不当之处还请指正。
----------不定期更新------------





本文转载自:http://blog.csdn.net/lan842632/article/details/52843395

共有 人打赏支持
leolan
粉丝 1
博文 43
码字总数 74
作品 0
梅州
私信 提问
关于Windows下删除Linux系统的笔记

本文内容有: 一、windows直接删除linux系统,但未格式化原linux分区为NTFS格式 二、windows直接删除linux系统,直接格式化原linux分区为NTFS格式 三、正确的在windows目录下删除linux系统的...

acmfly
2013/10/23
0
0
grub手动引导、修复win7 Mbr

一、引导Linux 重启进入到grub菜单界面时,按“c”键进入grub命令模式。 1、指定/boot所在的分区,比如分区是第一块硬盘第一分区,即hd0,0 grub> root (hd0,0) 2、指定kernel,主要是找到vml...

GasLS
2012/08/03
0
0
4 个最好的 Linux 引导程序

当你打开你的机器,开机自检(POST)成功完成后,BIOS(基本输入输出系统)立即定位所配置的引导介质,并从 MBR(主引导记录)或 GUID(全局唯一标识符)分区表读取一些命令,这是引导介质的...

两味真火
2016/09/20
5.1K
6
删除Linux后如何恢复XP启动

安装Linux时,如果将GRUB安装在主引导扇区,则可以正常引导Linux和Windows XP,但同时也破坏了原Windows的主引导信息。当删除Linux后,GRUB无法正常引导,因为GRUB需要读取Linux的/boot信息,...

Sheamus
2015/03/04
0
0
Linux下Grub和NT Loader启动菜单的编写

电脑上有WINDOWS 又有LINUX 有的人喜欢GRUB,也有的人喜欢NT Loader来启动 不管你怎么玩,都要知道他们的运行流程 关系: windows-NT Loader-ntldr-boot.ini linux-Grub-grldr-menu.ls...

zt371
2009/05/23
517
0

没有更多内容

加载失败,请刷新页面

加载更多

Jmeter参数的AES加密使用

在Jmeter日常实践中,大家应该都遇到过接口传参需要加密的情况。以登陆为例,用户名和密码一般都需要进行加密传输,在服务端再进行解密,这样安全系数会更高,但在使用jmeter进行接口测试的时...

程序猿拿Q
2分钟前
0
0
MYSQL 日期函数 Date and Time Functions

Table 12.13 Date and Time Functions Name Description ADDDATE() Add time values (intervals) to a date value ADDTIME() Add time CONVERT_TZ() Convert from one time zone to another ......

_liucui_
8分钟前
0
0
Android代码混淆ProGuard工作原理简介

ProGuard能够对Java类中的代码进行压缩(Shrink),优化(Optimize),混淆(Obfuscate),预检(Preveirfy)。    1. 压缩(Shrink): 在压缩处理这一步中,用于检测和删除没有使用的类,字段...

SuShine
11分钟前
0
0
Idea 2018激活

教程地址: https://www.52pojie.cn/thread-781394-1-1.html 亲测可用

一个不正经的程序员
16分钟前
0
0
Android组件化开发实践和案例分享

目录介绍 1.为什么要组件化 1.1 为什么要组件化 1.2 现阶段遇到的问题 2.组件化的概念 2.1 什么是组件化 2.2 区分模块化与组件化 2.3 组件化优势好处 2.4 区分组件化和插件化 2.5 applicatio...

潇湘剑雨
17分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部