1. 为什么NVIDIA驱动安装这么麻烦?
刚接触Ubuntu的小伙伴可能都有这样的困惑:为什么在Windows下点几下鼠标就能装好的显卡驱动,到了Linux系统里就变得这么复杂?我刚开始用Ubuntu做深度学习时,也被这个问题折磨得够呛,重装了三次系统才搞明白其中的门道。
其实主要原因有三个:第一,Linux系统默认使用开源的nouveau驱动来支持NVIDIA显卡,但这个驱动性能有限,而且会和官方驱动冲突;第二,图形界面(X-window)和显卡驱动关系密切,安装过程中需要暂时关闭图形服务;第三,不同版本的Ubuntu对驱动安装方式的要求也不尽相同。不过别担心,跟着我的步骤一步步来,保证你能顺利搞定。
2. 准备工作:下载正确的驱动版本
2.1 确认显卡型号
在开始之前,我们需要先确认自己的显卡型号。打开终端(Ctrl+Alt+T),输入:
lspci | grep -i nvidia这会显示你的NVIDIA显卡型号,比如我的是"GeForce RTX 3090"。记下这个信息,接下来去官网下载驱动时会用到。
2.2 官网下载驱动
打开NVIDIA官网的驱动下载页面(建议用英文版页面,更新更及时),选择对应的产品类型、系列和操作系统。这里有几个关键点需要注意:
- 产品类型选择"GeForce"(除非你是专业卡用户)
- 产品系列选择你的显卡代数,比如30系列选"GeForce RTX 30 Series"
- 操作系统选择"Linux 64-bit"
- 下载类型选择"Production Branch"(稳定版)
下载完成后,建议把.run驱动文件放在主目录下,并重命名为简单的名字,比如"NVIDIA.run"。记住路径中不要有中文或空格,否则后面安装时会报错。
3. 系统环境准备
3.1 更新软件源和安装编译工具
在安装驱动前,我们需要确保系统是最新的,并且安装了必要的编译工具。在终端中依次执行:
sudo apt update sudo apt upgrade -y sudo apt install build-essential gcc make -y这些命令会更新软件包列表,升级所有可升级的软件包,并安装编译驱动所需的工具链。这个过程可能需要几分钟,取决于你的网速。
3.2 禁用默认的nouveau驱动
这是最关键也最容易出错的步骤。nouveau是Linux内核自带的NVIDIA开源驱动,它会干扰官方驱动的安装。我们需要先禁用它:
- 创建黑名单配置文件:
sudo nano /etc/modprobe.d/blacklist-nouveau.conf- 在打开的文件中添加以下内容:
blacklist nouveau options nouveau modeset=0- 保存文件(Ctrl+O,回车,然后Ctrl+X退出)
- 更新initramfs:
sudo update-initramfs -u- 重启系统:
sudo reboot重启后,我们可以验证nouveau是否已被禁用:
lsmod | grep nouveau如果没有任何输出,说明禁用成功了。如果有输出,请重复上述步骤。
4. 安装NVIDIA驱动
4.1 进入TTY模式
由于安装过程中需要关闭图形界面,我们得先学会如何在纯命令行环境下操作。按下Ctrl+Alt+F3(有些电脑可能是F1-F6中的任意一个),这会切换到TTY终端。你需要在这里输入用户名和密码登录。
注意:这里的用户名是你创建账户时设置的用户名,不是显示名称。如果不确定,可以在图形界面打开终端,输入"whoami"查看。
4.2 关闭图形界面服务
登录TTY后,执行以下命令停止图形服务:
sudo service gdm3 stop有些系统可能使用lightdm而不是gdm3,如果不确定,可以尝试:
sudo systemctl stop gdm4.3 运行安装程序
现在可以开始安装驱动了。首先切换到驱动文件所在的目录,比如:
cd ~然后给驱动文件添加执行权限:
chmod +x NVIDIA.run最后运行安装程序:
sudo ./NVIDIA.run --no-opengl-files --no-x-check这里有两个重要参数:
- --no-opengl-files:不安装OpenGL文件,避免与系统自带的Mesa驱动冲突
- --no-x-check:安装时不检查X服务
安装过程中会遇到几个选项:
- "Install NVIDIA's 32-bit compatibility libraries?" 选择No
- "Would you like to run the nvidia-xconfig..." 选择Yes
安装完成后,重启图形服务:
sudo service gdm3 start或者直接重启系统:
sudo reboot5. 验证安装结果
系统重启后,打开终端输入:
nvidia-smi如果看到类似下面的输出,说明驱动安装成功了:
+-----------------------------------------------------------------------------+ | NVIDIA-SMI 525.53 Driver Version: 525.53 CUDA Version: 12.0 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... On | 00000000:01:00.0 On | N/A | | 0% 48C P8 15W / 350W | 512MiB / 24576MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+6. 常见问题解决方案
6.1 安装后黑屏
这是最常见的问题,通常有以下几种原因:
- HDMI线接在了主板的接口上,而不是显卡的接口上(我就犯过这个低级错误)
- 安装参数不正确,尝试重新安装并确保使用了--no-opengl-files参数
- 驱动版本不兼容,可以尝试其他版本的驱动
6.2 TTY模式下显示乱码
如果你的系统语言不是英文,在TTY模式下可能会出现乱码。可以临时设置语言环境:
export LANG=en_US.UTF-8 export LANGUAGE=en_US6.3 循环登录问题
安装驱动后如果出现循环登录(输入密码后又返回登录界面),可以尝试:
- 进入TTY模式(Ctrl+Alt+F3)
- 删除Xorg配置文件:
sudo rm /etc/X11/xorg.conf- 重新配置:
sudo nvidia-xconfig7. 进阶配置与优化
7.1 自动加载驱动模块
为了让驱动在每次启动时自动加载,可以编辑/etc/modules文件:
sudo nano /etc/modules添加以下内容:
nvidia nvidia-drm nvidia-modeset保存后更新initramfs:
sudo update-initramfs -u7.2 电源管理设置
如果你用的是笔记本,可能需要调整电源管理设置以获得更好的性能:
sudo nano /etc/default/grub找到GRUB_CMDLINE_LINUX_DEFAULT这一行,添加:
nvidia.NVreg_PreserveVideoMemoryAllocations=1保存后更新grub:
sudo update-grub7.3 多显示器配置
如果你使用多个显示器,可以使用nvidia-settings工具进行配置:
sudo apt install nvidia-settings nvidia-settings这个图形化工具可以让你方便地调整分辨率、旋转显示器等设置。
8. 驱动更新与维护
8.1 检查新驱动版本
定期检查NVIDIA官网是否有新驱动发布是个好习惯。你也可以使用以下命令查看当前驱动信息:
nvidia-smi --query-gpu=driver_version --format=csv,noheader8.2 安全移除旧驱动
在安装新驱动前,最好先卸载旧驱动:
sudo nvidia-uninstall然后按照前面的步骤重新安装新驱动。
8.3 使用PPA源安装(可选)
如果你不想每次都手动下载安装,可以添加官方PPA源:
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update然后使用apt安装驱动:
sudo apt install nvidia-driver-525这种方法比较简单,但可能不是最新版本。