怎么把一个Linux系统的GRUB引导修复或重装【引导修复】

阿磊大大_5182

阿磊大大_5182

2026-03-21

1512人浏览

原创

grub损坏时可通过五种方法修复:一、live usb重装grub;二、grub rescue下临时引导后修复;三、uefi系统改用systemd-boot或efibootmgr;四、boot-repair图形化自动修复;五、仅重建grub.cfg配置文件。

怎么把一个linux系统的grub引导修复或重装【引导修复】

如果您启动Linux系统时遇到GRUB菜单缺失、黑屏、grub rescue>提示符或“error: unknown filesystem”等错误,则说明GRUB引导程序已损坏或被覆盖。以下是修复或重装GRUB的多种可行方法:

一、使用Live USB进入系统并重新安装GRUB到主硬盘

该方法适用于能正常挂载原系统根分区,但GRUB未正确写入MBR或EFI系统分区的情形。需借助与目标系统架构一致的Linux Live环境(如Ubuntu、CentOS或Debian Live USB)。

1、插入Live USB并从其启动,选择“Try without installing”进入桌面环境。

2、打开终端,执行sudo fdisk -l识别原Linux系统所在磁盘(例如/dev/sda)及根分区(例如/dev/sda2)、EFI系统分区(例如/dev/sda1,FAT32格式,标有EFI System)。

3、创建挂载点并挂载根分区:sudo mkdir /mnt && sudo mount /dev/sda2 /mnt(请将/dev/sda2替换为实际根分区)。

4、若系统使用UEFI模式,还需挂载EFI系统分区:sudo mkdir -p /mnt/boot/efi && sudo mount /dev/sda1 /mnt/boot/efi(请将/dev/sda1替换为实际ESP分区)。

5、挂载必要虚拟文件系统:sudo mount --bind /dev /mnt/dev && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/sys。

6、切换到原系统环境:sudo chroot /mnt。

7、重新安装GRUB:对于BIOS系统,执行grub-install /dev/sda;对于UEFI系统,执行grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu(请根据发行版调整--bootloader-id值,如centos、debian等)。

8、更新GRUB配置:update-grub(Debian/Ubuntu)或grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS/Fedora)。

9、退出chroot并重启:exit,然后执行sudo reboot,拔出Live USB。

二、在grub rescue>提示符下临时引导进入系统并修复

该方法适用于GRUB核心映像(core.img)尚可加载,但无法定位正常模块或配置文件的情形,可临时加载内核和initrd完成启动,再进行持久化修复。

1、在grub rescue>提示符下,输入ls查看所有磁盘分区,例如输出为(hd0) (hd0,msdos1) (hd0,msdos2)。

2、逐个检查分区是否含/boot目录:ls (hd0,msdos2)/boot/,直到发现包含vmlinuz-和initrd.img-文件的分区。

3、设定根设备:set root=(hd0,msdos2)(使用上一步确认的分区)。

4、设定Linux内核路径:linux /boot/vmlinuz-$(version)-root=/dev/sda2(请替换$(version)为实际内核版本号,如5.15.0-91-generic;/dev/sda2为根设备)。

5、设定initrd路径:initrd /boot/initrd.img-$(version)(版本号需与上一步一致)。

6、启动系统:boot。

7、成功登录后,立即执行对应发行版的GRUB重装命令(同方法一第7–8步)。

三、使用systemd-boot或efibootmgr替代GRUB(仅限UEFI系统)

当GRUB反复损坏且系统为UEFI固件时,可绕过GRUB,直接通过UEFI固件加载Linux内核,避免依赖复杂引导链。此方案不重装GRUB,而是建立独立启动项。

1、确保系统已安装systemd-boot或efibootmgr工具,通常随发行版默认提供。

2、挂载EFI系统分区(如未挂载):sudo mount /dev/sda1 /boot/efi。

3、安装systemd-boot(如未安装):sudo bootctl install(Arch、Fedora 38+、Debian 12+等支持)。

