win10+ubuntu24.04,在ubuntu24.04中安装Nvidia驱动程序

一个没有本领的人 2024-10-24 08:07:01 阅读 86

一、前言

刚重安装了Ubuntu系统,安装一下Nvidia驱动程序

参考链接如下:

link1

link2

link3

link4

我主要参考link3中使用官方的NVIDIA驱动进行手动安装的方法。

二、安装

1. 查看当前电脑的显卡型号

<code>lshw -numeric -C display

执行完毕之后我出现了一个警告,但是我没有管它:

/桌面$ lshw -numeric -C display

WARNING: you should run this program as super-user.

*-display

description: VGA compatible controller

product: AD102 [GeForce RTX 4090] [10DE:2684]

vendor: NVIDIA Corporation [10DE]

physical id: 0

bus info: pci@0000:01:00.0

logical name: /dev/fb0

version: a1

width: 64 bits

clock: 33MHz

capabilities: vga_controller bus_master cap_list rom fb

configuration: depth=32 driver=nouveau latency=0 resolution=2560,1440

resources: irq:155 memory:a1000000-a1ffffff memory:b0000000-bfffffff memory:c0000000-c1ffffff ioport:4000(size=128) memory:c0000-dffff

WARNING: output may be incomplete or inaccurate, you should run this program as super-user.

2. 查看本机支持的nvidia驱动版本

ubuntu-drivers devices

~/桌面$ ubuntu-drivers devices

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==

modalias : pci:v000010DEd00002684sv00001458sd000040E4bc03sc00i00

vendor : NVIDIA Corporation

model : AD102 [GeForce RTX 4090]

driver : nvidia-driver-535-server - distro non-free

driver : nvidia-driver-535-server-open - distro non-free

driver : nvidia-driver-535 - distro non-free recommended

driver : nvidia-driver-535-open - distro non-free

driver : xserver-xorg-video-nouveau - distro free builtin

可以看到推荐的版本是535版本。

注意:这里可以按照需求选择更新apt或者不更新,因为更新以后显卡推荐的驱动版本可能会变,这样之前的版本就不能用了。详细请直接跳到第4步查看。

3. 到官网下载驱动文件

官网地址:https://www.nvidia.cn/drivers/lookup/

在这里插入图片描述

注意显卡型号和操作系统。

这里查找结果默认是一个,应该是显卡对应的最新的驱动程序版本,我这里显示的是550版本:

在这里插入图片描述

当然展开查看更多版本时是含有535版本的。这里我犯了难,因为看到有博主说如果显卡较新的话安装推荐版本可能不是最新版本,即使安装成功也不意味着真正安装成功,会导致无法进入系统。也有博主说由于没有安装推荐版本导致电脑不支持下载的新版本,驱动卸载不干净最后也重装了系统。

纠结了以下之后我选择安装推荐版本,先安装一下试试。找到对应版本下载,下载后的文件格式为 run。

ps:我在执行了第四步以后推荐版本变成最新版本了。

下载以后放在用户目录下:

<code>/home/用户名/

在这里插入一下ubuntu系统目录的结构。

4. 安装其它包(重点!!!!!!!!!)

看到博主说他是刚装了系统就安装的驱动,所以没有gcc,make,g++三个包,所以他在这里先安装了。我先看看自己有没有这几个包:

gcc --version

没有。好的。安。

sudo apt update

sudo apt install gcc make g++

安好了。然后,我突然灵光一现,想到之前系统崩溃的起因好像就是我更新了个什么包。会不会更新apt以后显卡对应的驱动版本就变了呢?重新看一下推荐的驱动版本:

~/桌面$ ubuntu-drivers devices

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==

modalias : pci:v000010DEd00002684sv00001458sd000040E4bc03sc00i00

vendor : NVIDIA Corporation

model : AD102 [GeForce RTX 4090]

driver : nvidia-driver-535 - distro non-free

driver : nvidia-driver-550 - distro non-free recommended

driver : nvidia-driver-550-open - distro non-free

driver : nvidia-driver-535-open - distro non-free

driver : nvidia-driver-535-server-open - distro non-free

driver : nvidia-driver-535-server - distro non-free

driver : xserver-xorg-video-nouveau - distro free builtin

果然变了!!推荐版本变成550了。幸好没有直接安装535版本。重新下载一下550版本的驱动文件,放在相同的位置。550驱动文件也有很多个版本,我没有选择最新的,而是选择了大概1个多月前出的版本。

5. bios禁用secure boot,也就是设置为disable

如果没有禁用secure boot,会导致NVIDIA驱动安装失败,或者不正常。

重启进入BIOS界面:

在这里插入图片描述

在这里插入图片描述

搜索secure boot:

