HCRM博客

如何在CentOS中启动GRUB引导加载程序?

CentOS 启动 GRUB

在 CentOS 系统中,GRUB(Grand Unified Bootloader)是默认的引导加载程序,它负责在系统启动时加载操作系统内核和初始文件系统,在某些情况下,GRUB 可能会遇到问题,导致系统无法正常启动,本文将详细介绍如何在 CentOS 中启动 GRUB,包括手动启动系统、修复 GRUB 配置文件以及常见问题的解决方法。

如何在CentOS中启动GRUB引导加载程序?-图1
(图片来源网络,侵权删除)

一、了解 GRUB 和问题原因

GRUB 是一个多操作系统启动管理器,允许用户选择要启动的操作系统,当系统启动时,GRUB 会读取其配置文件(通常是/boot/grub2/grub.cfg)以确定可用的操作系统和内核版本,GRUB 配置文件丢失或损坏,或者 MBR(Master Boot Record)中的引导程序遭到破坏,就会导致系统无法正常启动,而显示 "GRUB>" 命令提示符。

二、找出正确的启动设备和分区

在 "GRUB>" 提示符下,可以使用以下命令查看可用的设备和分区:

grub> ls

输出可能如下:

(hd0) (hd0,msdos1) (hd0,msdos2)

这里,(hd0) 表示第一个硬盘,(hd0,msdos1)(hd0,msdos2) 分别表示该硬盘上的第一个和第二个分区。

三、手动启动 Linux 系统

一旦确定了正确的设备和分区,可以通过以下步骤手动启动系统:

1、设置 root 设备:假设 root 设备为(hd0,msdos1),则执行:

如何在CentOS中启动GRUB引导加载程序?-图2
(图片来源网络,侵权删除)
   grub> set root=(hd0,msdos1)

2、加载内核和初始 RAM 磁盘

   grub> linux /vmlinuz3.10.01160.el7.x86_64 root=/dev/sda1
   grub> initrd /initramfs3.10.01160.el7.x86_64.img

这里,/vmlinuz3.10.01160.el7.x86_64 是内核文件,/initramfs3.10.01160.el7.x86_64.img 是初始 RAM 磁盘镜像文件,/dev/sda1 是根文件系统所在的分区。

3、启动系统

   grub> boot

四、修复 GRUB

如果能够成功手动启动系统,接下来可以修复 GRUB,以下是具体步骤:

1、重新生成 GRUB 配置文件

   sudo grub2mkconfig o /boot/grub2/grub.cfg

2、安装 GRUB 到 MBR

如何在CentOS中启动GRUB引导加载程序?-图3
(图片来源网络,侵权删除)
   sudo grub2install /dev/sda

这里,/dev/sda 是要安装 GRUB 的硬盘设备。

五、常见问题及解决方法

1. GRUB 配置文件错误或丢失

GRUB 配置文件丢失或配置错误,可以使用以下命令重新生成

sudo grub2mkconfig o /boot/grub2/grub.cfg

然后重新安装 GRUB:

sudo grub2install /dev/sda

2. MBR 记录中的引导程序被破坏

MBR 中的引导程序被破坏,可以使用以下命令修复:

sudo grub2install /dev/sda

3. 无法识别正确的分区

在 "GRUB>" 提示符下,使用ls 命令查看所有可用的分区,并尝试不同的分区直到找到正确的为止。

grub> ls (hd0,msdos1)/
grub> ls (hd0,msdos2)/

找到包含vmlinuzinitramfs 文件的分区即为正确的分区。

4. 进入单用户模式或紧急模式

如果需要进入单用户模式或紧急模式进行修复,可以在内核参数后添加systemd.unit=emergency.target

grub> set root=(hd0,msdos1)
grub> linux /vmlinuz3.10.01160.el7.x86_64 root=/dev/sda1 systemd.unit=emergency.target
grub> initrd /initramfs3.10.01160.el7.x86_64.img
grub> boot

通过以上步骤,您可以在 CentOS 系统中启动 GRUB 并进行必要的修复,了解 GRUB 的基本概念和操作方法,可以帮助您在系统启动问题出现时快速恢复系统的正常运行,以下是两个常见问题及其解答:

Q1:如何更改 GRUB 的默认启动项?

A1:可以通过编辑/etc/default/grub 文件中的GRUB_DEFAULT 行来更改默认启动项,将GRUB_DEFAULT=0 修改为GRUB_DEFAULT=1,然后将更改应用到 GRUB 配置文件:

sudo grub2mkconfig o /boot/grub2/grub.cfg

Q2:如何在 GRUB 菜单中添加自定义启动项?

A2:可以在/etc/grub.d/ 目录下创建一个新的配置文件,例如40_custom,并在其中添加自定义的启动项。

#!/bin/sh
echo "Custom entry" >> /boot/grub2/grub.cfg
echo "menuentry 'My Custom Entry' {" >> /boot/grub2/grub.cfg
echo "    set root=(hd0,msdos1)" >> /boot/grub2/grub.cfg
echo "    linux /vmlinuz3.10.01160.el7.x86_64 root=/dev/sda1 custom_param=value" >> /boot/grub2/grub.cfg
echo "    initrd /initramfs3.10.01160.el7.x86_64.img" >> /boot/grub2/grub.cfg
echo "}" >> /boot/grub2/grub.cfg

然后重新生成 GRUB 配置文件:

sudo grub2mkconfig o /boot/grub2/grub.cfg
分享:
扫描分享到社交APP
上一篇
下一篇