zoukankan      html  css  js  c++  java
  • Centos6 修复grub损坏故障

    1、查看系统中的/boot/grub/grub.conf

    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/mapper/vg_test-lv_root
    #          initrd /initrd-[generic-]version.img
    #boot=/dev/sda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.32-431.el6.i686)
            root (hd0,0)
            kernel /vmlinuz-2.6.32-431.el6.i686 ro root=/dev/mapper/vg_test-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD rd_LVM_LV=vg_test/lv_swap SYSFONT=latarcyrheb-sun16  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rd_LVM_LV=vg_test/lv_root rhgb quiet
            initrd /initramfs-2.6.32-431.el6.i686.img
     
     
    2、模拟故障
    删除boot目录下的grub相关文件:

    重启之后报错:

    3、修复故障

    开机进入救援模式:

    操作之前将根切换至之前的系统:

    创建光盘挂载目录,并挂载光盘,安装kerner包,会生成/boot目录以及内核及initramfs :

     修复grub,首先要查看一下自己的磁盘分区情况,以确认grub安装在那个磁盘上:

     

     

    从上图可以看到/boot 安装在/dev/sda1分区。 

    为第一块磁盘安装grub引导:
     
     
    确认grub目录已经生成,后面会用到:
     

    此时仍然在救援模式,编辑/boot/grub/grub.conf文件

    sh-4.1#vi  /boot/grub/grub.conf
    default=0
    timeout=5
    hiddenmenu
    title    linux
    root   (hd0,0)
    kernel  /vmlinuz-2.6.32.-431.el6.x86_64   ro   root=/dev/mapper/vg_test-lv_root
    initrd   /initramfs-2.6.32-431.el6.x86_64.img
     
    :x
    保存并退出。然后重启,可以正常进入系统。

    进入系统之后查看/boot/grub/grub.conf文件:

     
     参数解释:
    • chroot /mnt/sysimage                进入系统真实系统下
    • df -h                                              观察发现 / 挂载到逻辑卷上 /dev/mapper/vg_test-lv_root
    • grub-install  /dev/sda                   在根(/)挂载磁盘生成grub目录。绝大多数情况下,根和/boot在一个磁盘   
    • default=0                                     默认进入第一个引导系统
    • timeout=5                                     5秒后自动进入启动界面 
    • hiddenmenu                                隐藏菜单
    • title  linux                                    标签 
    • root (hd0,0)                                boot目录在(hd0,0)分区上 
    • kernel                                         /vmlinuz-2.6.32.-431.el6.x86_64   ro   root=/dev/mapper/vg_test-lv_root 【若硬盘和分区很多,推荐使用UUID】
    • 或 kernel              /vmlinuz-2.6.32-696.e16.x86_64 ro    root=UUID=XXXXX \指明内核文件,ro为只读挂载,root指定根分区(可以是分区或者逻辑卷,或者指定根分区的UUID),rhgb为启动过程图形化显示的参数,quiet为显示内核启动过程的参数
    •  initrd /initramfs-2.6.32-696.e16.x86_64.img       指明ramfs文件
     
     
    4、临时编辑/boot/grub/grub.conf文件解决故障
    可以在救援模式编辑/boot/grub/grub.conf文件,也可以临时编辑启动文件
    /boot/grub/grub.conf
     
     
     boot回车启动。可以正常进入系统。
     
     
    注:
    • grub>  root (hd0,0)  #是说根分区在第一块硬盘的第一个分区上。(hd0,1)是说根分区在第一块硬盘的第二个分区上
    • grub>  kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro  root=/dev/mapper/vg_test-lv_root        #指明内核路径和根分区
    • grub>  initrd  /boot/initramfs-2.6.32-431.el6.x86_64.img    #指明initramfs 路径启动系统加载驱动
    • grub>  boot  #启动上面指定的系统,如果是reboot就等于重启整个系统了,刚才的设置就失效了
     
     
     
    此时已经可以引导系统启动了,但是还没有grub.conf文件,可以在系统启动后编写一个grub.conf文件即可。 否则重启系统后就无法正常开机了,除非在grub界面指定内核和驱动文件的路径
     
     编写grub.conf文件:
     
     
  • 相关阅读:
    解决 .net Core 3.1中使用GB2312编码异常
    sql server datetime类型字段使用isnull返回1900-01-01 00:00:00.000的问题
    c# – 从.NET中的字符串获取url参数
    fastjson对象,JSON,字符串,map之间的互转
    Java工具:Java递归去除Json字符串空值(key和value)
    vue运行报错 ‘vue-cli-service‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
    java调用CTP API坑【我】
    SpringBoot在logback.xml中读取application.properties中配置的日志路径
    org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com【我】
    springboot mybatis-plus分页配置不生效【我】
  • 原文地址:https://www.cnblogs.com/liuxing0007/p/10830128.html
Copyright © 2011-2022 走看看