2026 维护说明: 本文现在是一份证据优先的恢复指南,并不承诺所有登录循环都是 NVIDIA 引起的。文末完整保存 2019 年旧文用于溯源,请勿把其中命令当作现行指导执行。
Table of Contents
旧版边界: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-select 或 switcherooctl 没输出,也可能只是工具未安装。
单独立显卡的台式机、集显加独显的笔记本、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 --audit 或 apt-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 问题。
官方资料
- Canonical:Ubuntu 发布周期
- Ubuntu Server:安装 NVIDIA 驱动
- Ubuntu 安全:UEFI Secure Boot
- Ubuntu Server:软件包管理
- Canonical authd:登录失败后进入恢复模式
- Ubuntu Manpages:`journalctl`
- Ubuntu Desktop Help:报告问题
历史原文存档(请勿执行)
以下是 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
```
