5154

Good Luck To You!

CentOS 7无法开机,如何手动安装GRUB来解决引导问题?

在 CentOS 7 的安装与配置过程中,GRUB(GRand Unified Bootloader)扮演着至关重要的角色,它是在计算机启动后加载操作系统的第一个软件,负责管理多个系统内核,并提供引导菜单,理解 GRUB 的安装与配置,不仅能确保系统顺利启动,还能在后续的系统维护中提供极大的便利。

CentOS 7无法开机,如何手动安装GRUB来解决引导问题?

安装过程中的 GRUB 配置

当您通过 Anaconda 安装程序进行到“安装位置”(Installation Destination)界面时,GRUB 的安装便已悄然开始,在这个界面,您不仅需要划分磁盘分区,还需要确认引导加载程序的安装位置。

安装程序会自动检测并列出系统的硬盘,在界面底部,您会看到一个“引导加载程序”选项,默认情况下,GRUB 会被安装在您选择用于安装系统的硬盘的主引导记录(MBR)或 EFI 系统分区(ESP)中,对于大多数单系统用户而言,保持默认选择(/dev/sda)是最稳妥的方案。

下表阐明了不同启动模式下 GRUB 的安装位置差异:

启动模式 引导设备 说明
传统 BIOS MBR (主引导记录) 通常选择整个硬盘,如 /dev/sda,GRUB 信息写入硬盘的第一个扇区。
UEFI 模式 ESP (EFI 系统分区) 一个小的 FAT32 格式分区,通常为 200MB,GRUB 以 .efi 文件形式存储于此。

在分区规划时,如果使用 UEFI 模式,务必创建一个 EFI 系统分区(ESP),Anaconda 通常会自动处理,但手动分区时需要特别注意,GRUB 将在此分区中创建 EFI/centos/grubx64.efi 文件,固件会通过这个文件来启动 CentOS 7。

安装后的 GRUB 管理与维护

系统安装完成后,GRUB 的主配置文件是 /boot/grub2/grub.cfg,强烈不建议直接手动编辑此文件,因为它是由脚本自动生成的,每次系统内核更新后都会被覆盖,正确的做法是修改其模板文件。

CentOS 7无法开机,如何手动安装GRUB来解决引导问题?

修改 GRUB 默认行为,例如更改默认启动项或调整等待时间,需要编辑 /etc/default/grub 文件,使用文本编辑器打开它:

sudo vi /etc/default/grub

您会看到类似如下的内容:

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
  • GRUB_TIMEOUT:设置引导菜单的等待时间(秒)。
  • GRUB_DEFAULT:设置默认启动的菜单项。saved 表示上次使用的选项,也可以设置为菜单项的序号(如 0 表示第一项)或标题。

修改完成后,必须运行以下命令来重新生成 /boot/grub2/grub.cfg 文件,使更改生效:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

对于 UEFI 系统,命令可能略有不同,输出路径通常是 /boot/efi/EFI/centos/grub.cfg,但 grub2-mkconfig 命令通常会自动处理。

引导故障与紧急修复

GRUB 的强大之处还在于其提供了丰富的救援功能,当系统无法正常启动时,在 GRUB 菜单出现时按下 e 键,可以编辑当前选中内核的启动参数,这对于调试启动问题或进入紧急模式至关重要,在内核行末尾添加 systemd.unit=rescue.targetinit=/bin/bash 可以进入单用户模式,方便进行密码重置或文件系统修复。

CentOS 7无法开机,如何手动安装GRUB来解决引导问题?


相关问答 (FAQs)

问 1:我安装了 Windows 和 CentOS 7 双系统,但重装 Windows 后,CentOS 的启动菜单消失了,该怎么办?

答:这是因为 Windows 安装程序重写了硬盘的 MBR,覆盖了原有的 GRUB,您需要恢复 GRUB,方法是:

  1. 使用 CentOS 7 安装介质(如 U 盘或光盘)启动计算机,选择“Troubleshooting” -> “Rescue a CentOS system”。
  2. 进入救援模式后,执行 chroot /mnt/sysimage 命令将系统环境切换到您硬盘上的 CentOS 系统。
  3. 重新安装 GRUB 到 MBR,对于传统 BIOS,执行 grub2-install /dev/sda(请将 /dev/sda 替换为您的系统盘)。
  4. 重新生成 GRUB 配置文件:grub2-mkconfig -o /boot/grub2/grub.cfg
  5. 依次输入 exit 退出 chroot 环境,reboot 重启计算机,GRUB 菜单应该就会恢复。

问 2:我忘记了 CentOS 7 的 root 密码,如何通过 GRUB 重置?

答:可以利用 GRUB 的引导编辑功能进入单用户模式来重置密码。

  1. 在启动计算机出现 GRUB 菜单时,按 e 键进入编辑界面。
  2. 找到以 linux16linuxefi 开头的行,这通常是内核启动参数行。
  3. 将光标移动到该行的末尾,删除 rhgb quiet 等参数,然后添加 rd.break
  4. Ctrl + x 启动,系统会进入一个临时的 switch_root shell。
  5. 依次执行以下命令来挂载文件系统并重置密码: mount -o remount,rw /sysroot chroot /sysroot passwd root (然后按提示输入新密码) touch /.autorelabel (这很重要,它会触发 SELinux 重新标记文件,否则可能无法登录) exit exit
  6. 系统会自动重启,重启后您就可以使用新设置的 root 密码登录了。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.