4、创建启动项配置文件/boot/efi/loader/entries/arch.conf(以Arch为例)或对应发行版路径,内容包括title Arch Linux、linux /vmlinuz-linux、initrd /initramfs-linux.img、options root=UUID=xxxx ro(UUID需用blkid查得)。

5、手动添加UEFI启动项:sudo efibootmgr -c -d /dev/sda -p 1 -L "MyLinux" -l "\vmlinuz-linux" -u "root=UUID=xxxx ro initrd=\initramfs-linux.img"(-d指定磁盘,-p指定ESP分区编号)。

6、重启并进入UEFI固件设置,将新条目设为第一启动项。

四、使用Boot-Repair工具自动化修复(适用于Ubuntu/Debian系)

Boot-Repair是一个图形化修复工具,可自动检测多重启动配置、恢复GRUB、修复EFI分区权限及生成详细日志,适合不熟悉命令行的用户。

1、在Live环境中连接网络,打开终端。

2、添加官方仓库并安装:sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt update && sudo apt install -y boot-repair。

3、运行工具:boot-repair,等待界面加载完成。

4、点击Recommended repair按钮,工具将自动执行分区检测、GRUB重装、配置更新等操作。

5、修复完成后,记录屏幕上显示的URL(如paste.ubuntu.com/xxxxx),该链接包含完整诊断日志,可用于进一步分析。

6、关闭工具,重启系统并拔出Live介质。

五、重建GRUB配置文件而不重装引导程序

当GRUB可正常显示菜单但缺少某操作系统条目、内核未更新或自定义菜单失效时,往往只需刷新配置文件,无需重写MBR或ESP。

1、以管理员身份登录正在运行的Linux系统。

2、确认/boot/grub/目录存在且包含grub.cfg(BIOS)或/boot/grub2/grub.cfg(RHEL系)或/boot/efi/EFI/ubuntu/grub.cfg(UEFI)。

3、对于Debian/Ubuntu系统,执行:sudo update-grub。

4、对于RHEL/CentOS/Fedora系统,执行:sudo grub2-mkconfig -o /boot/grub2/grub.cfg。

5、若使用自定义主题或脚本,需确保/etc/default/grub中GRUB_DISABLE_OS_PROBER=false已启用,并确认os-prober包已安装且未被禁用。

6、验证生成结果:sudo grep -i "menuentry" /boot/grub2/grub.cfg | head -5,确认Windows、其他Linux等条目已列出。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

969

5

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.25

2860

5

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.12.07

357

5

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.26

3199

3

查看端口占用情况windows
查看端口占用情况windows

端口占用是指与端口关联的软件占用端口而使得其他应用程序无法使用这些端口,端口占用问题是计算机系统编程领域的一个常见问题,端口占用的根本原因可能是操作系统的一些错误,服务器也可能会出现端口占用问题。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.27

2778

6

windows照片无法显示
windows照片无法显示

当我们尝试打开一张图片时,可能会出现一个错误提示,提示说"Windows照片查看器无法显示此图片,因为计算机上的可用内存不足",本专题为大家提供windows照片无法显示相关的文章,帮助大家解决该问题。

2023.08.01

1488

3

windows查看端口被占用的情况
windows查看端口被占用的情况

windows查看端口被占用的情况的方法:1、使用Windows自带的资源监视器;2、使用命令提示符查看端口信息;3、使用任务管理器查看占用端口的进程。本专题为大家提供windows查看端口被占用的情况的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

2559

5

windows无法访问共享电脑
windows无法访问共享电脑

在现代社会中,共享电脑是办公室和家庭的重要组成部分。然而,有时我们可能会遇到Windows无法访问共享电脑的问题。这个问题可能会导致数据无法共享,影响工作和生活的正常进行。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.08

3290

4

windows自动更新
windows自动更新

Windows操作系统的自动更新功能可以确保系统及时获取最新的补丁和安全更新,以提高系统的稳定性和安全性。然而,有时候我们可能希望暂时或永久地关闭Windows的自动更新功能。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.10

1597

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.7万人学习