温馨提示×

ubuntu fromscratch为什么启动慢

小樊
36
2026-09-22 18:17:53
栏目: 智能运维

“Ubuntu From Scratch”(或类似的“从零构建 Ubuntu / LFS 风格 Ubuntu”)启动慢,通常不是单一原因,而是缺少发行版默认做的优化和组件。下面按常见原因给你梳理一下:


一、最常见的慢启动原因

1. 没有使用 initramfs / initramfs 配置不当

Ubuntu 官方系统:

  • 使用 initramfs-tools 生成精简的 initrd
  • 只加载必要驱动

From Scratch 常见问题:

  • 没生成 initramfs,内核直接挂载根文件系统(容易卡在设备识别)
  • 或 initramfs 太大、扫描所有设备(udevadm settle 超时)

✅ 检查:

ls /boot/initrd.img-*
dmesg | grep -i "waiting for"

2. 根文件系统挂载方式不对

慢点常出现在:

  • 根分区使用 ext4 但没加 commit= 参数
  • 使用 USB / 慢速磁盘未指定 rootwait
  • /etc/fstab 中有错误条目导致超时

✅ 建议内核参数:

rootwait rootfstype=ext4

3. 没有 systemd 或 systemd 配置不全

Ubuntu 默认用 systemd,From Scratch 常犯的错误:

  • 用的是 SysVinit 但脚本串行执行
  • systemd 缺少 default.target
  • 某些 *.service 卡在 activating

✅ 检查:

systemctl status
systemd-analyze blame

4. udev / 设备枚举慢

From Scratch 常见:

  • 没有预生成 /lib/udev/rules.d
  • 内核模块太多,udev 扫描慢
  • 网络/显卡驱动阻塞启动

✅ 优化:

systemd-analyze critical-chain

5. 没有启用并行启动

如果你用的是:

  • OpenRC / SysV → 默认串行
  • systemd 但 DefaultDependencies=no 写错

✅ systemd 应默认并行,无需手动干预


6. 缺少固件或驱动导致重试

例如:

  • 网卡 firmware 缺失
  • GPU 初始化失败重试
  • NVMe 驱动没编进内核

✅ 查看:

dmesg | grep -i "firmware"
dmesg | grep -i "timeout"

7. 交换分区 / zram 配置异常

  • 无 swap 但系统尝试 swapon
  • /etc/fstab 中 swap 设备不存在

✅ 注释掉无效 swap 行


二、快速定位方法(强烈推荐)

1️⃣ 看启动耗时

systemd-analyze
systemd-analyze blame
systemd-analyze critical-chain

2️⃣ 看内核日志

dmesg | less

重点看:

  • waiting for device
  • job timeout
  • udev

三、From Scratch 比官方 Ubuntu 慢的“本质原因”

项目 Ubuntu 官方 From Scratch
initramfs 优化过 常缺失/冗余
systemd 完整 常不完整
udev 预配置 手搓
内核 精简模块 常全编
fstab 自动生成 手写出错

四、如果你愿意

你可以贴出:

  • 内核启动参数
  • systemd-analyze blame 输出
  • dmesg 中卡住的部分

我可以直接帮你精确到是哪一步慢。

0 踩