ubuntu22.04安装显卡驱动+cuda+cudnn

本文详细介绍了在Ubuntu22.04上安装NVIDIA显卡驱动、CUDA和CUDNN的步骤,包括查看显卡型号、下载驱动、卸载自带驱动、禁用nouveau、安装驱动、配置环境变量,以及安装和测试CUDA和CUDNN的过程。在安装过程中,需要注意停用lightdm服务、安装必要的依赖,并对下载的软件包进行管理。最后通过运行mnistCUDNN示例验证安装成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 下载驱动和卸载、禁用自带驱动程序

1.1 查看系统显卡型号

lspci | grep -i nvidia

在这里插入图片描述

1.2 从NVIDIA官网下载相应驱动

官网网址:https://www.nvidia.com/Download/index.aspx?lang=en-us

在这里插入图片描述

1.3 卸载Ubuntu自带的驱动程序

sudo apt purge nvidia*

1.4 禁用自带的nouveau nvidia驱动

打开/etc/modprobe.d/blacklist.conf

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

如果提示没有vi就执行下面命令安装一下:

 sudo apt install vi

在blacklist.conf文件中最后添加如下内容

blacklist nouveau 
options nouveau modeset=0 

然后保存退出。

1.5 更新

sudo update-initramfs -u

1.6 重启电脑

sudo reboot

1.7 查看是否将自带的驱动屏蔽

lsmod | grep nouveau

没有结果输出,则表示屏蔽成功。

2. 安装显卡驱动

2.1 停止lightdm桌面服务

sudo service lightdm stop

如果提示没有lightdm,使用下面命令安装,

sudo apt install -y lightdm

再执行上面的命令。如果按照的服务器版本的ubuntu,是没有图像化桌面的,可以忽略2.1步骤。(注意,服务器版的ubuntu不需要这一步;如果是桌面版的ubuntu,需要这一步,最后安装完成之后需要命令重新启动桌面服务,不然没有图形化界面,只有终端形式,感谢用户小皮每天进步一点点的评论。)

2.2 安装驱动

2.2.1 首先查看你有没有安装gcc

gcc --version

在这里插入图片描述

如果没有安装gcc一般make也没安装,这时需要使用下面命令安装一下gcc和make

sudo apt install gcc & make

2.2.2 执行安装

cd到你下载的显卡驱动的目录

sudo chmod a+x NVIDIA-Linux-x86_64-525.89.02.run
sudo ./NVIDIA-Linux-x86_64-525.89.02.run -no-x-check -no-nouveau-check -no-opengl-files
  1. -no-x-check: 安装时关闭X服务;
  2. -no-nouveau-check: 安装时禁用nouveau;
  3. -no-opengl-files: 只安装驱动文件,不安装OpenGL文件。

安装过程中下面步骤按照下图选择,其它默认。

在这里插入图片描述
在这里插入图片描述
安装完成以后执行

nvidia-smi

如果显示如下内容则表示安装成功。

在这里插入图片描述

3 安装cuda

3.1 安装cuda

  从上面的图中可以看到显卡最高可以支持cuda12.0(红色框内)

网址:https://developer.nvidia.com/cuda-toolkit-archive
在这里插入图片描述
在这里插入图片描述
选择好之后cuda版本之后,可以看到如下安装命令。
在这里插入图片描述
在执行以上第三行命令时,可能由于文件太大导致下载时间过长,可以通过以下方法替换这条命令。

  1. 安装axel;
sudo apt install axel
  1. 使用axel下载cuda(下面命令中下载地址和上面第三行一样);
axel -n 50 https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda-repo-ubuntu2204-12-0-local_12.0.0-525.60.13-1_amd64.deb

这里50是指使用50个线程进行下载。

下载完成后继续执行官方给出代码的第四行及以后的代码安装cuda。

3.2 配置环境变量

  安装完成时,还不算安装成功,需要配置环境变量。

  1. 打开.bashrc文件;
  2. 在文件末尾输入如下内容并保存退出;
export PATH=/usr/local/cuda-12.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

