环境信息
- 操作系统 / 发行版:deepin 25(基于 OSTree 不可变根 + overlay 架构)
- 安装方式:通过 OpenNebula 7.2.0 (KVM) 虚拟机部署,使用官方 deepin 25 桌面版 ISO
- 安装程序版本:deepin-installer-reborn 7.x
- 虚拟机配置:160 核 CPU、8G+ 内存、系统盘为 qcow2 虚拟磁盘
- 文件系统布局:EFI (p1) / /boot (p2, ostree grub2) / swap (p3) / / (p4, Roota ext4 rw) / /persistent (p5, overlay/ostree/home)
问题现象
安装完成后首次启动,系统出现两类循环故障:
1. 首次启动向导循环(First-boot wizard loop)
系统每次重启/登录后都会重新弹出“欢迎安装 deepin 系统”的首启向导(白色配置面板),无法进入正常桌面。即使手动完成向导设置,下次启动仍会再次出现。
2. 登录循环(Login loop)
在向导被临时压制后,到达 LightDM 登录界面。输入正确的用户名和密码后,画面闪烁一下,又退回登录界面,无法进入桌面。
复现步骤
- 使用官方 deepin 25 桌面版 ISO 在 KVM 虚拟机中完成安装(含创建首个用户)。
- 安装完成后重启系统。
- 观察:每次启动都会重新出现“欢迎安装 deepin 系统”首启向导,无法稳定进入桌面。
- 当通过修改 lightdm 配置 / 删除 autostart / 写入完成标记等方式压制向导后,到达登录界面。
- 输入任意已创建用户的密码 → 画面闪一下 → 回到登录界面(登录循环)。
根因分析
向导循环根因
deepin 25 采用 OSTree 不可变根 + overlay 架构,运行时修改分布在两个 overlay 层:
- /persistent/overlay/data/layer-.../etc-upper(覆盖 /etc)
- /persistent/overlay/data/a4e438.../usr-upper(覆盖 /usr,包含运行时 /usr 与部分 /etc 生效路径)
首启向导由以下机制触发,且只改单一 overlay 层无法根治:
- /etc/lightdm/lightdm.conf 中的 deepin-installer 钩子(greeter 启动后拉起向导)
- 各用户 ~/.config/autostart/dde-first-run.desktop(会话级自启动)
- /usr/libexec/dde-first-run 与 /usr/share/deepin-installer/tools/deepin-installer-core 的引导逻辑
- 完成状态标记文件缺失:/var/lib/deepin-installer-first-boot、/var/lib/deepin-installer-first-run
早期只清理了 /etc overlay 层的 lightdm 钩子,但 /usr overlay 层与用户级 autostart 仍会重新拉起向导,导致循环。
登录循环根因
各用户家目录(/home/huiquanyun、/home/deepin、/home/test)的所有权被错误设置为 root:root(应为各自 uid,如 1000/1001/1002),仅有一个用户(test1, uid 1003)正确。DDE 会话因无法写入自身家目录而立即崩溃,退回 LightDM,形成登录循环。
临时修复方法(已验证可用)
通过离线挂载系统盘(qemu-nbd)并执行以下修复:
-
清理向导触发点:
- 将 /etc/lightdm/lightdm.conf 精简为仅 greeter-session=lightdm-deepin-greeter
- 删除所有用户 ~/.config/autostart/dde-first-run.desktop
- 将 /usr/libexec/dde-first-run 与 /usr/share/deepin-installer/tools/deepin-installer-core 替换为空操作:
#!/bin/sh
exit 0
- 创建完成标记:touch /var/lib/deepin-installer-first-boot /var/lib/deepin-installer-first-run
-
修复家目录所有权:
- chown -R 1000:1000 /home/huiquanyun
- chown -R 1001:1001 /home/deepin
- chown -R 1002:1002 /home/test
- chown -R 1003:1003 /home/test1
修复后系统可稳定启动至桌面并正常登录。
问题归类
本问题属于 deepin 25 安装程序 / 首启流程的 BUG,而非用户操作错误,也非 OpenNebula/KVM 平台问题(相同平台下其他发行版 VM 正常)。
建议
- 安装程序应在安装完成写盘阶段,正确设置首启完成标记(deepin-installer-first-boot / deepin-first-run),避免每次启动重复触发向导。
- 安装程序应保证创建用户时家目录所有权正确归属于该用户(非 root),避免登录循环。
- 在 OSTree + overlay 架构下,首启向导的触发/完成判定逻辑需要在 /etc 与 /usr 两个 overlay 层保持一致,当前存在层间状态不一致导致清理不彻底。
- 建议增加安装后校验步骤(家目录所有权校验、首启标记校验),在首次重启时自动修复异常状态。
补充信息
- 相关组件:deepin-installer-reborn(deepin-installer-core / deepin-installer-first-boot)、dde-first-run、LightDM deepin greeter
- 已排除:非显示管理器配置错误、非用户密码错误、非磁盘空间不足。
环境信息
问题现象
安装完成后首次启动,系统出现两类循环故障:
1. 首次启动向导循环(First-boot wizard loop)
系统每次重启/登录后都会重新弹出“欢迎安装 deepin 系统”的首启向导(白色配置面板),无法进入正常桌面。即使手动完成向导设置,下次启动仍会再次出现。
2. 登录循环(Login loop)
在向导被临时压制后,到达 LightDM 登录界面。输入正确的用户名和密码后,画面闪烁一下,又退回登录界面,无法进入桌面。
复现步骤
根因分析
向导循环根因
deepin 25 采用 OSTree 不可变根 + overlay 架构,运行时修改分布在两个 overlay 层:
首启向导由以下机制触发,且只改单一 overlay 层无法根治:
早期只清理了 /etc overlay 层的 lightdm 钩子,但 /usr overlay 层与用户级 autostart 仍会重新拉起向导,导致循环。
登录循环根因
各用户家目录(/home/huiquanyun、/home/deepin、/home/test)的所有权被错误设置为 root:root(应为各自 uid,如 1000/1001/1002),仅有一个用户(test1, uid 1003)正确。DDE 会话因无法写入自身家目录而立即崩溃,退回 LightDM,形成登录循环。
临时修复方法(已验证可用)
通过离线挂载系统盘(qemu-nbd)并执行以下修复:
清理向导触发点:
#!/bin/sh
exit 0
修复家目录所有权:
修复后系统可稳定启动至桌面并正常登录。
问题归类
本问题属于 deepin 25 安装程序 / 首启流程的 BUG,而非用户操作错误,也非 OpenNebula/KVM 平台问题(相同平台下其他发行版 VM 正常)。
建议
补充信息