ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

GRUB 修复与 Ubuntu 启动项恢复实战指南

GRUB 修复与 Ubuntu 启动项恢复实战指南

1. 前言

系统重装、分区调整或引导文件损坏后,Linux 常常无法正常启动,或者 BIOS 启动项里再也找不到 Ubuntu。本文整理了 GRUB 修复与启动项恢复的常见场景,涵盖老版本 GRUB、GRUB 2、GRUB 丢失、swap 分区 UUID 变化以及 UEFI 启动项丢失等问题,可直接对照操作。

2. 适用老版本 GRUB

使用已包含 GRUB 软件的 Linux 启动盘启动,进入 GRUB 命令行后执行:

grub grub>root(hdx,0)grub>setup(hdx,0)

如果无法确定引导分区,可以先查找menu.lst的位置:

find/boot/grub/menu.lst

根据查找结果确认分区(如(hd0,x)),再重新设置 root 并安装:

grub>root(hd0,x)grub>setup(hd0,x)reboot

3. 适用新版本 GRUB 2

使用 Linux 启动盘启动(无需进入启动盘系统),在 GRUB 2 菜单出现时按e进入某个菜单项,再按F2进入 GRUB 命令行提示符。

grub>grub>ls# 列出存在的磁盘与分区grub>setroot=(hdx,y)# x、y 为 0~9 的数字,代表不同磁盘与分区,请选择正确的 boot 分区

如果无法确认是哪个分区,可以用ls /查看当前所设 root 分区根目录的内容,从而确认分区是否正确。找到合适的分区后,重复上述命令即可。

grub>linux /boot/vmlinuzroot=/dev/sdaY# Y 为 1~9 的数字grub>initrd /boot/initrd.img grub>boot

4. GRUB 丢失的修复方法

成功进入 Linux 系统后,尝试重新安装 GRUB:

grub-install /dev/sda

如果出现如下错误:

grub-install:错误: 获取“/cow”的正规路径失败.

说明当前处于 Live 环境,需要先挂载根分区再安装。假设根分区为/dev/sda5:

sudomount/dev/sda5 /mntsudogrub-install --boot-directory=/mnt/boot /dev/sda

安装完成后更新 GRUB 配置:

sudoupdate-grub2

5. 分区调整后 UUID 变化导致启动缓慢

修改分区或调整分区大小后,UUID 可能发生变化,导致 Linux 启动缓慢。此时需要同步更新相关配置文件中的 UUID。

5.1 同步 swap 分区 UUID 与 /etc/fstab

先查看 swap 分区的 UUID:

sudoblkid# 查看 swap 分区的 UUID

然后修改/etc/fstab中 swap 分区的 UUID,使其与blkid输出保持一致。

5.2 同步 swap 分区 UUID 与内核参数

修改/etc/initramfs-tools/conf.d/resume中的 UUID(如果该文件不存在可忽略),然后执行:

sudoupdate-initramfs-u

6. 在 BIOS 中找回 Ubuntu 启动项

有时 Windows 更新或重新安装 Windows 后,双系统中的 Ubuntu 会从 BIOS 启动项中消失。此时可以在 Ubuntu 下重新创建 UEFI 启动项:

sudoefibootmgr-c-l"\EFI\ubuntu\shimx64.EFI"-Lubuntu-d/dev/nvme0n1-p1

参数含义如下:

  • -c:创建新的 UEFI 启动项
  • -d /dev/nvme0n1:目标磁盘
  • -p 1:EFI 系统分区,X1 Carbon 通常是第 1 个分区
  • -L "ubuntu":启动项显示名称
  • -l '\EFI\ubuntu\shimx64.efi':ESP 分区内的引导文件路径

7. 小结

GRUB 修复的核心思路是:先确认引导分区,再重新安装 GRUB 并更新配置;UUID 变化时同步修改/etc/fstab与resume文件;UEFI 启动项丢失时用efibootmgr重新创建。操作前建议备份重要数据,避免误操作导致系统无法启动。

返回列表