在这里插入图片描述

改为disable:

在这里插入图片描述

按 F10 保存并重启。

6.禁用nouveau

打开配置文件:

<code>sudo gedit /etc/modprobe.d/blacklist.conf

sudo: gedit:找不到命令

sudo apt-get update

sudo apt install gedit

然后我又看了一眼推荐驱动版本有没有变:

~/桌面$ ubuntu-drivers devices

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

udevadm hwdb is deprecated. Use systemd-hwdb instead.

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==

modalias : pci:v000010DEd00002684sv00001458sd000040E4bc03sc00i00

vendor : NVIDIA Corporation

model : AD102 [GeForce RTX 4090]

driver : nvidia-driver-535 - distro non-free

driver : nvidia-driver-535-server - distro non-free

driver : nvidia-driver-535-open - distro non-free

driver : nvidia-driver-550 - distro non-free recommended

driver : nvidia-driver-535-server-open - distro non-free

driver : nvidia-driver-550-open - distro non-free

driver : xserver-xorg-video-nouveau - distro free builtin

顺序好像跟之前的不一样了,但推荐版本还是550.

继续执行:

sudo gedit /etc/modprobe.d/blacklist.conf

在最后一行加上:

blacklist nouveau

这一条的含义是禁用nouveau第三方驱动,之后也不需要改回来。

在这里插入图片描述

由于nouveau是构建在内核中的,所以保存退出后,打开命令端输入

<code>sudo update-initramfs -u

7. 重启

reboot

重启之后,查看nouveau有没有运行:

lsmod | grep nouveau # 没输出代表禁用生效

8. 停止可视化桌面

为了安装新的Nvidia驱动程序,我们需要停止当前的显示服务器。最简单的方法是使用telinit命令更改为运行级别3。执行以下linux命令后,显示服务器将停止,因此请确保在继续之前保存所有当前工作(如果有):

sudo telinit 3

# ubuntu

sudo service lightdm stop

之后会进入一个新的命令行会话,使用当前的用户名密码登录。

这里可能会有人出现左上角有光标,不能输入命令的现象,这是正常的。可以通过快捷键 CTRL+ALT+F1-F5 随便选一个TTY,切换过去之后使用用户名和密码登录即可。

在这里插入图片描述

<code>sudo apt install lightdm

在这里插入图片描述

选择lightdm。继续执行:

<code>sudo service lightdm stop

9. 安装驱动

给驱动文件增加可执行权限:

sudo chmod a+x NVIDIA-Linux-x86_64-550.107.02.run

然后执行安装:

sudo sh ./NVIDIA-Linux-x86_64-550.107.02.run --no-opengl-files

贴一下大佬的介绍:

安装过程中遇到的选择如下: 可能顺序不一样

大概是说“预检查”啥的不通过,我都是直接continue,目前没遇到过什么问题

在这里插入图片描述

有时候会问你要不要安装32位的库,我一般都选择安装(为啥不装嘞,除非空间不够吧)。下图是运气不好,装不上32位的库

在这里插入图片描述

选择是否要使用nvidia的x config文件替换原来的。我都是把linux中的x理解成是图形界面。看个人喜好要不要替换吧,我一般都选No

在这里插入图片描述

我就只碰到了这几个选项,其他的没有碰到。甚至连安装完成的OK选项都没有。期间都是选的默认选项。然后就直接黑屏,左下角出现了类似命令行的东西,可以输入指令,我输入了<code>reboot

然后重启失败。黑屏了,一直没反应,我也不知道怎么回事。

果然安装驱动没有那么简单吗?

断电重启。这次在grub界面,按’‘‘e’’’ 进入编辑开机指令的模式, 在’‘‘quite splash’’’ 并在后面加上“nomodeset”,按’‘F10’'启动系统,出现了如下提示:

在这里插入图片描述

啊,什么东西。是不是果然要按照大佬介绍的改一下分辨率?但是现在只能点击关闭,我点了以后就登录进来了。

然后我打开命令行,输入

<code>nvidia-smi

在这里插入图片描述

这个是安装成功了吧。继续重启,还是黑屏。

再次断电重启,进入recovery mode模式,进入root,执行:

<code>sudo vi /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"code>

#修改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset"code>

按“esc”,输入“ :wq! ” (有冒号) 保存退出,更新grub

sudo update-grub

重启,还是不行。桌面卡住了,除了鼠标什么也没有,命令行也进不去。

断电重启。

按Ctrl+Alt+F1可以进入tty终端

输入账号和密码进行登录,注意,这一步不要使用小键盘

执行命令注销桌面重新登录

命令为:

sudo pkill Xorg 或者 sudo restart lightdm

