news 2026/10/16 7:48:09

Ubuntu 18.04双显卡笔记本驱动安装与循环登录问题解决指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu 18.04双显卡笔记本驱动安装与循环登录问题解决指南

1. 双显卡笔记本装系统的那些坑:为什么这事值得单独写一篇

手里有一台带核显加独立显卡的笔记本,想装个 Ubuntu 18.04 做开发或者跑点计算任务,结果装完系统重启,输入密码之后屏幕一闪又回到了登录界面——这个场景我见过太多次了。不光是循环登录,还有黑屏、分辨率锁死在 800x600、外接显示器没信号、nvidia-smi报错找不到设备,各种花样百出。很多人第一次遇到这种情况会以为是系统装坏了,重装好几遍,结果问题依旧。

这个问题的本质其实不复杂:Ubuntu 18.04 自带的开源显卡驱动(nouveau)和 NVIDIA 闭源驱动在双显卡环境下会打架,加上显示管理器(LightDM/GDM)在启动时对 GPU 的调用顺序有讲究,一旦驱动装得不对或者装完没做正确的配置,就会陷入循环登录的死循环。而双显卡机器(核显负责日常显示输出,独显负责高性能计算)的切换逻辑比单显卡机器复杂得多,这也是为什么同样一套安装步骤,在台式机上一次成功,在笔记本上却反复翻车。

这篇文章适合谁看?如果你手里有一台带 Intel 核显 + NVIDIA 独显的笔记本,正在或者准备装 Ubuntu 18.04,并且被驱动问题折磨过或者想提前避坑,那这篇内容就是给你写的。我会从原理层面讲清楚为什么会出问题,然后给出经过实测的完整操作流程,包括驱动版本选择、BIOS 设置、驱动安装、显示管理器配置、循环登录的排查思路,以及装完之后怎么验证和优化。整套流程我在不同品牌的机器上跑过多次,踩过的坑和绕过的弯路都会写出来,你照着做基本能一次搞定。

2. 先搞清楚原理:双显卡环境下驱动到底是怎么工作的

2.1 核显与独显的分工逻辑

在双显卡笔记本上,Intel 核显和 NVIDIA 独显并不是平等的关系。绝大多数情况下,核显负责日常的桌面渲染和显示输出,独显处于待命状态,只有在需要高性能计算或者运行特定程序时才会被唤醒。这种设计叫 Optimus(NVIDIA 的显卡切换技术),目的是省电。Ubuntu 18.04 对这个技术的支持并不完美,尤其是当你手动安装了 NVIDIA 闭源驱动之后,系统需要知道什么时候用核显、什么时候用独显,如果配置不对,显示管理器在启动时就会找不到合适的 GPU 来渲染登录界面,于是反复重启登录会话,形成循环登录。

从系统层面看,启动流程大致是这样的:BIOS 初始化显卡硬件,内核加载显卡驱动模块,然后显示管理器(Ubuntu 18.04 默认是 GDM3,但很多教程建议换成 LightDM)启动并调用 GPU 渲染登录界面。如果 NVIDIA 驱动装上了但内核模块没正确加载,或者 Xorg 配置文件里指定了错误的 GPU,显示管理器就会启动失败,系统回退到重新启动显示管理器的状态,表现出来就是循环登录。

2.2 为什么 Ubuntu 18.04 特别容易出问题

Ubuntu 18.04 是一个长期支持版本,内核版本是 4.15,这个内核自带的 nouveau 驱动对较新的 NVIDIA 显卡支持有限。而 NVIDIA 官方驱动需要和内核版本、Xorg 版本严格匹配,版本选错了就会出现编译失败、模块加载失败等问题。另外,Ubuntu 18.04 默认使用 Wayland 作为显示服务器协议(虽然 GDM3 默认还是 Xorg),而 NVIDIA 闭源驱动对 Wayland 的支持在 18.04 时期还很不成熟,这也是导致循环登录的一个常见原因。

