Published Document

删除多系统残留引导

删除多系统残留引导

当你删除 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...