
在多系统安装、系统重装或磁盘迁移后,EFI 系统分区(ESP)中往往会残留已卸载系统的引导文件,UEFI 固件的启动菜单中也会出现失效的启动条目。这些残留不影响日常使用,但会造成启动菜单混乱,在某些机器上甚至导致启动时间变长。本文介绍如何手动清理这些遗留内容。
操作环境:Linux(以 NVMe 硬盘为例)
所需权限:sudo
核心工具:efibootmgr · cfdisk · rm
⚠️ 操作前请注意:EFI 引导文件直接关系到系统能否正常启动。删除前请仔细确认目标条目和文件,误删当前系统的引导文件将导致系统无法启动。建议操作前备份 EFI 分区内容。
一、查看当前 EFI 启动条目
1.1 列出所有启动项
使用 efibootmgr 工具读取 UEFI 固件中存储的启动条目列表:
sudo efibootmgr
输出示例
BootCurrent: 0001
Timeout: 1 seconds
BootOrder: 0001,0002,0003
Boot0001* ubuntu
Boot0002* Windows Boot Manager
Boot0003* Fedora
字段说明
| 字段 | 说明 |
|---|---|
BootCurrent |
当前本次启动所使用的条目编号 |
BootOrder |
启动尝试顺序,从左到右依次尝试 |
Boot#### |
各启动条目,* 表示该条目当前已启用 |
💡 记下需要删除的条目编号(如
0003),后续步骤会用到。已卸载的系统条目通常仍出现在列表中,但实际引导文件可能已不存在。
二、确认 EFI 分区位置
2.1 查看磁盘分区结构
在删除 EFI 目录内的文件之前,需要先确认 EFI 系统分区(ESP)挂载在哪个设备上。使用 cfdisk 查看分区布局:
sudo cfdisk /dev/nvme0n1
如果你的硬盘是 SATA 接口,设备名称通常为
/dev/sda,请按实际情况替换。
如何识别 EFI 分区
在 cfdisk 的分区列表中,EFI 系统分区的 Type 列会显示为 EFI System,文件系统格式为 FAT32,容量通常在 100 MB ~ 512 MB 之间。
确认后按 q 退出 cfdisk,无需做任何修改。
三、删除弃用的引导文件
3.1 进入 EFI 目录
EFI 分区通常挂载在 /boot/efi,各系统的引导文件分别存放在以系统名称命名的子目录中:
cd /boot/efi/EFI/
ls -lh
目录结构示例
/boot/efi/EFI/
├── ubuntu/ ← 当前系统(请勿删除)
├── Windows/ ← Windows 引导文件
├── fedora/ ← 已卸载的 Fedora(可删除)
└── BOOT/ ← 备用引导文件,一般不要删除
3.2 删除目标引导目录
确认目录名称后,执行删除命令:
sudo rm -rf /boot/efi/EFI/需要删除的目录名
示例:删除已卸载的 Fedora 引导文件
sudo rm -rf /boot/efi/EFI/fedora
⚠️ 请勿删除以下目录:
- 当前正在使用的系统引导目录(可通过第一步的
BootCurrent对应确认)BOOT/目录(包含 UEFI 备用引导程序bootx64.efi,部分机器依赖它启动)
四、删除 UEFI 启动条目
4.1 移除失效的启动项
删除 EFI 文件后,UEFI 固件中对应的启动条目仍然存在,需要手动从 NVRAM 中移除:
sudo efibootmgr -b 引导序号 -B
参数说明:-b 指定条目编号,-B 表示删除该条目(Boot delete)。
示例:删除编号为 0003 的 Fedora 启动条目
sudo efibootmgr -b 0003 -B
4.2 验证清理结果
删除完成后,再次运行 efibootmgr 确认条目已被移除:
sudo efibootmgr
若输出的启动列表中已不再出现已删除的条目,说明清理成功。