还有一个容易被忽略的点:很多笔记本的 BIOS 里有一个显卡模式选项,比如“Switchable Graphics”和“Discrete Graphics”两种模式。如果 BIOS 设置不对,系统可能只认独显或者只认核显,导致驱动安装后行为异常。这个后面会详细讲。

2.3 驱动版本的选择逻辑

NVIDIA 驱动版本不是越新越好。对于 Ubuntu 18.04,比较稳妥的选择是 390 系列或者 410 系列的长寿命分支(Long Lived Branch)。太新的版本可能依赖更高版本的内核或者 Xorg,在 18.04 上编译不过;太老的版本可能不支持你的显卡型号。具体选哪个版本,取决于你的显卡型号和内核版本。一般来说,GTX 10 系列及以前的显卡用 390 系列就很稳,RTX 20 系列可能需要 410 或更高版本。选版本的时候可以去 NVIDIA 官网查一下你的显卡支持哪些驱动版本,然后对照 Ubuntu 18.04 的软件源里有哪些版本可用。

3. 动手之前的准备工作:别急着敲命令

3.1 确认硬件信息和系统状态

在开始安装驱动之前,先把硬件情况摸清楚。打开终端,运行几个命令看看:

lspci | grep -i vga lspci | grep -i 3d

这两条命令会列出你的显卡设备。你应该能看到两个设备:一个是 Intel 核显(通常显示为 Intel Corporation ... Graphics),另一个是 NVIDIA 独显(显示为 NVIDIA Corporation ...)。记下 NVIDIA 显卡的型号,后面选驱动版本要用。

然后看看当前系统用的是哪个驱动:

lsmod | grep -i nouveau lsmod | grep -i nvidia

如果只看到 nouveau,说明当前用的是开源驱动;如果看到 nvidia,说明闭源驱动已经加载了。如果两个都没有,那可能是驱动没装好或者被禁用了。

再看看内核版本和 Xorg 版本:

uname -r Xorg -version

Ubuntu 18.04 默认内核是 4.15,如果你更新过系统,可能是 4.15.x 的某个小版本。Xorg 版本一般是 1.19 或 1.20。这些信息在选驱动版本的时候会用到。

3.2 BIOS 设置的检查与调整

这一步很多人会跳过,但它非常关键。重启电脑,进入 BIOS 设置界面(通常是开机按 F2、F10、Del 或 Esc,具体看机器品牌)。找到显卡相关的选项,不同品牌的 BIOS 叫法不一样,常见的有:

  • Graphics Device:可能的值有 Switchable Graphics、Discrete Graphics、UMA Graphics
  • Primary Display:可能的值有 IGFX、PEG、SG
  • NVIDIA Optimus:可能的值有 Enabled、Disabled

对于双显卡笔记本,建议设置为 Switchable Graphics 或者启用 Optimus。这样系统能同时看到两个显卡,核显负责显示输出,独显负责计算。如果设置成 Discrete Graphics,系统可能只认独显,核显被禁用,这会导致一些依赖核显的功能异常。如果设置成 UMA Graphics,独显被禁用,那你就用不上 NVIDIA 显卡了。

另外,有些笔记本的 BIOS 里有一个 Secure Boot 选项。Secure Boot 会阻止未签名的内核模块加载,而 NVIDIA 闭源驱动编译出来的模块默认是没有签名的,所以需要把 Secure Boot 关掉。在 BIOS 里找到 Secure Boot,设置为 Disabled。

3.3 系统更新与依赖安装

在装驱动之前,先把系统更新到最新状态,确保内核和 Xorg 都是最新版本:

sudo apt update sudo apt upgrade sudo apt dist-upgrade

然后安装编译驱动需要的依赖:

sudo apt install build-essential gcc make linux-headers-$(uname -r)

这几样东西是编译 NVIDIA 内核模块必须的。linux-headers的版本要和当前运行的内核版本一致,用$(uname -r)自动获取就行。如果这一步报错说找不到对应的 headers 包,可能需要先更新软件源或者手动指定版本。