后面的那个命令我执行失败了。前面的可以执行,但是还是显示显示器无法配置。进入界面后倒是可以正常运行。然后我执行:

sudo nano /usr/share/X11/xorg.conf.d/10-amdgpu.conf

将文件修改为:

Section "OutputClass"

Identifier "AMDgpu"

MatchDriver "amdgpu"

Driver "amdgpu"

Option "PrimaryGPU" "no"

EndSection

修改nvidia配置:

sudo nano /usr/share/X11/xorg.conf.d/10-nvidia.conf

这个文件我没有,输入之后是一个新建的文件。然后我输入:

Section "OutputClass"

Identifier "nvidia"

MatchDriver "nvidia-drm"

Driver "nvidia"

Option "AllowEmptyInitialConfiguration"

Option "PrimaryGPU" "yes"

ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"

EndSection

重启。失败。

10. 更改分辨率

打开终端输入命令xrandr,获取当前显示系统有效输出的设备名称和所有有效分辨率,如下:

/桌面$ xrandr

Screen 0: minimum 8 x 8, current 5120 x 1440, maximum 32767 x 32767

HDMI-0 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm

2560x1440 59.95*+ 74.99

3840x2160 59.94 50.00

1920x1080 60.00 59.94 50.00

1680x1050 59.95

1440x900 59.89

1280x1440 59.91

1280x1024 75.02 60.02

1280x960 60.00

1280x720 60.00 59.94 50.00

1024x768 75.03 70.07 60.00

800x600 75.00 72.19 60.32 56.25

720x576 50.00

720x480 59.94

640x480 75.00 72.81 59.94 59.93

这里第一列为分辨率,第二列为刷新率?带*的为现在正在使用的分辨率?第一行current后面是我真正的分辨率?第二行connected前面的是我的显示器名称?

这里我没有新建分辨率5120x1440,我想先看看是不是分辨率的原因,所以直接将分辨率改为了2560x1440

xrandr -s 2560x1440_59.95

在查看当前分辨率:

xrandr

Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767

HDMI-0 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm

2560x1440 59.95*+ 74.99

3840x2160 59.94 50.00

1920x1080 60.00 59.94 50.00

1680x1050 59.95

1440x900 59.89

1280x1440 59.91

1280x1024 75.02 60.02

1280x960 60.00

1280x720 60.00 59.94 50.00

1024x768 75.03 70.07 60.00

800x600 75.00 72.19 60.32 56.25

720x576 50.00

720x480 59.94

640x480 75.00 72.81 59.94 59.93

第一行current后面的分辨率变了。重启一下试试。

这次能正常进入系统了。但是还是有那个无法改变显示器配置的提示。进入桌面以后显示也是正常的。

用命令行查看:

~/桌面$ xrandr

Screen 0: minimum 8 x 8, current 5120 x 1440, maximum 32767 x 32767

HDMI-0 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm

2560x1440 59.95*+ 74.99

3840x2160 59.94 50.00

1920x1080 60.00 59.94 50.00

1680x1050 59.95

1440x900 59.89

1280x1440 59.91

1280x1024 75.02 60.02

1280x960 60.00

1280x720 60.00 59.94 50.00

1024x768 75.03 70.07 60.00

800x600 75.00 72.19 60.32 56.25

720x576 50.00

720x480 59.94

640x480 75.00 72.81 59.94 59.93

current后面又变成了5120x1440。为什么呢?直接新建一个分辨率试试。

cvt 5120 1440

# 5120x1440 59.96 Hz (CVT) hsync: 89.52 kHz; pclk: 624.50 MHz

Modeline "5120x1440_60.00" 624.50 5120 5496 6048 6976 1440 1443 1453 1493 -hsync +vsync

sudo xrandr --newmode "5120x1440_60.00" 624.50 5120 5496 6048 6976 1440 1443 1453 1493 -hsync +vsync

X Error of failed request: BadName (named color or font does not exist)

Major opcode of failed request: 140 (RANDR)

Minor opcode of failed request: 16 (RRCreateMode)

Serial number of failed request: 46

Current serial number in output stream: 46

好累。看到有人说换一根4k的HDMI线就都好了 。又要花钱?

我之前用那个命令更改分辨率难道只是暂时的吗?

sudo vim /etc/profile

sudo: vim:找不到命令

sudo apt install vim

打开文件,在最下面添加两行:

xrandr --addmode HDMI-0 "2560x1440_59.95"

xrandr --output HDMI-0 --mode "2560x1440_59.95"

在这里插入图片描述

保存,重启。

在这里插入图片描述

什么?为什么会没有这个模式呢?刚刚看到下面有列出来我才没有新建模式而是直接使用的。

完蛋,又进不去了。桌面没有任何反应,<code>sudo pkill Xorg也失效了。

