银河麒麟v10系统删除多余uefi启动项需分两步:先用sudo efibootmgr -b xxxx -b删除nvram中冗余引导项,再禁用/etc/grub.d/中如30_os-prober等配置并执行sudo update-grub更新grub菜单。

银河麒麟V10系统使用一段时间后,UEFI启动菜单中常残留旧内核、重复安装的系统引导项或已卸载操作系统的残留条目,这些冗余项不仅让开机菜单杂乱,还可能因NVRAM容量耗尽导致新引导项无法写入甚至启动失败。
确认当前所有UEFI启动项
打开终端,执行:
sudo efibootmgr -v
该命令会列出全部UEFI启动项,格式类似 Boot0001* Kylin Linux、Boot0002* Windows Boot Manager、Boot0003* Ubuntu(已卸载)。注意每行开头的四位编号(如0003)和星号(*)——带星号的是当前默认项,编号是删除操作的唯一标识符。
若提示 command not found,先运行 sudo apt install efibootmgr 安装工具。
删除指定UEFI引导项
方法一:直接删除单个项
例如要删掉 Boot0003,执行:
sudo efibootmgr -b 0003 -B
方法二:批量删除多个项
需逐条执行,不能一次删多个。比如还要删 Boot0005 和 Boot0007,就再分别运行:
sudo efibootmgr -b 0005 -B → sudo efibootmgr -b 0007 -B
【-b 后必须紧跟4位编号,不能补0成00003,也不能漏掉前导零;-B 是大写英文字母B,不是数字8】
删完立即再执行 sudo efibootmgr -v,确认目标项已从列表中消失。若仍存在,说明编号输错或权限不足。
同步清理GRUB菜单中的对应项
第一步:检查 /etc/grub.d/ 目录下是否有残留配置
执行 ls -l /etc/grub.d/ | grep -i "win\|ubuntu\|old"
第二步:定位并禁用非系统级引导项
常见冗余文件如 30_os-prober(自动扫描其他系统)、40_custom(手动添加的旧Windows项)。若确认某项不再需要,重命名它:
sudo mv /etc/grub.d/30_os-prober /etc/grub.d/30_os-prober.disabled
第三步:更新GRUB配置
执行 sudo update-grub
这一步会重新扫描所有可用内核和EFI路径,并生成新的 /boot/grub/grub.cfg。若之前禁用了30_os-prober,Windows等外部系统将不再出现在菜单中——这是预期结果,不是错误。
验证与收尾
重启系统,在开机自检阶段按Esc调出GRUB菜单,观察是否还有多余项显示。
若菜单干净但某系统(如Windows)意外消失,说明30_os-prober被误禁;此时恢复文件:
sudo mv /etc/grub.d/30_os-prober.disabled /etc/grub.d/30_os-prober → sudo update-grub
若UEFI启动项已删而GRUB菜单仍有残留名称,说明该菜单项由内核更新脚本自动生成,无需手动干预,下次执行 sudo apt autoremove --purge 旧内核包时会一并清理。











