CentOS引导修复记录

引导修复

  • 用CentOS iso文件制作启动u盘进入到安装CentOS的界面,然后选择rescue a CentOS system
  • 根据提示选择选项进入rdshell命令行界面,输入:chroot /mnt/sysimage将系统挂载至/mnt/sysimage,执行fdisk -l 查看系统安装在哪个磁盘上(故障系统安装为/dev/sda),接着为sda安装grub,执行以下命令:/sbin/grub-install --root-directory=/ /dev/sda。执行cfdisk 查看磁盘分区细节,并记录。
  • 执行ls /boot/grub,确认grub目录生成成功,reboot重新启动系统。
  • 重启后系统进入grub引导界面,在提示符后面分别执行以下命令(tab键能补全,若报error,表明分区指定不对,需重新开始):

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    grub> root (hd0, 6) 
    #指定根目录为第一块磁盘的第7个逻辑分区,即/dev/sda7

    grub> kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda7
    #加载内核

    grub> initrd /boot/initramfs-2.6.32-431.el.x86_64.img
    #临时根文件系统

    grub> boot
    #启动
  • 若出现Welcome to CentOS提示,则系统启动成功。

  • 进入系统后,在/boot/grub/目录下添加grub.conf文件,内容如下(参考正常系统的grub.conf文件):
    1
    2
    3
    4
    5
    6
    7
    8
    default=0
    timeout=5
    splashimage=(hd0,6)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.32-431.el6.x86_64)
    root (hd0,6)
    kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda7 rhgb quiet
    initrd /boot/initramfs-2.6.32-431.el6.x86_64.img

存在问题记录

命令执行过程error

  • 系统分区指定不对,重新指定并执行上述命令。

系统启动失败

  • 错误描述,提示mount:/dev/sda7 already mounted or /sysroot busy记录此处建议的错误处理方式
  • 处理方法,重启系统,在grub引导界面重新输入命令,根据上述提示在加载内核做相应修改:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    grub> root (hd0, 6) 
    #指定根目录为第一块磁盘的第7个逻辑分区,即/dev/sda7

    grub> kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda7 rdshell
    #加载内核,设置进入rdshell终端

    grub> initrd /boot/initramfs-2.6.32-431.el.x86_64.img
    #临时根文件系统

    grub> boot
    #启动,进入rdshell
  • 进入rdshell后查看文件cat /etc/mtab,显示/dev/sda7并未挂载(若已挂载,则umount),此时查看cat /dev/disk/by-uuid下面的分区标志,记录/dev/sda7的uuid(一般是第一个由小写字母、数字和横杠组成的字符串),并重启系统。

  • 在grub引导界面重新执行引导过程的命令,修改加载内核的命令如下:

    1
    grub> kernel /boot/vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=xxxx-xxx-xxx-xx    #之前记录的uuid值
  • 进入系统后,修改grub.conf文件相应内容为root=UUID=xxxx-xxx-xxx-xx