断电重启,重新进入ubuntu系统,还是出现了这两个警告,但是桌面竟然神奇的好了。命令行也能正常使用了。

看到有博主说在附加驱动里改成专有驱动可能有用。于是:

在这里插入图片描述

救命,我的全是灰色的,根本改不了。

11. 卸载重装

没办法了。卸了重装一下试试吧。这次我直接选择了最新的550版本进行安装。

<code>sudo apt-get remove --purge nvidia*

执行完毕之后,查看有没有卸载干净:

~/桌面$ nvidia-smi

Sun Sep 29 16:24:41 2024

+-----------------------------------------------------------------------------------------+

| NVIDIA-SMI 550.107.02 Driver Version: 550.107.02 CUDA Version: 12.4 |

|-----------------------------------------+------------------------+----------------------+

| 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 RTX 4090 Off | 00000000:01:00.0 On | Off |

| 0% 40C P8 19W / 450W | 156MiB / 24564MiB | 50% Default |

| | | N/A |

+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+

| Processes: |

| GPU GI CI PID Type Process name GPU Memory |

| ID ID Usage |

|=========================================================================================|

| 0 N/A N/A 1230 G /usr/lib/xorg/Xorg 148MiB |

+-----------------------------------------------------------------------------------------+

很好,根本没卸载。

使用chmod命令安装的好像也需要一个单独的指令来卸载,忘记记录现在也想不起来了。我是按照下面的方式卸载的:

cd /usr/bin

ls nvidia-*

sudo nvidia-uninstall

在这里插入图片描述

选No

在这里插入图片描述

选OK。

卸载驱动后重启出现了新的问题:

在这里插入图片描述

检测不到 HDMI 线呢。

重新安装驱动后还是一样会出现两个警告,使用<code>xrandr命令查看也是一样的问题:

~/桌面$ xrandr

Screen 0: minimum 8 x 8, current 5120 x 1440, maximum 32767 x 32767

HDMI-0 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm

2560x1440 59.95*+ 74.99

3840x2160 59.94 50.00

1920x1080 60.00 59.94 50.00

1680x1050 59.95

1440x900 59.89

1280x1440 59.91

1280x1024 75.02 60.02

1280x960 60.00

1280x720 60.00 59.94 50.00

1024x768 75.03 70.07 60.00

800x600 75.00 72.19 60.32 56.25

720x576 50.00

720x480 59.94

640x480 75.00 72.81 59.94 59.93

DP-0 disconnected (normal left inverted right x axis y axis)

DP-1 disconnected (normal left inverted right x axis y axis)

DP-2 disconnected (normal left inverted right x axis y axis)

DP-3 disconnected (normal left inverted right x axis y axis)

DP-4 disconnected (normal left inverted right x axis y axis)

DP-5 disconnected (normal left inverted right x axis y axis)

None-1-1 connected (normal left inverted right x axis y axis)

2560x1440 60.00 +

~/桌面$ nvidia-settings

(nvidia-settings:5056): GLib-GObject-CRITICAL **: 20:15:38.502: g_object_unref: assertion 'G_IS_OBJECT (object)' failed

驱动也一样什么都点不了呢:

在这里插入图片描述

到底是为什么呀。浏览了一些杂七杂八的帖子,突然看到有博主说要将<code>lightdm换回gdm3。我也试试行不行:

sudo dpkg-reconfigure gdm3

在这里插入图片描述

重启之后第一个警告没有了。只有开机出现的这个警告了:

在这里插入图片描述

仔细想一下,之所以会出现这个警告,不是因为我之前修改了那个 .profile 文件造成的吗?那就再把之前添加的那两行代码删掉。重启,没有警告。一切正常。输入<code>xrandr命令查看:

~/桌面$ xrandr

Screen 0: minimum 8 x 8, current 2560 x 1440, maximum 32767 x 32767

HDMI-0 connected primary 2560x1440+0+0 (normal left inverted right x axis y axis) 597mm x 336mm

2560x1440 59.95*+ 74.99

3840x2160 59.94 50.00

1920x1080 60.00 59.94 50.00

1680x1050 59.95

1440x900 59.89

1280x1440 59.91

1280x1024 75.02 60.02

1280x960 60.00

1280x720 60.00 59.94 50.00

1024x768 75.03 70.07 60.00

800x600 75.00 72.19 60.32 56.25

720x576 50.00

720x480 59.94

640x480 75.00 72.81 59.94 59.93

分辨率正常了。

但是我的附加驱动那里还是不能修改。我暂时先不管了。后面安装 anaconda 和 cuda 的时候看看有没有问题再说吧。

12. bios打开secure boot

将bios设置为之前的格式。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。