卸载旧linux发行版后需清理grub残留引导项:先确认grub.cfg路径,再定位并完整删除无效menuentry区块,最后执行update-grub或grub2-mkconfig重建菜单,并在uefi模式下用efibootmgr清除对应efi启动项。

当你在Linux系统中卸载了一个旧发行版(比如删掉了Fedora,只保留Deepin),开机时仍显示已不存在系统的引导项,说明GRUB配置文件里还残留着对应的menuentry代码块——这些无效条目不仅干扰选择,还可能因路径失效导致GRUB启动卡顿或报错。
确认当前生效的GRUB配置文件位置
执行 ls -l /boot/grub*/grub.cfg 查看真实配置文件路径。多数现代发行版(如Deepin、Ubuntu 20.04+、CentOS 8+)使用 /boot/grub/grub.cfg,但部分系统(如RHEL/CentOS 7、某些Fedora旧版本)实际生效的是 /boot/grub2/grub.cfg。【必须先确认路径,误删错误文件会导致无法启动】
注意:不要直接编辑 grub.cfg —— 它是自动生成的,手动修改会被下次更新覆盖。
定位并删除无效menuentry区块
第一步:用 sudo grep -n "menuentry" /boot/grub/grub.cfg 列出所有引导项起始行号及名称,例如输出:123:menuentry 'Fedora (5.14.10-200.fc34.x86_64) ...
第二步:用 sudo vim +123 /boot/grub/grub.cfg 跳转到第123行,观察该menuentry从menuentry 'Fedora...开始,到下一个menuentry或}结束前为止——整个代码块必须完整删除,不能只删第一行。
第三步:选中整段(包括开头的menuentry行、中间所有insmod/set/linux/initrd行、结尾的}),按d删除,保存退出。若不确定范围,可用/^}搜索最近的右大括号辅助定位。
重建GRUB菜单(关键一步)
执行 sudo update-grub(Debian/Ubuntu/Deepin系)或 sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS/Fedora系)。这会重新扫描/boot下所有内核和EFI目录,生成干净的grub.cfg。
如果命令报错提示“no such file or directory”,说明你删错了路径——立刻用 sudo cp /boot/grub/grub.cfg~ /boot/grub/grub.cfg(若有备份)或从Live USB恢复原始文件。
验证EFI启动项(仅UEFI模式需做)
方法一:运行 sudo efibootmgr 查看当前EFI启动列表,找到类似 Boot000C* Fedora 的条目编号。
方法二:执行 sudo efibootmgr -b 000C -B 删除对应项。注意编号是十六进制,且-B参数不可省略,漏写会导致仅禁用而非删除。
执行后立即重启,按F12或Esc调出UEFI启动菜单,确认Fedora等残留项已消失。