将下面的12.0替换为你的cuda版本,其他不变,如果不知道自己安装的是哪个版本,就去/usr/local/文件夹下找一下;

  1. 更新变量,使其生效;
source ~/.bashrc

  在终端输入

nvcc -V

如果出现下图情况,则表明cuda安装完成。

在这里插入图片描述

4 安装cudnn

4.1 下载cudnn

网址:https://developer.nvidia.com/rdp/cudnn-download
下载cudnn需要登录账户,可以使用邮箱注册一个。

在这里插入图片描述
在这里插入图片描述
下载完成后如下所示:

在这里插入图片描述
将其上传到ubuntu系统中,如下。
在这里插入图片描述

4.2 安装cudnn

  英伟达官网给出了安装过程,如下图所示。

在这里插入图片描述

  1. 启用本地存储库
sudo dpkg -i cudnn-local-repo-ubuntu2204-8.9.0.131_1.0-1_amd64.deb

  1. 导入 CUDA GPG 密钥
    在这里插入图片描述
    这里直接使用提示的命令导入密钥
  2. 刷新存储库元数据
sudo apt-get update
  1. 安装运行时库
sudo apt-get install libcudnn8=8.9.0.131_1.0-1+cuda12.0

这条命令可能会报如下错误,

在这里插入图片描述

解决方法: 在第3步时关注一下cudnn的路径,如下图所示,在var文件夹下。

在这里插入图片描述

打开 /var/cudnn-local-repo-ubuntu2204-8.9.0.131/ 文件夹,如下图所示。

在这里插入图片描述

直接使用dpkg命令安装红色框中的三个文件即可,命令如下。

sudo dpkg -i libcudnn8_8.9.0.131-1+cuda12.1_amd64.deb 
sudo dpkg -i libcudnn8-dev_8.9.0.131-1+cuda12.1_amd64.deb 
 sudo dpkg -i libcudnn8-samples_8.9.0.131-1+cuda12.1_amd64.deb 

4.3 测试cudnn

  英伟达官网给出了测试安装的例子,如下图所示。

在这里插入图片描述

  1. 将 cuDNN 示例文件夹(cudnn_samples_v8)复制到可写路径,这里我复制到自己用户目录下,命令如下;
 cp -r /usr/src/cudnn_samples_v8/ /home/user/
  1. 转到可写路径;
 cd  /home/user/cudnn_samples_v8/mnistCUDNN
  1. 编译 mnistCUDNN 示例;
make clean && make

这时可能出现如下图报错信息1,内容大概是没有权限,这时需要给mnistCUDNN文件夹足够的权限,然后在编译,命令如下:

sudo chmod 777 mnistCUDNN

也可能出现如下图报错信息2,

在这里插入图片描述

解决方法: 执行如下命令,参考网址

sudo apt-get install libfreeimage3 libfreeimage-dev
  1. 运行 mnistCUDNN 示例。
./mnistCUDNN

如果出现如下图所示结果,表明安装cudnn成功。

在这里插入图片描述

5. 卸载NVIDIA驱动

  1. 使用以下四条命令卸载NVIDIA驱动
sudo apt-get --purge remove nvidia*
sudo apt autoremove
sudo apt-get --purge remove "*cublas*" "cuda*"
sudo apt-get --purge remove "*nvidia*"
  1. 查看是否卸载干净(没有输出表示卸载完成)
dpkg -l | grep nvidia

参考

[1] 英伟达官网下载显卡驱动
[2] 英伟达官网下载cuda
[3] 英伟达官网下载cudnn
[4] 英伟达官网安装cudnn指南
[5] 编译 mnistCUDNN 示例报错解决办法

