HCRM博客

如何在CentOS系统中使用GRUB引导加载程序?

GRUB CentOS

一、背景介绍

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

1 什么是GRUB?

GRUB,即Grand Unified Bootloader,是一种广泛使用的引导加载程序,它允许用户在计算机启动时选择要启动的操作系统,GRUB既支持BIOS系统也支持UEFI系统,并可以引导多种操作系统,如Linux、Windows等。

2 GRUB的主要作用

GRUB的主要功能是加载和转移控制到操作系统内核,通过配置,GRUB还能提供启动菜单,供用户选择不同的启动项或进入不同的系统模式(如单用户模式)。

1.3 为什么在CentOS中使用GRUB?

CentOS作为一款流行的企业级Linux发行版,使用GRUB作为其默认的引导加载程序,GRUB不仅功能强大,而且配置灵活,能够适应各种复杂的启动需求,GRUB还提供了丰富的文档和社区支持,使得问题诊断和解决变得更加容易。

二、GRUB的基本概念

1 GRUB的工作原理

GRUB的工作流程大致分为两个阶段:stage1和stage2,Stage1负责加载stage2,而stage2则负责加载实际的操作系统内核,Stage1通常位于MBR(Master Boot Record)或分区引导扇区(PBR),而stage2则位于/boot/grub目录下。

如何在CentOS系统中使用GRUB引导加载程序?-图2
(图片来源网络,侵权删除)

2.1.1 Stage1和Stage2的区别与联系

Stage1:这是GRUB的第一个加载阶段,负责加载最基本的GRUB代码,这些代码能够找到并加载stage2。

Stage2:这是GRUB的第二个加载阶段,包含更多的功能和驱动程序,用于实际加载操作系统内核。

2.1.2 如何加载配置文件

GRUB通过读取配置文件来了解如何加载操作系统,这些配置文件通常位于/boot/grub/grub.cfg(对于BIOS系统)或/boot/efi/EFI/centos/grub.cfg(对于UEFI系统)。

2 GRUB配置文件结构

GRUB的主配置文件通常是/etc/default/grub/etc/grub.d/目录下的文件。/etc/default/grub定义了全局设置,而/etc/grub.d/目录下的文件则包含具体的菜单条目配置。

如何在CentOS系统中使用GRUB引导加载程序?-图3
(图片来源网络,侵权删除)

2.2.1 /etc/default/grub文件详解

这个文件中包含了一些全局配置选项,例如默认的启动项、内核参数等。

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL=console
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"

2.2.2 /etc/grub.d/目录说明

该目录包含多个脚本,每个脚本生成一个菜单条目,这些脚本通常以数字加名称的形式命名,如10_linux.conf,这些脚本会被按顺序执行以生成最终的grub.cfg文件。

2.2.3 grub.cfg文件的作用

grub.cfg是由上述配置文件和脚本动态生成的,包含了实际的启动菜单和配置信息,每次更新GRUB配置后,都需要重新生成这个文件。

三、GRUB安装与配置

1 安装前的准备

在安装GRUB之前,需要确保系统的BIOS或UEFI设置正确,并且已经安装了必要的软件包。

3.1.1 检查系统环境

确保系统已经安装了CentOS,并且具备网络连接能力以便下载安装必要的软件包。

3.1.2 下载必要的软件包

如果还没有安装GRUB相关的软件包,可以使用yum进行安装:

sudo yum install y grub2

2 安装GRUB步骤

安装GRUB的过程包括安装stage1和stage2,以及配置MBR或PBR。

3.2.1 安装stage1

将stage1安装在MBR或PBR上:

sudo grub2install /dev/sda

注意:/dev/sda是硬盘设备名,根据实际情况进行调整。

3.2.2 安装stage2

将stage2安装到指定位置,通常是/boot/grub目录:

sudo grub2install dir=/boot/grub /dev/sda

3 配置GRUB

配置GRUB涉及编辑相关配置文件,并更新配置以生效。

3.3.1 编辑/etc/default/grub文件

根据需求编辑/etc/default/grub文件,例如添加额外的内核参数:

sudo vi /etc/default/grub

添加如下内容:

GRUB_CMDLINE_LINUX="console=ttyS0,115200n8 crashkernel=auto rhgb quiet"

保存并退出。

3.3.2 更新GRUB配置

修改完成后,需要更新GRUB配置:

sudo grub2mkconfig o /boot/grub2/grub.cfg

对于UEFI系统,命令如下:

sudo grub2mkconfig o /boot/efi/EFI/centos/grub.cfg

3.3.3 重启系统以使更改生效

重启系统以确保所有更改生效:

sudo reboot

四、常见问题及解决方案

1 GRUB无法引导系统

如果遇到GRUB无法引导系统的问题,可以尝试以下方法:

4.1.1 检查配置文件错误

