云服务器初始化时优化启动引导项的核心目标是缩短通电到服务就绪时间,需分层清理grub菜单、裁剪initramfs、调整systemd目标、优化cloud-init配置。

云服务器初始化时优化启动引导项,核心目标是缩短从通电到服务就绪的时间,尤其在自动扩缩容、故障恢复等场景下,快几秒就直接影响业务 SLA。这不是简单删几个服务,而是分层清理、精准控制:从固件加载开始,到 GRUB、内核、initramfs,再到 systemd 服务链,每一环都可能成为瓶颈。
精简 GRUB 启动菜单并锁定默认内核
GRUB 菜单里堆着五六个旧内核?每次启动都要扫描、校验、等待超时——这是最易被忽略的延迟源。
- 先确认当前运行内核:
uname -r - 列出所有已装内核(Ubuntu/Debian):
dpkg --list | grep 'linux-image-';(CentOS/RHEL):rpm -qa | grep kernel - 卸载非当前且无依赖的旧内核,例如:
sudo apt purge linux-image-5.15.0-112-generic linux-modules-5.15.0-112-generic - 修改
/etc/default/grub:GRUB_TIMEOUT=3(别留10秒空等)GRUB_DEFAULT=saved+GRUB_SAVEDEFAULT=true(下次自动记住成功启动项) - 最后刷新配置:
sudo update-grub或sudo grub2-mkconfig -o /boot/grub2/grub.cfg
裁剪 initramfs,去掉用不到的驱动和模块
initramfs 是内核启动前的“临时根系统”,如果塞满了 RAID 控制器、FC HBA、旧网卡固件,解压+挂载就得耗好几秒。
- 查看当前 initramfs 内容:
lsinitramfs /boot/initrd.img-$(uname -r) | head -30 - 找出明显冗余项,比如
drivers/scsi/qla2xxx/(光纤卡)、drivers/md/raid*(软 RAID)——纯云环境通常用不上 - 编辑
/etc/dracut.conf.d/99-cloud.conf(RHEL/CentOS)或/etc/initramfs-tools/conf.d/resume(Debian/Ubuntu),添加:omit_drivers+=" qla2xxx mptspi raid456 " - 重建 initramfs:
sudo dracut -f或sudo update-initramfs -u
调整 systemd 启动目标和服务依赖
云服务器不需要图形界面、打印、蓝牙,但默认可能仍加载 graphical.target 和一堆桌面级服务。
- 切换默认目标为轻量级:
sudo systemctl set-default multi-user.target - 禁用明确无用的服务:
sudo systemctl mask cups.service bluetooth.service avahi-daemon.service(mask 比 disable 更彻底) - 对非关键服务(如日志轮转、备份脚本)设延迟启动:
在其.service文件中加ExecStartPre=/bin/sleep 60,或改用 timer 触发 - 检查启动耗时分布:
systemd-analyze blame找出 TOP5 拖慢项,再针对性处理
针对 cloud-init 的启动阶段优化
云镜像首次启动必走 cloud-init,它若配置不当会严重拖慢初始化。
- 把一次性任务(如用户创建、密钥注入)放在
runcmd,把每次都要执行的基础设置(如时区、DNS)放bootcmd - 开启 APT 管道化(Ubuntu/Debian):在 cloud-config 中加
apt_pipelining: true - 避免在
runcmd中执行apt install类长耗时操作;改用预装镜像或 Packer 构建时完成
不复杂但容易忽略











