Ubuntu 安装 NVIDIA 驱动后登录循环或桌面冻结:证据优先恢复指南

2026 维护说明: 本文现在是一份证据优先的恢复指南,并不承诺所有登录循环都是 NVIDIA 引起的。文末完整保存 2019 年旧文用于溯源,请勿把其中命令当作现行指导执行。

旧版边界:Ubuntu 18.04 与 Bumblebee

Ubuntu 18.04 LTS 已于 2023 年 5 月结束标准安全维护。Ubuntu Pro/ESM 是独立的延伸覆盖方案,但不会让旧桌面显卡教程自动变成现行做法。请查看 Canonical 的实时 Ubuntu 发布周期,并规划经过测试的受支持 Ubuntu 版本迁移;不要在没有备份的故障恢复中途升级发行版。

旧的 ppa:bumblebee/stable 做法不是当前默认方案。它在尚未确定原因前就添加第三方软件源和旧式混合显卡栈。Canonical 当前的 NVIDIA 安装指南推荐 Ubuntu 打包的驱动和 ubuntu-drivers,并警告其他来源的驱动可能覆盖发行版组件、破坏 Secure Boot。不要盲目添加 PPA、清除所有 NVIDIA 包、禁用 Secure Boot 或安装 Bumblebee。

安全模型与停止条件

安排维护窗口,保存未完成的工作,确认重要数据以及所有磁盘加密恢复密钥已存放在机器之外。优先使用本地控制台:驱动变更可能令远程图形或依赖网络的访问失效。记录一份基线,每次只做一个有界变更,然后测试再继续。

遇到以下情况应停止并联系管理员或 Canonical 支持:文件系统只读、存储出现 I/O 错误、加密数据无法解锁、PCI 检测不到 GPU、APT 报告未解决的软件包状态、系统同时混用厂商 .run 安装器和 Ubuntu 软件包,或没有经过测试的控制台/恢复路径。不要靠猜软件包名或删除配置文件来“修复”这些情况。

证据可能分支第一个有界响应
根目录/主目录没有可用块或 inode存储问题,不是 NVIDIA先备份,只释放已确认的数据
主目录不可写或少数路径属主错误账户/会话设置只修复已确认的路径,绝不盲目递归
显示管理器或用户会话错误早于 GPU 错误会话、扩展或显示管理器先诊断该组件再改驱动
lspci 看不到 NVIDIA GPU固件、硬件、直通或电源状态停止折腾驱动,检查平台
Secure Boot 拒绝未签名模块模块信任/注册使用 Ubuntu 签名路径或获批的 MOK 流程
内核与用户态 NVIDIA 版本不同事务未完成或等待重启完成包一致性检查后仅受控重启一次
图形正常但键盘/鼠标失效输入/内核/会话栈走输入分支,不要清除 GPU 驱动

1. 不改变系统,先恢复控制台访问

在图形登录界面尝试 Ctrl + Alt + F3(部分设备还需 Fn),使用本地管理员账户登录。最初保留图形会话运行,以免丢失其日志。如果所有 TTY 都不可用,请在 GRUB 中选择“Advanced options for Ubuntu”,再选择与目标内核匹配的 recovery 条目;Canonical 的恢复模式指南记录了这种进入方式。Live USB 是备份和只读检查的最后访问渠道,并不意味着可以猜分区或对已挂载文件系统运行修复工具。

采集发行版、内核、启动目标和显示管理器状态:

cat /etc/os-release
uname -r
systemctl get-default
systemctl status display-manager --no-pager

预期证据包括明确的 Ubuntu 版本、实际启动的内核、通常为 graphical.target 的目标,以及 GDM、SDDM 或 LightDM 等明确的显示管理器。显示管理器单元缺失/失败,与 NVIDIA 模块加载失败属于不同分支。把诊断输出保存到私有工单;分享前删除用户名、主机名、主目录路径、IP 地址、设备序列号和令牌。

2. 排除磁盘、inode、挂载与主目录故障

文件系统已满、inode 耗尽、只读挂载或不可写的主目录,即使 GPU 正常,也可能把用户送回登录界面。

df -hT / "$HOME"
df -i / "$HOME"
findmnt -T /
findmnt -T "$HOME"
stat -c '%U:%G %a %n' /tmp "$HOME"
stat -c '%U:%G %a %n' "$HOME/.Xauthority" "$HOME/.ICEauthority" 2>/dev/null
test -w "$HOME" && echo 'home is writable' || echo 'home is NOT writable'