<think>嗯,用户想采集快手直播的弹幕数据,应该怎么实现呢?首先,我得回忆一下之前看过的关于直播数据抓取的资料。根据引用[2]提到的,快手直播弹幕是通过WebSocket传输的,并且使用了protobuf序列化。所以第一步可能需要找到WebSocket连接,然后处理protobuf数据。 用户可能需要先打开浏览器的开发者工具,像F12,然后进入直播间,刷新页面。在Network标签下筛选WebSocket连接,找到对应的wss链接。这一步很重要,因为只有连接到正确的WebSocket服务器才能获取实时弹幕。 接下来,引用[2]里提到复制hex格式的消息,转换为bytes,然后进行反序列化。这可能涉及到解析protobuf的结构,用户需要知道快手的具体消息格式,可能需要逆向工程或者查找已有的协议文档。如果没有现成的文档,可能需要抓取多个消息样本,分析它们的结构,进而编写解析代码。 另外,引用[3]提到PHP版的采集工具,但用户可能更倾向于使用Python,因为示例中的代码是Python的。不过不管用什么语言,核心步骤应该是类似的:建立WebSocket连接,接收消息,反序列化protobuf数据,提取所需字段。 需要注意的是,快手可能会有反爬机制,比如WebSocket连接需要携带正确的headers或token,这可能需要在建立连接时处理。比如,引用[1]提到wss直连项目需要处理加密参数,可能需要生成signature或其他认证信息。这可能涉及到分析JavaScript代码,找到生成这些参数的逻辑,然后在Python中模拟实现。 另外,保持连接的稳定性也很重要,可能需要处理重连机制,避免因为网络波动导致中断。还有,处理protobuf数据时,需要对应的.proto文件来正确反序列化,如果快手更新了协议,可能需要更新这些定义文件。 用户可能需要使用像websockets库来处理WebSocket连接,用protobuf库来解析数据。代码的大致流程可能是:连接WebSocket,循环接收消息,将消息转换为二进制数据,然后用protobuf反序列化,提取弹幕内容等信息。 测试的时候,可能需要进入一个弹幕较多的直播间,这样可以更容易捕获到数据样本进行分析。同时,处理消息时要注意不同消息类型,可能弹幕、礼物、进入房间等消息有不同的结构,需要区分处理。 另外,引用[1]提到的项目可能已经封装了这些步骤,如果用户不想从头开发,可以寻找现有的开源工具或服务,但需要注意遵守平台的规定,避免法律风险。 总结一下,步骤大概是:1. 获取WebSocket连接URL和必要参数;2. 建立连接并接收数据;3. 解析protobuf消息;4. 提取弹幕内容。每一步都可能遇到挑战,比如参数加密、协议变化等,需要逐一解决。</think>### 快手直播弹幕数据抓取实现步骤 #### 一、技术原理分析 快手直播弹幕通过**WebSocket协议**传输,数据采用**protobuf序列化**压缩[^2]。核心流程如下: 1. 浏览器通过WebSocket连接到直播弹幕服务器(wss协议) 2. 服务器持续推送经过protobuf序列化的二进制数据 3. 客户端需要反序列化二进制数据解析出可读文本 #### 二、具体实现方法 **1. 获取WebSocket连接参数** ```python # 示例Python代码框架 import websockets async def connect_live(room_id): wss_url = f"wss://live-ws-pg.kuaishou.com/websocket?roomId={room_id}" headers = { "User-Agent": "Mozilla/5.0", "Cookie": "your_cookie_here" } async with websockets.connect(wss_url, extra_headers=headers) as ws: while True: data = await ws.recv() process_data(data) # 后续处理数据 ``` **2. 解析protobuf数据** 需获取快手直播的proto定义文件(如`Message.proto`),使用protobuf编译器生成解析类: ```protobuf // 示例proto结构(需根据实际协议补充) message LiveMessage { string content = 1; UserInfo user = 2; int64 timestamp = 3; } ``` **3. 实时数据解析** ```python from google.protobuf import json_format def process_data(binary_data): message = LiveMessage() message.ParseFromString(binary_data) print(json_format.MessageToDict(message)) # 转为可读格式 ``` #### 三、关键注意事项 1. **参数加密**:需获取`did`、`kpn`等签名参数,可通过浏览器调试工具捕获 2. **心跳维持**:需定时发送心跳包保持连接 3. **数据过滤**:弹幕消息类型通常为`WebCommentFeed` ####
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值