注意:在执行系统更新之后,如果内核版本发生了变化,一定要重启一次,确保运行的内核和 headers 版本一致。否则编译驱动的时候会找不到正确的内核头文件。

4. 驱动安装的完整流程:从禁用开源驱动到验证成功

4.1 禁用 nouveau 开源驱动

nouveau 是 Ubuntu 自带的开源 NVIDIA 驱动,它和闭源驱动不能共存。安装闭源驱动之前必须先禁用 nouveau,否则会出现冲突,导致驱动加载失败或者系统不稳定。

禁用方法是在/etc/modprobe.d/目录下创建一个配置文件:

sudo nano /etc/modprobe.d/blacklist-nouveau.conf

写入以下内容:

blacklist nouveau options nouveau modeset=0

保存退出后,更新 initramfs 并重启:

sudo update-initramfs -u sudo reboot

重启后验证 nouveau 是否被禁用:

lsmod | grep -i nouveau

如果没有任何输出,说明禁用成功。如果还有输出,检查一下配置文件路径和内容是否正确,有时候需要把文件放到/etc/modprobe.d/下并且文件名以.conf结尾才会生效。

4.2 选择合适的驱动版本并安装

Ubuntu 18.04 的软件源里已经包含了一些 NVIDIA 驱动版本,可以用apt直接安装。先看看有哪些版本可用:

apt search nvidia-driver

或者用更精确的命令:

ubuntu-drivers devices

这个命令会列出你的显卡推荐的驱动版本。一般来说,它会推荐一个版本号,比如nvidia-driver-390或nvidia-driver-410。如果你想省事,可以直接用:

sudo ubuntu-drivers autoinstall

这个命令会自动选择并安装推荐的驱动版本。但根据我的经验,自动安装有时候会选到一个不太稳定的版本,所以更稳妥的做法是手动指定版本:

sudo apt install nvidia-driver-390

把390换成你需要的版本号。安装过程中会编译内核模块,需要几分钟时间。如果编译失败,通常是内核头文件版本不对或者缺少编译工具,回头检查第 3.3 步的依赖是否装全了。

安装完成后,不要急着重启。先检查一下驱动模块是否编译成功:

ls /lib/modules/$(uname -r)/kernel/drivers/video/nvidia/

如果看到nvidia.ko、nvidia-modeset.ko等文件,说明编译成功了。如果没有,说明安装过程中出了问题,需要查看/var/log/apt/下的日志或者重新安装。

4.3 配置 Xorg 文件解决循环登录

驱动装好了,但直接重启大概率还是会循环登录。问题出在 Xorg 的配置上。Ubuntu 18.04 在双显卡环境下,Xorg 默认可能不知道用哪个 GPU 来渲染显示。我们需要手动创建一个 Xorg 配置文件,告诉系统用核显做显示输出,独显做计算。

创建配置文件:

sudo nano /etc/X11/xorg.conf

写入以下内容(这是一个经过验证的配置模板):

Section "ServerLayout" Identifier "layout" Screen 0 "nvidia" Inactive "intel" EndSection Section "Device" Identifier "nvidia" Driver "nvidia" BusID "PCI:1:0:0" EndSection Section "Screen" Identifier "nvidia" Device "nvidia" Option "AllowEmptyInitialConfiguration" EndSection Section "Device" Identifier "intel" Driver "modesetting" BusID "PCI:0:2:0" EndSection Section "Screen" Identifier "intel" Device "intel" EndSection

这里有几个关键点需要解释。BusID是显卡在 PCI 总线上的地址,不同机器可能不一样。用lspci | grep -i vga可以看到类似00:02.0和01:00.0的地址,对应到配置文件里就是PCI:0:2:0和PCI:1:0:0。如果你的机器上 NVIDIA 显卡的地址不是01:00.0,需要相应修改。

Option "AllowEmptyInitialConfiguration"这一行很重要,它允许 NVIDIA 显卡在没有连接显示器的情况下也能正常初始化。对于双显卡笔记本,独显通常不直接连接显示器,如果没有这个选项,Xorg 启动时可能会因为找不到显示设备而失败,导致循环登录。

