linux启动慢是固件交接、引导加载、内核初始化到用户空间服务启动全链路耗时叠加所致,需用systemd-analyze等工具定位瓶颈,再针对性优化各环节。

Linux 启动慢不是单一环节的问题,而是从固件交接、引导加载、内核初始化到用户空间服务启动这一整条链路上多个耗时点叠加的结果。优化的关键在于精准定位瓶颈,再针对性裁剪或加速,而不是盲目删服务。
快速定位启动慢在哪一环
先别急着改配置,用工具看清时间花在了哪里:
-
systemd-analyze:直接运行
systemd-analyze time查总耗时;用systemd-analyze blame列出各服务启动耗时排序,重点关注排在前10的单元 - systemd-analyze critical-chain:查看启动路径中最长依赖链,识别拖慢整个流程的关键节点
- 如需图形化分析,安装
pybootchartgui并启用 bootchart,每次重启后生成/var/log/bootchart/下的 PNG 图,直观看到各阶段并行与阻塞关系
精简引导层(Bootloader)
对嵌入式或定制设备尤其有效,比如全志 T113-i 平台:
YothSHOP是优斯科技鼎力打造的一款asp开源商城系统,支持access和Sql server切换,完善的会员订单管理,全站生成静态html文件,SEO优化效果极佳,后台XP模式和普通模式随意切换,极易操作,欢迎使用! Asp开源商城系统YothSHOP功能介绍:1.使用静态页和程序页分离技术,网站可自由开启和关闭,实现全站生成静态页,可动静态切换,方便二次开发和后期维护。2.管理员管理:后台
- 将 U-Boot 的
bootdelay设为 0,跳过按键中断等待 - 关闭 boot0 和 U-Boot 阶段的调试串口输出,在
uboot-board.dts和sys_config.fex中禁用 verbose log - 若使用 GRUB2,可简化菜单项数量,并设置默认启动项 + 超时为 0:
GRUB_TIMEOUT=0,再执行grub2-mkconfig -o /boot/grub2/grub.cfg
加速内核与 initramfs
内核初始化阶段常被低估,但几个细节影响显著:
- 关闭
crng_ready()检查:该函数会等待熵池充足才放行,实测可缩短 2–3 秒;修改drivers/char/random.c中相关逻辑(适用于对随机性要求不高的嵌入式场景) - 降低或关闭内核启动日志等级,如设
loglevel=0或quiet内核参数,减少串口刷屏开销 - 若根文件系统足够小(如 Buildroot 生成的 initramfs,省去挂载外部 rootfs 步骤,避免磁盘 I/O 延迟
裁剪用户空间启动流程
systemd 环境下,Init 阶段仍有大量优化空间:
- 禁用非必要服务:
systemctl disable bluetooth.service avahi-daemon.service ModemManager.service等通用桌面服务 - 合并或替换 init 进程:对专用设备,可将
/sbin/init替换为静态编译的自定义程序,跳过完整 systemd 初始化 - 不挂载
/proc、/sys(仅当应用完全不依赖它们时);裁剪 BusyBox 功能,移除未用 applet - 使用
systemd.unit=default.target参数指定最小目标,例如multi-user.target而非graphical.target









