Linux清理开机启动残留需分两类:一是GRUB引导菜单无效项,应删/etc/grub.d/脚本或执行update-grub/grub2-mkconfig;二是systemd或桌面自启服务,用systemctl disable或删.autostart文件。

Linux中清理残留的无用开机启动项,关键在分清两类不同来源:一类是GRUB引导菜单里的无效系统条目(比如已卸载的旧发行版或内核),另一类是系统服务或用户级自启程序(如开机自动运行的守护进程或桌面应用)。两者机制不同,不能混用同一方法。
清理GRUB引导菜单中的无效系统条目
这类残留常见于卸载了Fedora、Ubuntu子系统或旧内核后,开机仍显示“Fedora”“Ubuntu recovery”等无法进入的选项。核心操作不是删菜单本身,而是删配置源头:
- 先确认真实生效的GRUB配置文件路径:sudo ls -l /boot/grub*/grub.cfg,多数Deepin/Ubuntu用
/boot/grub/grub.cfg,CentOS/RHEL系常用/boot/grub2/grub.cfg - 不要直接编辑
grub.cfg——它是自动生成的。应定位并删除/etc/grub.d/下对应脚本(如40_custom里手写menuentry)或通过update-grub自动过滤掉已不存在的系统 - 若已删分区但菜单仍在,执行sudo update-grub(Debian/Ubuntu/Deepin)或sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS/Fedora),它会扫描
/boot和/boot/efi/EFI目录,只保留现存内核和有效EFI入口 - UEFI模式下还需用sudo efibootmgr查出残留启动项编号(如
Boot000A*),再执行sudo efibootmgr -b 000A -B彻底清除
删除多余内核导致的重复启动项
系统升级后常堆积多个vmlinuz-xxx和initrd.img-xxx,每个都生成一个GRUB菜单项。只留当前运行和最新一个即可:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 查看当前内核:uname -r
- 列出所有已安装内核包:dpkg --list | grep linux-image(Debian/Ubuntu/Deepin/UOS)或rpm -q kernel(RHEL/CentOS/Fedora)
- 卸载旧内核包(含配套headers和initramfs):sudo apt purge linux-image-5.15.0-xxyy linux-headers-5.15.0-xxyy(UOS/Deepin同理)
- 清理完成后务必运行sudo update-grub或sudo grub2-mkconfig -o ...,否则/boot下文件虽删,菜单仍存在
禁用或移除开机自启的服务与程序
这类启动项不显示在GRUB里,而是在系统启动后由systemd或桌面环境拉起,如bluetooth、cups、snapd等:
- 查看当前启用的服务:sudo systemctl list-unit-files --type=service --state=enabled
- 禁用不需要的服务:sudo systemctl disable bluetooth.service(不删文件,仅取消开机触发)
- 若需彻底移除(如已卸载软件但服务残留):sudo systemctl stop 服务名 && sudo systemctl disable 服务名 && sudo rm /usr/lib/systemd/system/服务名.service
- 图形界面用户还可检查:
~/.config/autostart/(用户级桌面自启)、/etc/xdg/autostart/(系统级),删除对应.desktop文件
验证与收尾
重启前建议快速验证:
- 运行
sudo grep menuentry /boot/grub/grub.cfg | wc -l粗略统计菜单项数量,对比清理前后变化 - 进BIOS/UEFI启动菜单(如F12)确认Windows Boot Manager或当前Linux项是否排第一,且无异常命名项
- 开机后执行
systemctl is-enabled 服务名确认关键服务状态,避免误关network或dbus等基础服务

















