码迷,mamicode.com
首页 > 其他好文 > 详细

grub救援修复详解(CentOS 5/6)

时间:2015-12-31 21:20:05      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:grub   rescue   grub-install   

一、BootLoader引导加载程序

    1.BootLoader(MBR)分类:

        (1)Windows上引导加载器:ntloader

        (2)Linux上引导加载器

              1) LILO 

        短小精悍的linux加载器,1024柱面之后无法加载,现在多用于安卓手机启动

              2)GRUB:Grand Uniform Bootloader统一引导加载器

       GRUB 0.X(CentOS 5/6):Grub Legacy传统版

        GRUB 1.X(CentOS 7):Grub2,完全重写,设计理念上很大改变

    2.GRUB(CentOS 5/6为例)三段化设计,打破MBR446字节限制

         (1)stage1:第一阶段,在MBR中的BootLoader

                用于引导启动到磁盘分区中的第二段,实现开机启动引导,受限于446bytes大小

         (2)stage1_5: 1.5阶段,在MBR之后的扇区

   stage1_5阶段,stage1stage2之间的一个过渡存在

               用于提供文件系统驱动接口  filesystem drive让stage1中的bootloader能识别stage2所在的分区上的文件系统

        (3)stage2:第二阶段,磁盘分区(/boot/grub/)

               2nd stage第二阶段在磁盘分区中/boot/grub中,此程序不受MBR大小控制

               可以提供接口菜单,启动后第二阶段加载kernel文件

    3.stage2功用

stage2及内核等通常放置于一个基本磁盘分区

       (1)提供菜单、并提供交互式接口

   e: 编辑模式,用于编辑菜单;

  c: 命令模式,进入grub的命令行交互式接口;

技术分享

       (2)加载用户选择的内核或操作系统

    允许通过编辑菜单传递参数给内核,也隐藏此菜单

       (3)为菜单提供了保护机制

    1) 为编辑菜单进行认证

    2)为启用内核或操作系统进行认证

 

 

 

二、GRUB命令行模式

    1.grub命令行接口(开机按c进入grub交互接口)

        (1)grub识别设备:(hd#,#)------(hd0,0)开始

 全部接口磁盘都以hd开头

       hd#: 磁盘编号,用数字表示;从0开始编号

       #: 分区编号,用数字表示; 从0开始编号

             hd0,0:表示第一块磁盘上的第一块主分区

        (2)grub命令选项:支持Tab补全

               1)help: 获取帮助列表

                  help KEYWORD: 详细帮助信息

               2)find  FILENAME在指定磁盘路径下的文件

其中FILENAME要指明磁盘,(hd#,#)/PATH/TO/SOMEFILE

               3)root (hd#,#):指明哪个磁盘设备设定为根设备

               4)kernel /PATH/TO/KERNEL_FILE: 本次启动使用到的内核文件;可以添加许多内核支持使用的cmdline参数;

例如:init=/path/to/init, selinux=0

               5)initrd /PATH/TO/INITRAMFS_FILE: 设定为选定的内核提供额外文件的ramdisk;

ramdisk必须与内核版本完全匹配,否则无法识别

               6)boot: 引导启动选定的内核;

               7)quite:工作在静默模式

技术分享

    2.手动在grub命令行接口启动系统

  grub> root (hd#,#)

  grub> kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE

  grub> initrd /initramfs-VERSION-RELEASE.img

  grub> boot

技术分享

   注意:

      1) 此时的访问路径和/boot目录有无被单独分区有关

  若单独分区,其所指的根为grub所在,书写方式如上

  若非单独分区,则需要指明此时/boot所在具体路径/boot/… …

      2) grub无法识别一些软件模拟操作(RAIDLVM)后的根分区,为了满足这些对根的复杂操作/boot必须要单独分区

             CentOS 5 6 默认安装时候都是以LVM形式制作逻辑卷,所以/boot单独做一个分区

 

 

 

三、GRUB自动启动(配置文件引导)

    1.配置文件:/boot/grub/grub.conf

         /etc/grub.confgrub配置文件的链接文件

  [root@localhost ~]# cat  /etc/grub.conf

技术分享

  配置项:

       1) default=#设定默认启动菜单项;落单项(title)编号从0开始;

       2) timeout=#:指定菜单项等待选项选择的时长,超时则跳过

       3) splashimage=(hd#,#)/PATH/TO/XPM_PIC_FILE:指明菜单背景图片文件路径;

   只能使用xpm的压缩格式图片,且支持颜色很少14位色,640*480像素

       4) hiddenmenu:隐藏菜单;

       5) password [--md5] STRING:菜单编辑认证;

       6) title TITLE:定义菜单项“标题”, 可出现多次;

      root (hd#,#):grub查找stage2及kernel文件所在设备分区;为grub的“根”;

      kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:启动的内核

     initrd /PATH/TO/INITRAMFS_FILE内核匹配的ramfs文件;

     password [--md5] STRING 启动选定的内核或操作系统时进行认证;

    2.菜单保护机制

         (1)在配置文件内在不同位置编写password选项则有两种认证

        编辑菜单进行认证

         为启用内核或操作系统进行认证

技术分享

         (2)grub-md5-crypt命令:生成MD5样式的加密密码

[root@localhost etc]# grub-md5-crypt

Password:

Retype password:

$1$ofQCa$rv8VYt5L3j85X5F.tu0Lv0

技术分享

    3.安装grub命令grub-install

            grub-install:将grub完整安装到磁盘,且会自己找/boot目录

      grub-install --root-directory=ROOT /dev/DISK:指定安装根

 

 

 

 

四、GRUB修复

    1.重新安装:bootloadergrub损坏且尚未关机

[root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1 模拟bootloader损坏情况

      (1)方法一:grub-install命令重装修复

技术分享

      (2)方法二:命令提示符grb下修复

   1)grub> root (hd0,0):指定根所在分区,会进行文件系统的校验

   2)grub> setup (hd0):指定重新安装grib的硬盘,会冲洗安装该磁盘上/boot目录下的grub阶段

检测grub是否存在,并把MBR之后的27个扇区作为stage1_5阶段

技术分享

      机制:

重新安装/boot/grub下的stage1,所以要确保该文件存在

技术分享

    2.GRUB紧急救援模式:重启后发现grub损坏

       (1)载入系统安装光盘,重启

       (2)启动紧急救援模式:

              方法一:图形化界面选择Rescue install system:救援已安装的系统

              方法二:按Esc键,在命令行模式下输入:linux rescue

       (3)在紧急救援模式的bash下切换到更文件系统,grub-install安装

            1)选择语言

技术分享

            2)选择键盘类型

技术分享

            3)设置网络

        此处如果要从远程服务器上下载程序救援则选择yes

技术分享

            4)Rescue救援

                 救援环境会尝试查找磁盘上的Linux安装环境,若找到则将其挂载在/mnt/sysimage目录下

                 能够改变你根据你的需要去切换系统

技术分享

            5) Rescue查找,挂载系统

  此处会提示是否找到磁盘上的文件系统,以及临时挂载位置/mnt/sysimage

            6)救援模式的命令行下进行操作

                       # chroot  /mnt/sysimage       #切换至磁盘上的文件系统根目录

     切换到已经找到的根文件系统上后,可以查看到所有该文件系统上的内容

                       # grub-install --root-directory=/  /sda       #根据/bot/grub下的文件重新安装grubstage1

技术分享


本文出自 “许鼎的博客” 博客,转载请与作者联系!

grub救援修复详解(CentOS 5/6)

标签:grub   rescue   grub-install   

原文地址:http://xuding.blog.51cto.com/4890434/1730383

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!