宝塔面板下可通过精简GRUB启动项、缩短超时、优化initramfs、调整systemd目标及修复ESP分区来加快服务器开机速度。具体包括清理旧内核、设GRUB_DEFAULT=saved、剔除冗余驱动、切换multi-user.target、删除EFI冗余目录等操作。

如果您在使用宝塔面板管理服务器时发现系统开机速度明显变慢,可能是由于引导阶段加载了冗余内核、旧启动项或未清理的 GRUB 条目所致。宝塔面板虽不直接提供 GRUB 编辑界面,但可通过其终端功能与系统底层配合完成启动引导项精简。以下是解决此问题的步骤:
一、清理冗余 GRUB 启动菜单项
GRUB 引导菜单中长期累积的旧内核版本会增加引导扫描时间,并可能因内核模块冲突拖慢初始化过程。通过删除非当前运行的旧内核,可减少 GRUB 菜单条目数量及默认超时等待负担。
1、登录宝塔面板,在左侧菜单点击【终端】,打开命令行界面。
2、执行uname -r确认当前正在使用的内核版本,例如返回5.15.0-125-generic。
3、执行dpkg --list | grep linux-image(Ubuntu/Debian)或rpm -qa | grep kernel(CentOS/RHEL)列出所有已安装内核。
4、对比后,对非当前版本且无依赖的旧内核执行卸载:Ubuntu/Debian 系统运行sudo apt purge linux-image-5.15.0-118-generic linux-modules-5.15.0-118-generic;CentOS 系统运行sudo yum remove kernel-3.10.0-1160.118.1.el7.x86_64。
5、执行sudo update-grub(Debian/Ubuntu)或sudo grub2-mkconfig -o /boot/grub2/grub.cfg(CentOS/RHEL)刷新引导配置。
二、调整 GRUB 超时与默认启动项
默认 GRUB 超时时间为 10 秒,且常将旧内核设为默认项,导致系统空等或误启低效内核。缩短超时并锁定当前最优内核可消除感知延迟。
1、在宝塔终端中执行sudo nano /etc/default/grub编辑主配置文件。
2、将GRUB_TIMEOUT=10修改为GRUB_TIMEOUT=3,降低菜单停留时间。
3、查找GRUB_DEFAULT=0行,将其改为GRUB_DEFAULT=saved,并在下一行添加GRUB_SAVEDEFAULT=true,确保下次启动自动沿用上次成功启动项。
4、保存退出后,再次运行sudo update-grub或sudo grub2-mkconfig -o /boot/grub2/grub.cfg使配置生效。
三、禁用不必要的 initramfs 模块
initramfs 是内核启动前加载的临时根文件系统,若其中包含未使用驱动(如 RAID、FC HBA、多余网卡固件),会导致解压与挂载耗时增加。精简 initramfs 可缩短内核加载阶段。
1、执行lsinitramfs /boot/initrd.img-$(uname -r) | head -20查看当前 initramfs 内容概览。
2、检查是否含drivers/scsi/、drivers/nvme/以外的大体积驱动目录,尤其是与当前硬件无关的模块。
3、编辑/etc/initramfs-tools/conf.d/resume(Ubuntu/Debian)或/etc/dracut.conf.d/99-custom.conf(CentOS/RHEL),添加omit_drivers+="mptspi qla2xxx be2iscsi"(根据实际冗余模块名填写)。
4、执行sudo update-initramfs -u -k all(Debian/Ubuntu)或sudo dracut -f --regenerate-all(CentOS/RHEL)重建精简版 initramfs。
四、验证并禁用 systemd 默认启动目标中的非必要服务
部分服务虽不属 GRUB 层级,但在 init 进程启动后立即激活(如getty@tty2.service、bluetooth.service),延长从内核就绪到登录界面出现的时间。通过调整默认 target 可跳过图形或终端多路复用环节。
1、执行systemctl get-default确认当前默认启动目标,常见为graphical.target或multi-user.target。
2、若服务器无需图形界面,执行sudo systemctl set-default multi-user.target切换至纯命令行模式。
3、执行systemctl list-dependencies --type=service graphical.target | grep -E "(getty|gdm|lightdm|bluetooth)"识别图形相关依赖服务。
4、对确认非必需的服务逐个屏蔽:sudo systemctl mask getty@tty2.service、sudo systemctl disable bluetooth.service。
5、重启后观察从 GRUB 菜单选择到显示登录提示符的时间变化,重点关注前 5 秒内控制台输出是否更早出现。
五、检查并修复 EFI 系统分区(ESP)异常
UEFI 启动模式下,EFI 分区若存在损坏、空间不足或重复启动管理器(如多次安装不同发行版遗留的/EFI/ubuntu、/EFI/centos、/EFI/boot),会导致固件扫描延迟甚至启动失败回退。
1、执行sudo fdisk -l | grep -i efi定位 ESP 分区(通常为/dev/sda1或/dev/nvme0n1p1)。
2、运行sudo mkdir -p /mnt/esp && sudo mount /dev/sda1 /mnt/esp挂载该分区。
3、进入/mnt/esp/EFI/目录,执行ls -l查看子目录列表,保留当前系统对应目录(如 ubuntu 或 centos)及 boot 目录,其余冗余厂商或旧系统目录可安全删除。
4、检查剩余空间:df -h /mnt/esp,若可用空间低于 50MB,需清理旧grubx64.efi备份或fallback.efi文件。
5、卸载并更新启动项:sudo umount /mnt/esp,随后执行sudo update-grub或sudo grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu(路径按实际调整)。