4.4 显示管理器的配置调整

Ubuntu 18.04 默认的显示管理器是 GDM3,但 GDM3 在双显卡环境下有时候会出问题。很多教程建议换成 LightDM,我实测下来 LightDM 确实更稳定一些。切换方法:

sudo apt install lightdm sudo dpkg-reconfigure lightdm

在弹出的界面中选择 LightDM 作为默认显示管理器。然后重启 LightDM:

sudo systemctl restart lightdm

如果不想换显示管理器,也可以继续用 GDM3,但需要额外配置。在/etc/gdm3/custom.conf中确保以下行没有被注释掉:

[daemon] WaylandEnable=false

这一行是禁用 Wayland,强制使用 Xorg。因为 NVIDIA 闭源驱动对 Wayland 的支持不好,禁用 Wayland 可以避免很多奇怪的问题。

4.5 重启并验证驱动状态

完成以上配置后,重启系统:

sudo reboot

重启后如果能正常进入桌面,说明基本成功了。接下来验证驱动是否正常工作:

nvidia-smi

这个命令会输出 NVIDIA 显卡的状态信息,包括驱动版本、显卡型号、显存使用情况、温度等。如果能正常输出,说明驱动已经加载并且工作正常。如果报错说找不到设备或者驱动未加载,说明还有问题,需要回头检查。

再确认一下当前用的是哪个 GPU 渲染桌面:

glxinfo | grep "OpenGL renderer"

如果输出显示的是 Intel 核显,说明桌面渲染用的是核显,这是正常的状态。如果显示的是 NVIDIA 显卡,说明配置可能没有生效,需要检查 Xorg 配置文件。

5. 循环登录问题的排查思路与常见故障处理

5.1 循环登录的典型原因分析

循环登录是双显卡装驱动过程中最常见的问题,表现是输入密码后屏幕闪一下又回到登录界面,或者直接黑屏然后重新出现登录界面。根据我的经验,原因主要有以下几类:

第一类是 Xorg 配置文件错误。比如 BusID 写错了、Driver 名称不对、Screen 和 Device 的对应关系搞混了。这种情况下 Xorg 启动失败,显示管理器反复重启。

第二类是 NVIDIA 内核模块没有正确加载。可能是编译失败、模块被 blacklist 了、或者 Secure Boot 阻止了模块加载。用lsmod | grep nvidia可以检查模块是否加载。

第三类是显示管理器的问题。GDM3 在某些双显卡机器上会出问题,换成 LightDM 通常能解决。另外,如果显示管理器的配置文件中指定了错误的 GPU,也会导致循环登录。

第四类是权限问题。有时候/tmp目录的权限不对,或者用户主目录下的.Xauthority文件权限有问题,也会导致登录失败。这种情况比较少见,但遇到了很头疼。

5.2 排查步骤与实用命令

遇到循环登录,不要慌,按以下步骤排查:

首先,切换到 tty 终端。在登录界面按Ctrl + Alt + F3(或者 F4、F5),进入命令行界面。用你的用户名和密码登录。

然后,查看 Xorg 的日志:

cat /var/log/Xorg.0.log | grep -i error

这个命令会过滤出 Xorg 启动过程中的错误信息。常见的错误包括Failed to initialize the NVIDIA kernel module、No devices detected、Screen not found等。根据错误信息可以定位问题。

再看看显示管理器的日志:

journalctl -u lightdm -b

或者如果是 GDM3:

journalctl -u gdm3 -b

这些日志会显示显示管理器的启动过程和失败原因。

检查 NVIDIA 模块是否加载:

lsmod | grep nvidia

如果没有输出,尝试手动加载:

sudo modprobe nvidia

如果报错,说明模块编译或者安装有问题,需要重新安装驱动。

5.3 常见问题速查表