系统应有可用空间和 inode,挂载应可写;/tmp 通常应属于 root:root 且模式为 1777;主目录应属于登录用户并能由该用户写入。权限文件可以合法不存在,特别是在 Wayland 上。如果只有某个文件属主错误,应先备份,再按照站点账户策略只修复该路径。绝不要对 $HOME 递归运行 chmod/chown,不要统一规定 755,也不要先删点文件试运气。

若空间耗尽,先找出增长内容并备份,只删除确认可丢弃的数据。不要对 /var$HOME、缓存、日志或内核使用破坏性通配符。

3. 阅读显示管理器与会话证据

readlink -f /etc/systemd/system/display-manager.service
loginctl list-sessions
journalctl -b -u display-manager --no-pager -n 200
journalctl --user -b --no-pager -n 200
journalctl -b -p warning..alert --no-pager -n 200

查看一次登录失败前后的时间戳。身份验证/PAM 失败、Shell 扩展崩溃、Xorg/Wayland 合成器故障和 GPU 模块被拒绝,需要不同修复。没有用户日志并不能证明会话健康。不要公开原始 journal:其中可能有账户名、路径、已连接设备、网络地址或应用数据。Ubuntu 托管的 `journalctl` 手册解释了启动、单元、优先级和尾部过滤。

不要只为“试试看”就切换显示管理器或 Wayland/Xorg。如果证据限定到一种会话,先备份显示管理器配置,只修改该发行版有文档说明的一个设置,并保留控制台回滚路径。

4. 选择驱动前识别 GPU 拓扑

lspci -nnk -d ::0300
lspci -nnk -d ::0302
sudo ubuntu-drivers list
command -v prime-select >/dev/null && prime-select query
command -v switcherooctl >/dev/null && switcherooctl list

两个 PCI 类分别覆盖显示/VGA 和 3D 控制器。记录每块 GPU、PCI ID、“Kernel driver in use”和 Ubuntu 候选包。这些证据里没有 NVIDIA 设备时,更换软件包不太可能有帮助。prime-selectswitcherooctl 没输出,也可能只是工具未安装。

单独立显卡的台式机、集显加独显的笔记本、eGPU 和虚拟机直通具有不同拓扑。混合硬件上要确认当前发行版使用 PRIME 选择、渲染卸载,还是其他厂商支持设计。不要把 Bumblebee、PRIME、手写 xorg.conf 和多个切换工具叠在一起。

5. 关联 Secure Boot、模块和内核证据

mokutil --sb-state
lsmod | grep -E '^(nvidia|nouveau)([[:space:]]|$)'
modinfo -F version nvidia 2>/dev/null
modinfo -F signer nvidia 2>/dev/null
nvidia-smi
journalctl -k -b --no-pager |
  grep -Ei 'nvidia|nouveau|NVRM|secure boot|module verification|lockdown'

要谨慎解释“没有输出”:缺少 nvidia-smi 可执行文件,与“No devices were found”不同,两者又都不同于模块签名被拒绝。lsmod 显示现在加载的模块,modinfo 描述磁盘上存在的模块。NVRM: API mismatch 指向内核与用户态版本不一致,常见于更新未完成或需要重启但尚未重启。

Ubuntu 在 Secure Boot 下校验内核模块。应优先使用 Ubuntu 预构建并签名的驱动路径。如果获批的 DKMS 包要求注册 Machine Owner Key,请在固件控制台完成一次性流程,并对临时密码保密。不要首先禁用 Secure Boot;这会削弱安全边界,还可能与加密启动恢复交互。参见 Canonical 的 UEFI Secure Boot 文档

6. 审计软件包一致性与来源

以下命令只检查状态,不清除软件包:

sudo dpkg --audit
sudo apt-get check
apt-mark showhold
dpkg-query -W 'nvidia-*' 'libnvidia-*' 'bumblebee*' 2>/dev/null
grep -RhsnE 'bumblebee|graphics-drivers' /etc/apt/sources.list /etc/apt/sources.list.d 2>/dev/null

dpkg --auditapt-get check 报告未完成/损坏状态,应在改驱动前停止。检查 hold 的包,确认每个 NVIDIA/Bumblebee 包和软件源都属于预期 Ubuntu 版本。软件源输出可能暴露内部镜像名或嵌入式凭据,分享前必须脱敏。Canonical 的软件包管理文档解释了软件源和 APT 模型。

若存在旧 PPA 或厂商安装器,在桌面不可用时不要盲目清除。记录其准确的软件包和来源,取得备份/快照,并在可用控制台下规划版本兼容的迁移。像删除 nvidia 这样的宽泛命令可能顺带移除无关库或唯一可用路径,因此本文刻意不提供。

