开机动画不显示 — 启动日志诊断

诊断日期: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'