问题现象可能原因解决方法
循环登录Xorg 配置错误检查/etc/X11/xorg.conf中的 BusID 和 Driver
循环登录显示管理器问题换用 LightDM,禁用 Wayland
黑屏无信号NVIDIA 模块未加载检查 Secure Boot 是否关闭,重新编译模块
分辨率异常核显驱动未正确配置检查 Xorg 中 intel 设备的配置
nvidia-smi 报错驱动版本不匹配换一个驱动版本重新安装
外接显示器无信号显示输出未正确路由检查 Xorg 中 Screen 的配置顺序
系统启动卡住nouveau 未完全禁用检查 blacklist 配置文件,更新 initramfs

5.4 几个容易踩的坑

第一个坑:BusID 写错。很多人直接抄网上的配置,但不同机器的 PCI 地址不一样。一定要用lspci确认自己的显卡地址。另外,BusID 的格式是PCI:总线:设备:功能,比如01:00.0对应PCI:1:0:0,注意十六进制和十进制的转换。

第二个坑:忘了更新 initramfs。禁用 nouveau 之后必须运行sudo update-initramfs -u,否则重启后 blacklist 不生效。

第三个坑:Secure Boot 没关。这个在 BIOS 里设置,很多人不知道它的存在。如果 Secure Boot 开着,NVIDIA 模块加载会被阻止,表现为驱动装了但用不了。

第四个坑:内核更新后驱动失效。Ubuntu 18.04 如果自动更新了内核,之前编译的 NVIDIA 模块可能不兼容新内核,需要重新安装驱动。可以用dkms来自动处理这个问题,安装驱动时如果提示是否使用 DKMS,选是。

第五个坑:同时装了多个版本的驱动。有时候apt会残留旧版本的驱动文件,导致冲突。安装新驱动之前,先彻底卸载旧驱动:

sudo apt purge nvidia-* sudo apt autoremove

然后再安装新版本。

6. 装完之后的验证与性能调优

6.1 验证驱动是否真正生效

驱动装好了,能进桌面了,不代表一切都正常。需要做几个验证:

运行nvidia-smi,确认能看到显卡信息、驱动版本、CUDA 版本(如果有的话)。如果这个命令正常输出,说明驱动基本没问题。

运行glxinfo | grep "OpenGL renderer",确认桌面渲染用的是核显。如果显示的是 NVIDIA 显卡,说明 Xorg 配置可能没有生效,桌面渲染走了独显,这会导致耗电增加、发热严重。

测试一下独显计算是否可用。如果你装了 CUDA,可以运行nvidia-smi看看有没有进程在使用显卡。或者用一个简单的计算任务测试,比如用 Python 的 PyTorch 或 TensorFlow 跑一个小模型,看看能不能调用 GPU。

6.2 电源管理与发热控制

双显卡笔记本装完 NVIDIA 驱动后,一个常见问题是发热和耗电增加。这是因为独显可能一直处于活跃状态,没有正确进入省电模式。可以通过以下方法优化:

安装bbswitch或者prime-select来管理显卡切换。Ubuntu 18.04 自带prime-select工具:

prime-select query

这个命令会显示当前使用的显卡模式。如果是nvidia,说明独显一直在工作;如果是intel,说明用的是核显。对于日常使用,建议设置为intel模式,需要跑计算任务时再切换到nvidia:

sudo prime-select intel

切换后需要注销重新登录才能生效。

另外,可以安装tlp来做电源管理:

sudo apt install tlp tlp-rdw sudo systemctl enable tlp sudo systemctl start tlp

tlp 会自动优化电源设置,包括显卡的电源管理。

6.3 外接显示器的配置

如果你需要外接显示器,双显卡环境下的配置会稍微复杂一些。外接显示器的信号通常由独显输出,但桌面渲染可能还是核显在做。需要在 Xorg 配置文件中正确设置 Screen 的顺序和关联。

一个简单的测试方法是接上外接显示器,然后运行:

xrandr --listproviders

这个命令会列出可用的显示提供者(Provider)。你应该能看到两个 Provider,一个是 Intel,一个是 NVIDIA。如果外接显示器没有信号,可能需要用xrandr --setprovideroutputsource命令来手动关联:

xrandr --setprovideroutputsource 1 0 xrandr --auto

