目录

Ubuntu 26.04 登录循环修复:systemd 用户服务故障排查指南

当 GNOME/Wayland 被自建服务拖挂时,如何用辅助账号救出主账户

环境:Ubuntu 26.04 + GNOME + Wayland,NVIDIA 显卡,双显示器
问题:

  • 原本是启动卡顿,后来演变为"登录循环":输入密码后直接返回登录界面,无法进入桌面;
  • 与大量挂在 ~/.config/systemd/user 的自建服务有关。

这一篇重点讲:当用户账号进入登录循环时,如何用辅助账号 + user-level systemd 备份的方式,把主账号从"死循环"中救出。如需了解排查定位过程,可参考 [[Ubuntu 26.04 桌面启动卡顿、登录循环完整排查实录]]。


一、症状:登录循环

具体表现:

  • 在图形登录界面输入主账号 oklife 的密码;
  • 屏幕闪一下后又回到登录界面;
  • 连续多次都是这样——典型的 GNOME/Wayland 用户会话无法正常启动。

二、第一步:确认系统没坏,问题只在账号

2.1 使用 TTY 创建辅助账号

在登录界面:

  • Ctrl + Alt + F3 进入 TTY;
  • oklife 登录。

创建辅助账号(例如 yuntian):

sudo adduser yuntian
sudo usermod -aG sudo yuntian

2.2 用辅助账号登录桌面

回到图形登录界面(Ctrl + Alt + F1/F2),使用 yuntian 登录:

  • 如果能够正常进入 GNOME 桌面,说明系统本身没有坏,问题集中在 oklife 这个账号的配置;
  • 这是一个非常重要的分界点:不用重装系统,只修用户配置

三、第二步:查看主账号的用户级 systemd 服务

yuntian 桌面,打开终端,查看主账号的 user-level systemd 配置:

sudo ls -R /home/oklife/.config/systemd/user

你可能会看到类似:

/home/oklife/.config/systemd/user:
  chrome-debug.service
  hermes-gateway.service
  openclaw-gateway.service
  socks2http.service
  default.target.wants
  graphical-session.target.wants
...
/home/oklife/.config/systemd/user/default.target.wants:
  chrome-debug.service
  hermes-gateway.service
  openclaw-gateway.service
  snap.prompting-client.daemon.service
  snap.snapd-desktop-integration.snapd-desktop-integration.service
/home/oklife/.config/systemd/user/graphical-session.target.wants:
  warp-taskbar.service

这表明:

  • 主账号 oklife 在登录时自动启动了大量用户级服务:headless Chrome、网关服务、代理服务、Snap 集成等;
  • 任何一个服务写得不稳、或与当前 GNOME/Wayland 版本不兼容,都可能直接导致会话创建失败 → 登录循环。

四、第三步:软禁全部用户级服务(备份 + 清空)

为了既能恢复登录,又不丢服务配置,采取这种策略:

/home/oklife/.config/systemd/user 整个挪到备份目录,让主账号先用一套"没有任何自建服务"的干净环境登录。
服务文件全部保留在 user.broken.* 里,之后按需恢复。

yuntian 终端执行:

sudo mv /home/oklife/.config/systemd/user \
        /home/oklife/.config/systemd/user.broken.$(date +%s)

systemctl --user daemon-reload

这一步:

  • 不删除任何 .service 文件;
  • 只是将用户级 systemd 单元目录整体改名为 user.broken.TIMESTAMP
  • 主账号之后的登录,不再自动加载这些服务。

systemd 用户服务目录结构示意:展示 .service 文件和 wants 目录的层级关系

五、第四步:重启并测试主账号登录

  1. yuntian 桌面注销;
  2. 整机重启(确保所有会话状态清空);
  3. 在图形登录界面,用 oklife 登录。

结果:

  • 登录循环消失;
  • oklife 能正常进入桌面;
  • 桌面启动卡顿也一起消失(因为那些早期自启服务不再参与)。

这一步有效地证明:

登录循环与启动卡顿,主要源自 oklife 账号下自动启动的一组用户服务组合。
将其整体"软禁"之后,账号恢复正常。


备份迁移流程图:三阶段展示从问题源到干净桌面的恢复过程

六、保持干净桌面:按需恢复服务而非全盘自启

此时,在 oklife 终端中:

ls /home/oklife/.config/systemd/user.broken.*

看到备份目录内容类似:

user.broken.1786520220/
  default.target.wants/
  graphical-session.target.wants/
  chrome-debug.service
  hermes-gateway.service
  openclaw-gateway.service
  socks2http.service
  openclaw-gateway.service.bak.*

这就是你的"服务仓库"。

而当前生效目录:

ls ~/.config/systemd/user

要么不存在,要么已是空目录,这就是干净桌面状态

后续只需要:

  • 在需要的时候,从备份目录复制单个 .service 到当前目录;
  • 执行 systemctl --user daemon-reload && systemctl --user start XXX.service
  • 不执行 enable,不让它们再自动随登录启动。

这样,你既保留了原有服务,又不会再因为自启导致登录循环或启动卡顿。


按需启动与自动启动对比:双栏分屏信息图

七、延伸阅读与资源

相关文档

系列文章

  • [[Ubuntu 26.04 桌面启动卡顿、登录循环完整排查实录]] — 排查定位篇,讲解如何用 journalctl 和 systemd-analyze 定位根因

FAQ

Q1: 登录循环一定是用户配置问题吗?

不一定。如果是系统级别的问题(如磁盘满、显卡驱动崩溃),多账号都会出现登录循环。先用辅助账号验证是最快的区分方法。

Q2: 备份目录可以删除吗?

可以。确认服务不再需要后,删除 user.broken.* 目录即可释放空间。建议保留至少 30 天作为安全网。

Q3: 如何判断某个服务是否导致登录循环?

逐个恢复服务,每次恢复后重启测试。如果某服务恢复后再次出现登录循环,该服务就是问题根源。

Q4: 按需启动的服务会影响使用体验吗?

不会。按需启动意味着只有你需要某个服务时才手动启动它,反而让桌面更干净、启动更快。


结语

这一系列实战说明了:

  • Ubuntu 桌面上的启动卡顿和登录循环,很多时候不是"系统炸了",而是用户会话下挂了太多自建服务和进程
  • journalctl + systemd-analyze + systemd user unit 是非常强力的定位组合;
  • 从"全自动自启"转向"按需启动",对于大型 AI 工厂式系统来说既稳定又灵活。

如需了解排查定位过程,可参考 [[Ubuntu 26.04 桌面启动卡顿、登录循环完整排查实录]]。