开机动画不显示 — 启动日志诊断
诊断日期:2026-09-07 主机:omarchy(Omarchy 4.0.0.r2038.g640c0d4,内核 7.2.3-arch1-3) 显卡:AMD RX 9070(Navi 48 / RDNA4 / DCN 4.0.1,驱动 amdgpu) 显示器:AOC U27N3G6R4B,3840x2160@60,DP-1
诊断结论
开机动画不显示,不是 Plymouth 没安装/没配置——它已正确安装、已打包进 initramfs、启动时也正常运行了。
真正的原因在于 AMD RX 9070(RDNA4)显卡在启动早期(initramfs 阶段)的 KMS 显示初始化不完整,导致 Plymouth 无法把画面渲染到显示器;再加上内核命令行里的 quiet loglevel=0 把 Plymouth 的文本回退模式也一并隐藏,所以整个启动过程表现为黑屏。
日志证据
1. Plymouth 本身是正常、完整的
| 检查项 | 结果 |
|---|---|
| 软件包 | plymouth 26.134.222-2 已安装 |
| 主题 | omarchy 已设置(/etc/plymouth/plymouthd.conf → Theme=omarchy) |
| initramfs hooks | 有效配置 /etc/mkinitcpio.conf.d/omarchy_hooks.conf 含 plymouth + encrypt(注意:/etc/mkinitcpio.conf 里的 HOOKS 会被这个 drop-in 覆盖,所以不能只看主文件) |
| 打包确认 | pacman 日志 07:40:29 → Running build hook: [plymouth] |
| 内核参数 | 已含 quiet splash 和 initramfs_async=0(Omarchy 针对 plymouth 竞态的官方 workaround,已生效) |
实际生效的 hook 顺序(来自 pacman 重建日志):
base → udev → plymouth → keyboard → autodetect → microcode → modconf
→ kms → keymap → consolefont → block → encrypt → filesystems
→ fsck → btrfs-overlayfs → resume
2. Plymouth 进程活着,但没有画面
plymouth-start.service → Started(pid 312)
plymouth-quit.service → Finished
整个启动日志里 Plymouth 零报错、零崩溃——说明它一直在运行,只是渲染不出画面。而 quiet loglevel=0 systemd.show_status=false 又把它的文本回退也吞掉了 → 黑屏。
3. 关键线索:显卡早期 KMS 没有真正把信号送到 4K 屏
- 显卡:
Navi 48 [RX 9070],DCN 4.0.1,驱动amdgpu - 显示器:AOC U27N3G6R4B,3840x2160@60,接在 DP-1
- 启动日志里 amdgpu 确实做了早期 KMS(
fb0: amdgpudrmfb frame buffer device),但完全没有 EDID 读取 / 连接检测 / 链路训练 / 模式提交(atomic commit)的日志——对一块 4K DP 屏来说,这意味着早期模式并没有真正点亮显示器 - 同时存在
simpledrm → amdgpu的显示接管过程
4. 启动时间足够长,动画本应看得到
12.1s (firmware) + 3.7s (loader) + 14.3s (kernel/initramfs) + 6.3s (userspace) = 36.5s
这 14.3s 的 initramfs 阶段(LUKS 解锁 + 挂载根)本应是 Plymouth 显示动画的窗口,结果全程黑屏。
根因
initramfs 里 MODULES=(amdgpu) 会在所有 hook 之前先把 amdgpu 加载起来,随后 plymouth 启动。但 amdgpu 对这块 4K DP 屏的早期模式设置没有真正把信号送出去(缺 EDID/链路训练),Plymouth 拿不到可用的显示输出,图形渲染失败;文本回退又被 quiet 隐藏。
这本质上是 RDNA4 显卡早期 KMS + Plymouth 的兼容性问题。
建议(按顺序尝试)
① 先精确定位(不改配置,风险最低)
在 Limine 启动菜单选中 Omarchy 条目按 e,内核命令行里临时:
- 删掉
quiet loglevel=0 - 追加
plymouth.debug
重启后看 /var/log/plymouth-debug.log,能直接看到 plymouth 卡在哪一步。
② 强制早期分辨率(最可能有效)
新建 /etc/limine-entry-tool.d/zzz-video.conf:
KERNEL_CMDLINE[default]+=" video=DP-1:3840x2160@60"
然后重建 initramfs(会同步更新 UKI 和 limine.conf):
sudo mkinitcpio -P
③ 换主题验证是不是渲染问题
sudo plymouth-set-default-theme -R text # 或 details
若 text 主题能显示、图形主题不行,就确认是 drm 渲染路径的问题。
④ 若以上都无效
这是上游 amdgpu(RDNA4)早期 KMS 与 Plymouth 的兼容问题,建议等待内核/plymouth 更新,或按 Omarchy 的 contributing.md 流程上报此 bug(附上 omarchy debug --no-sudo --print 和 plymouth-debug.log)。
附录:关键命令速查
# 查看有效 hooks(注意 drop-in 覆盖)
cat /etc/mkinitcpio.conf.d/omarchy_hooks.conf
# 查看当前 plymouth 主题
plymouth-set-default-theme
# 查看启动耗时
systemd-analyze
# 查看 plymouth 相关启动日志
journalctl -b | grep -i plymouth
# 查看显卡早期 KMS 日志
journalctl -b -k | grep -iE 'amdgpu|simpledrm|drm'