7. 仅在证据支持时做一次受支持的驱动变更

先满足所有门槛:当前受支持的 Ubuntu 版本(或明确受支持的 ESM 计划)、APT 健康、能识别 NVIDIA 硬件、选用 Ubuntu 软件源、已有备份/恢复访问,以及维护窗口。刷新元数据并检查 Ubuntu 候选项:

sudo apt update
sudo ubuntu-drivers list

如果列表为空、GPU 已过时/不受支持,或第三方安装器残留尚在,应停止调查,不要强行指定系列号。对于普通受支持桌面,在 ubuntu-drivers 找到候选项且已诊断为驱动分支故障时,有界的 Ubuntu 支持操作是:

sudo ubuntu-drivers install

接受前阅读并记录拟执行的软件包事务。Canonical 说明 ubuntu-drivers 可能移除与其选择冲突的已安装驱动。不要在其他软件包事务运行时执行,也不要同时混用 PPA、NVIDIA .run 安装器或猜测的手动分支。

事务无错误结束后进行审计并仅重启一次。如果包配置或 MOK 注册报错,不要盲目重启;保留控制台,解决该条具体错误。

sudo dpkg --audit
sudo reboot

8. 把键盘/鼠标冻结作为单独分支

登录界面和桌面图像正常但输入失效,并不能证明 NVIDIA 有错。检查内核能否看到设备,以及 libinput/Xorg 包是否存在:

command -v libinput >/dev/null && sudo libinput list-devices
grep -E 'Name=|Handlers=' /proc/bus/input/devices
apt-cache policy xserver-xorg-input-all xserver-xorg-input-libinput
apt-get --simulate install xserver-xorg-input-all

libinput 可能不可用,应记录这种缺失而非掩盖。把内核 input/HID 消息与会话类型对照,并在可行时测试已知正常的有线设备/端口。只有 Xorg 安装确实不完整时,xserver-xorg-input-all 元包才相关;它不会修复 Wayland、固件、USB、蓝牙、内核 HID 或硬件故障。

仅当活动会话需要 Xorg、元包缺失、且模拟只建议预期软件包时,才应用这笔独立、可回滚的事务:

sudo apt install xserver-xorg-input-all

如果模拟建议移除软件、迁移发行版或做无关桌面变更,就应停止。不要只因它出现在 2019 年的个案里就安装。

9. 验证结果并保留回滚证据

重启一次并尝试登录一次后,采集新证据,不要仅凭“没看到错误”判断成功:

systemctl is-active display-manager
loginctl list-sessions
nvidia-smi
journalctl -b -p err..alert --no-pager
if [ -n "${XDG_SESSION_ID:-}" ]; then
  loginctl show-session "$XDG_SESSION_ID" -p Type -p State -p Remote
fi

至少验证两次登录/退出、锁定/解锁、键盘与指针;混合显卡还要检查集显/独显渲染路径,以及外接显示器、挂起/恢复和需要 GPU 加速的应用。确认预期模块已为当前内核加载,新日志中没有签名、API 不匹配、合成器或输入错误。

保留软件包历史用于回滚分析:

grep -E '^(Start-Date|Commandline|Install|Upgrade|Remove|End-Date)' /var/log/apt/history.log | tail -n 80

如果变更让启动更糟,只把 GRUB 中先前安装的内核作为可逆诊断,然后恢复已知正常的快照或准确的旧软件包计划。不要编造降级版本:确认它仍可从当前 Ubuntu 版本获取且与内核兼容。升级支持请求时附上发行版、内核、PCI ID、软件包事务、Secure Boot 状态、脱敏日志和第一次失败启动的准确过程。Ubuntu 桌面帮助说明了如何报告 Ubuntu 问题

官方资料

历史原文存档(请勿执行)

以下是 2019 年源导出的完整可见正文,仅规范化行尾空白。无需隐私或 URL 脱敏。为让整个源文在本站 Markdown 引擎中保持一个惰性围栏,原文八个内层三反引号标记各插入一个零宽断字符,显示文本不变。过时的 PPA 和软件包命令只是历史证据,不是操作说明。

After the installation of ubuntu 18.04, I get trapped in a login loop. Then I found a solution online:

`​``
sudo add-apt-repository ppa:bumblebee/stable
`​``

`​``
sudo apt-get update
`​``

`​``
sudo apt-get install bumblebee bumblebee-nvidia
`​``

Voila! I logged in, and I found that the keyboard and mouse is unusable after logging in.

This is the solution to solve this:

`​``
sudo apt install xserver-xorg-input-all
`​``

Leave a Reply