设为首页 收藏本站
查看: 977|回复: 0

[经验分享] grub救援修复详解(CentOS 5/6)

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-4-27 12:42:24 | 显示全部楼层 |阅读模式

  一、BootLoader引导加载程序

   1.BootLoader(MBR)分类:
       (1)Windows上引导加载器:ntloader
       (2)Linux上引导加载器
              1) LILO  
        短小精悍的linux加载器,1024柱面之后无法加载,现在多用于安卓手机启动
              2)GRUB:GrandUniform 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的命令行交互式接口;
DSC0000.jpg
       (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:获取帮助列表
                  helpKEYWORD: 详细帮助信息
               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:工作在静默模式
DSC0001.jpg
   2.手动在grub命令行接口启动系统
  grub>root (hd#,#)
  grub>kernel /vmlinuz-VERSION-RELEASE ro root=/dev/DEVICE
  grub>initrd /initramfs-VERSION-RELEASE.img
  grub>boot
DSC0002.jpg
   注意:
      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
DSC0003.jpg
  配置项:
      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选项则有两种认证
        编辑菜单进行认证
         为启用内核或操作系统进行认证
DSC0004.jpg
        (2)grub-md5-crypt命令:生成MD5样式的加密密码
[root@localhost etc]# grub-md5-crypt
Password:
Retype password:
$1$ofQCa$rv8VYt5L3j85X5F.tu0Lv0
DSC0005.jpg
   3.安装grub命令grub-install
            grub-install:将grub完整安装到磁盘,且会自己找/boot目录
      grub-install--root-directory=ROOT /dev/DISK:指定安装根




四、GRUB修复
   1.重新安装:bootloadergrub损坏且尚未关机
[root@localhost ~]# ddif=/dev/zero of=/dev/sda bs=446 count=1 模拟bootloader损坏情况
     (1)方法一:grub-install命令重装修复
DSC0006.jpg
     (2)方法二:命令提示符grb下修复
  1)grub> root(hd0,0):指定根所在分区,会进行文件系统的校验
  2)grub> setup(hd0):指定重新安装grib的硬盘,会冲洗安装该磁盘上/boot目录下的grub阶段
检测grub是否存在,并把MBR之后的27个扇区作为stage1_5阶段
DSC0007.jpg
      机制:
重新安装/boot/grub下的stage1,所以要确保该文件存在
DSC0008.jpg
   2.GRUB紧急救援模式:重启后发现grub损坏
      (1)载入系统安装光盘,重启
      (2)启动紧急救援模式:
              方法一:图形化界面选择Rescue install system:救援已安装的系统
              方法二:按Esc键,在命令行模式下输入:linux rescue
      (3)在紧急救援模式的bash下切换到更文件系统,grub-install安装
           1)选择语言
DSC0009.jpg
           2)选择键盘类型
DSC00010.jpg
           3)设置网络
        此处如果要从远程服务器上下载程序救援则选择yes
DSC00011.jpg
           4)Rescue救援
                 救援环境会尝试查找磁盘上的Linux安装环境,若找到则将其挂载在/mnt/sysimage目录下
                 能够改变你根据你的需要去切换系统
DSC00012.jpg
           5) Rescue查找,挂载系统
  此处会提示是否找到磁盘上的文件系统,以及临时挂载位置/mnt/sysimage
           6)救援模式的命令行下进行操作
                       #chroot  /mnt/sysimage       #切换至磁盘上的文件系统根目录
     切换到已经找到的根文件系统上后,可以查看到所有该文件系统上的内容
                       #grub-install --root-directory=/ /sda       #根据/bot/grub下的文件重新安装grubstage1
DSC00013.jpg
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-452741-1-1.html 上篇帖子: centos字符集的问题 下篇帖子: CentOS6.7部署MySQL多实例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表