删除多系统残留引导
当你删除 NixOS、Arch Linux 或其他 Linux 系统后,GRUB 菜单里通常仍会残留旧系统的启动项。
这是因为:
- GRUB 配置未重新生成
- EFI 分区仍保留旧引导文件
- UEFI Boot Entry 未清理
本文以:
- Arch Linux
- NixOS
- UEFI + GRUB
为例,演示如何彻底删除残留引导项。
更新 GRUB 配置
通常第一步只需要重新生成 GRUB。
执行:
sudo grub-mkconfig -o /boot/grub/grub.cfg
GRUB 会重新扫描当前系统。
如果被删除的系统已经不存在:
- 对应菜单项会自动消失
- 无需手动编辑
grub.cfg
不建议直接手动修改
/boot/grub/grub.cfg。 检查 os-prober
如果旧系统仍然被扫描到:
编辑:
sudo nvim /etc/default/grub
检查:
GRUB_DISABLE_OS_PROBER=false
然后重新生成:
sudo grub-mkconfig -o /boot/grub/grub.cfg
清理 EFI 引导文件
即使系统已经删除:
EFI 分区中的启动文件可能依然存在。
查看 EFI 分区
执行:
lsblk
通常 EFI 分区会挂载到:
/boot/boot/efi
挂载 EFI 分区
如果未挂载:
sudo mount /dev/nvme0n1p1 /boot/efi
请根据实际磁盘修改设备名。
查看 EFI 目录
sudo ls /boot/efi/EFI
可能看到:
Arch
nixos
Microsoft
Boot
删除旧系统 EFI 文件
例如删除 NixOS:
sudo rm -rf /boot/efi/EFI/nixos
删除 Arch:
sudo rm -rf /boot/efi/EFI/Arch
不要删除
Microsoft 目录,否则 Windows 将无法启动。 清理 UEFI Boot Entry
有时候:
- EFI 文件已经删除
- 但 BIOS 启动菜单仍然存在旧项目
这是因为 UEFI Boot Entry 仍保留。
查看引导项
执行:
sudo efibootmgr
输出示例:
Boot0000* Windows Boot Manager
Boot0001* Arch Linux
Boot0002* NixOS
删除旧引导项
例如删除:
Boot0002* NixOS
执行:
sudo efibootmgr -b 0002 -B
参数说明:
-b:指定 Boot 编号-B:删除 Boot Entry
systemd-boot 用户
如果你使用的是:
- systemd-boot
- bootctl
需要删除 loader 配置。
查看:
ls /boot/loader/entries
删除对应文件:
sudo rm /boot/loader/entries/nixos.conf
然后更新:
sudo bootctl update
删除 Btrfs 子卷(可选)
如果系统分区还存在:
可以顺便删除旧子卷。
查看:
sudo btrfs subvolume list /
删除:
sudo btrfs subvolume delete /mnt/@nixos
最终检查
重新生成 GRUB:
sudo grub-mkconfig -o /boot/grub/grub.cfg
然后重启:
reboot
确认:
- GRUB 菜单不再显示旧系统
- BIOS 启动项已清理
- EFI 分区无残留目录
End of document
Loading Comments...