确保/etc/default/grub/etc/grub.d/目录下的配置文件没有语法错误,可以使用grep命令检查是否有拼写错误或缺少引号等问题。

4.1.2 使用grub命令行修复引导

如果系统无法正常启动,可以尝试进入救援模式或使用Live CD,然后使用以下命令修复GRUB:

sudo mount /dev/sda1 /mnt  # 挂载根分区
sudo mount bind /dev /mnt/dev  # 绑定设备文件
sudo mount bind /proc /mnt/proc  # 绑定进程文件系统
sudo mount bind /sys /mnt/sys  # 绑定系统文件系统
sudo chroot /mnt               # 切换到chroot环境
grub2install /dev/sda         # 重新安装GRUB
exit                         # 退出chroot环境
sudo umount /mnt               # 卸载根分区
sudo reboot                    # 重启系统

注意:根据实际情况调整分区设备名。

2 忘记GRUB密码

如果忘记了GRUB密码,可以通过以下步骤重置:

4.2.1 livecd重置方法

使用Live CD启动系统,然后按照以下步骤操作:

sudo mount /dev/sda1 /mnt  # 挂载根分区
sudo mount bind /dev /mnt/dev  # 绑定设备文件
sudo mount bind /proc /mnt/proc  # 绑定进程文件系统
sudo mount bind /sys /mnt/sys  # 绑定系统文件系统
sudo chroot /mnt               # 切换到chroot环境
passwd                           # 修改root密码
touch /fastboot                  # 创建空文件以强制系统进入单用户模式
exit                            # 退出chroot环境
sudo umount /mnt                # 卸载根分区
sudo reboot                     # 重启系统

注意:根据实际情况调整分区设备名。

4.2.2 通过编辑配置文件重置密码

也可以通过直接编辑/etc/shadow文件来重置密码,但这需要对文件系统有深入的了解,并且操作风险较高,建议使用Live CD方法更为安全。

3 GRUB菜单显示不正确

如果GRUB菜单显示不正确,可能是由于配置文件中的错误导致的,可以尝试以下方法:

4.3.1 检查配置文件中的菜单条目

确保/etc/grub.d/目录下的所有配置文件都没有语法错误,可以使用grep命令检查是否有拼写错误或缺少引号等问题。

4.3.2 重新生成grub.cfg文件

有时候重新生成grub.cfg文件可以解决问题:

sudo grub2mkconfig o /boot/grub2/grub.cfg

对于UEFI系统,命令如下:

sudo grub2mkconfig o /boot/efi/EFI/centos/grub.cfg

之后重启系统查看效果。

五、高级配置技巧

1 修改GRUB主题

GRUB支持自定义主题,可以通过编辑/etc/grub.d/40_custom文件来添加自定义主题,首先下载所需的主题文件,然后将其解压到合适的位置,并在40_custom文件中添加以下内容:

set color_normal=white/black
set color_highlight=black/white
set menu_color_normal=cyan/blue
set menu_color_highlight=white/blue

保存后重新生成grub.cfg文件并重启系统即可看到效果。

2 设置双系统引导

如果需要设置双系统引导(如Windows和CentOS),可以按照以下步骤操作:

1、安装Windows和CentOS。

2、确保Windows已经正确安装。

3、安装CentOS时,选择手动分区,并将ESP(EFI System Partition)设置为500MB左右的空间。

4、完成CentOS安装后,使用Live CD启动系统。

5、挂载CentOS的分区并切换到chroot环境。

6、安装GRUB到ESP分区:

sudo grub2install efidirectory=/boot/efi target=x86_64efi bootloaderid=grub recheck nofloppy

7、退出chroot环境并重启系统。

8、进入BIOS设置,将ESP分区设置为首选启动项,保存设置并退出,此时应该可以看到双系统引导菜单。

9、如果需要调整默认启动项或超时时间,可以编辑/etc/default/grub文件并进行相应设置,将默认启动项设置为Windows:

GRUB_DEFAULT=0

将超时时间设置为5

GRUB_TIMEOUT=5
``保存后重新生成grub.cfg`文件并重启系统,现在应该可以在双系统之间自由切换了。
5.3 grub.cfg中的常用参数解析grub.cfg文件中包含许多常用的参数,可以根据需要进行配置:set default="0":设置默认启动项为第一个菜单项。set timeout="5":设置菜单显示时间为5秒。menuentry "CentOS Linux (4.4.0)":定义一个菜单项,显示文本为“CentOS Linux (4.4.0)”。linux16 /vmlinuz4.4.0core.el7.x86_64 root=/dev/mapper/centosroot ro crashkernel=auto rhgb quiet:指定内核映像的位置和其他参数,其中root=指定根文件系统的位置;ro表示只读模式;crashkernel=auto启用崩溃转储;rhgb禁用图形模式;quiet禁止显示启动信息。
分享:
扫描分享到社交APP
上一篇
下一篇