这里的数字对应 Provider 的编号,具体看xrandr --listproviders的输出。这个配置可以写到~/.xprofile或者 Xorg 配置文件中,让它开机自动生效。

7. 我个人的实操体会与几个实用建议

这套流程我在不同品牌的笔记本上跑过多次,每次都会遇到一些细微的差异,但核心逻辑是一样的:禁用开源驱动、选对闭源驱动版本、配置 Xorg、调整显示管理器、验证状态。只要这几步做对了,循环登录的问题基本都能解决。

有一个经验值得分享:如果你不确定哪个驱动版本最合适,先用ubuntu-drivers devices看看系统推荐哪个版本,然后手动安装那个版本。不要盲目追求最新版,稳定比新功能重要。另外,安装驱动之前一定要把系统更新到最新,内核和 Xorg 的版本匹配是驱动能正常编译和加载的前提。

还有一点:如果你在虚拟机里装 Ubuntu 18.04,不需要折腾 NVIDIA 驱动,因为虚拟机通常用的是虚拟显卡,装闭源驱动反而会出问题。这套流程只适用于物理机,尤其是双显卡笔记本。

最后分享一个小技巧:如果装完驱动后系统能进桌面但nvidia-smi报错,试试重新生成 Xorg 配置:

sudo nvidia-xconfig

这个命令会自动生成一个基础的 Xorg 配置文件,然后你再根据双显卡的情况手动调整。有时候自动生成的配置比手动写的更靠谱,因为它会检测你的硬件并设置正确的 BusID。

后续如果系统更新了内核,记得重新安装 NVIDIA 驱动,或者确保 DKMS 正常工作。DKMS 会在内核更新时自动重新编译驱动模块,省去手动操作的麻烦。安装驱动时如果看到DKMS相关的提示,一定要选启用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 7:48:00

大模型算法备案全流程解析:从政策逻辑到实操避坑指南

最近这几天,圈子里最热闹的消息莫过于那一批大模型算法备案清单的公布。41个算法一次性拿到备案,其中头部那几家的名字反复出现,几乎是“一骑绝尘”的态势。很多朋友跑来问我:这个备案到底是什么?为什么有的公司一次过…

作者头像 李华
网站建设 2026/10/16 7:45:21

基于STM32与DS1302的数字时钟设计:三线时序到数码管动态显示

简介:这份压缩包是一份基于STM32的数字时钟完整工程,面向嵌入式初学者与单片机爱好者,以STM32为主控,集成LCD显示、RTC实时时钟和闹钟中断功能,并通过Proteus提供虚拟仿真环境,便于快速验证程序逻辑。包内共…

作者头像 李华
网站建设 2026/10/16 7:45:12

自动驾驶定位需求不止厘米级:精度、完好性与测试实践解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/16 7:45:06

AI行业周报制作指南:信息源搭建与筛选方法

2026年国庆长假结束,我回到工位上第一件事不是看邮件,而是把过去一周积压的AI行业信息全部拉出来过了一遍。坦白说,这个行业的信息密度已经大到让人头皮发麻的程度——哪怕只是漏看七天,讨论区里的热门话题、预印本平台上的新论文…

作者头像 李华
网站建设 2026/10/16 7:44:02

REA:AI黑箱行为建模与可观测性调试新范式

1. REA 不是“破解工具”,而是 AI 时代的新式工程思维最近在多个技术社区和开发者群聊里,频繁刷到“REA”这个词——不是某个新出的框架缩写,也不是某家公司的产品代号,而是一整套正在快速成型的实践方法论。它被冠以“Reverse En…

作者头像 李华
网站建设 2026/10/16 7:43:18

RTSP OPTION方法详解:从报文到实战,避开协议调试的坑

你是不是也这样:拿到一台新设备,心里想着赶紧把流拉出来,一头扎进去直接发 SETUP。结果服务器半天不吭声,或者甩给你一个 405 Method Not Allowed。这不是设备坏了,而是你把 RTSP 里最基本的礼仪给省略了——你连对方会…

作者头像 李华