# 永久禁用nouveau模块
**文档控制**
|**序号**|**修改人/验证人**|**修改内容**|**日期**|
|---|---|---|---|
|1|zhangjiannan|创建文档|2025\.2\.15|
|||||
|||||
|||||
# 一、关于本指导书
## 1\.1 指导书目的
针对在系统安装NVIDIA驱动前,禁用nouveau模块提供规范性指导方法。
## 1\.2 指导书适用对象
本指导书适用于涉及服务器交付的实施人员。
## 1\.3 指导书中的格式定义
本指导书中方框内内容为执行的shell命令及输出,例如:
```Bash
[bjuci@server01 ~]$ ls
Intel
```
## 1\.4 本指导书测试平台
|**处理器平台**|Intel\(R\) Xeon\(R\) Platinum 8468V|
|---|---|
|**操作系统版本**|Ubuntu 22\.04\.4 LTS Server版|
|**前置条件**|无|
## 1\.5 所需软件官方下载地址
|不涉及|不涉及|
|---|---|
# 二、背景介绍
`nouveau` 是一个开源的 NVIDIA 图形驱动,用于 Linux 操作系统,支持 NVIDIA 显卡。它的目的是为 Linux 用户提供一个免费的、开源的驱动程序,使得 Linux 用户能够使用 NVIDIA 显卡进行图形加速,而不必依赖于 NVIDIA 提供的闭源驱动程序。
**主要特点**
1. **开源**:`nouveau` 驱动是完全开源的,由社区开发和维护,符合自由软件的精神。相比之下,NVIDIA 提供的官方驱动是闭源的。
2. **支持 NVIDIA 显卡**:`nouveau` 驱动支持大多数 NVIDIA 显卡,从老旧的 GPU 到较新的模型,但它的性能通常不如官方闭源驱动。
3. **有限的功能和性能**:
- **性能**:`nouveau` 驱动的性能通常不如 NVIDIA 官方驱动,尤其在高性能图形计算和游戏方面。
- **功能**:与官方驱动相比,`nouveau` 在某些高级功能(如硬件加速视频解码、CUDA 支持等)上有缺失。
4. **内核模式设置(KMS)**:`nouveau` 驱动通常在 Linux 系统中启用内核模式设置(KMS),这意味着图形显示的初始化和模式切换是在内核中完成的。
### 为什么禁用 `nouveau` 驱动?
1. **性能问题**:`nouveau` 驱动的性能较低,特别是在使用 NVIDIA 显卡进行图形密集型工作(如游戏或深度学习)时,通常不如官方闭源驱动。
2. **兼容性问题**:某些应用程序或操作可能与 `nouveau` 驱动不兼容,尤其是在使用 NVIDIA 显卡进行专业工作(如视频编辑或科学计算)时。
3. **需要官方驱动**:如果希望使用 NVIDIA 提供的官方驱动(例如,CUDA 或 GPU 加速),就需要禁用 `nouveau` 驱动,因为可能会和官方驱动产生冲突导致官方驱动安装失败。官方驱动通常能够提供更好的支持和性能,尤其是在支持 GPU 加速、深度学习等领域时。
`nouveau` 是一个为 Linux 提供的开源 NVIDIA 驱动,虽然它能支持基本的图形功能,但由于性能和功能的限制,许多用户选择禁用它,转而使用 NVIDIA 提供的官方驱动,以获得更好的性能和兼容性。如果选择官方驱动,那么禁用nouveau是必须的。
# 三、禁用方法
## 3\.1 **创建黑名单文件**
通过创建 `/etc/modprobe.d/blacklist-nouveau.conf` 文件并加入以下内容:
```Bash
blacklist nouveau
options nouveau modeset=0
```
这段配置的作用是告诉 `modprobe` 在加载模块时忽略 `nouveau` 驱动并禁用它。`modeset=0` 参数禁用 `nouveau` 的内核模式设置(即不使用 `nouveau` 驱动来控制显示器的显示)。
## 3\.2 **更新 initramfs**
更新 `initramfs` 是必须的,因为 `nouveau` 驱动有时会被加载到启动的初期阶段。通过执行:
```Bash
sudo update-initramfs -u
```
这会更新 initramfs,并确保系统在启动时不会加载 `nouveau` 驱动。
## 3\.3 **重启系统**
重启系统以使上述更改生效:
```Bash
sudo reboot
```
## 3\.4 **验证是否禁用成功**
重启后,你可以通过以下命令检查 `nouveau` 驱动是否仍然被加载:
```Bash
lsmod | grep nouveau
```
如果没有输出,说明 `nouveau` 驱动已经被禁用,验证成功。
**如果禁用成功,则忽略后续内容。**
# 四、可能出现的问题
**GRUB 配置未更新**:有时 `nouveau` 驱动可能在 `GRUB` 引导时被强制加载。如果经过上述方法禁用后,仍然看到 `nouveau` 驱动在 `lsmod` 中列出,可以尝试在 `GRUB` 配置中手动禁用 `nouveau` 驱动。
1. 编辑 `/etc/default/grub`:
```Bash
sudo vim /etc/default/grub
```
2. 找到 `GRUB_CMDLINE_LINUX_DEFAULT` 行,加入 `nouveau.modeset=0`,例如:
```Bash
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0"
```
3. 更新 GRUB 配置:
```Bash
sudo update-grub
```
4. 重启系统:
```Bash
sudo reboot
```