【问题记录】Mellanox PCIe分析工具neohost执行get_device_performance_counters.py报错No JSON object?(安装jsonschema)

背景

本文记录了Mellanox PCIe分析工具在安装后遇到没有JSON输出的问题处理记录。改文章会死第二次安装,相对比较快,更详细的过程参考第一次的兄弟篇文章。
另外本文主要遇到的是python版本、jsonschema的python工具包问题。

报错

可以看到没有其他报错

-E- No JSON object could be decoded

在这里插入图片描述

问题解决

结合以前的经验有jsonschema等问题。更多参考兄弟篇:【问题记录】Mellanox网卡性能调试工具neohost1.5.0安装遇到的问题记录
以及回忆到安装neohost的时候,有一些轻微报错:
在这里插入图片描述
那么重新安装一些jsonschema以及重新安装rpm,具体参考兄弟篇。
本文处理了几个地方:

yum install python2
sudo alternatives --config python

rpm -ivh neohost-backend-1.5.0-102.x86_64.rpm 

#注意需要老版本的jsonschema,并且国内镜像源建议用阿里云
# 设置pip国内镜像源
mkdir -p ~/.pip
touch ~/.pip/pip.conf
vim ~/.pip/pip.conf
#添加下面的内容:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com

# 安装json模块,一定要先安装,避免neohost安装执行中有些失败
pip2 install jsonschema==2.6.0

# 安装neohost sdk
rpm -ivh neohost-* --force #因为安装过一次,所以要重新安装

其他

安装报错:IOError: [Errno 2] No such file or directory: '/tmp/pip-build-P5zLhv/jsonschema/setup.py'

该问题上篇文章提到过,是因为jsonschema版本太新,解决办法用老的版本:pip install jsonschema==2.6.0
在这里插入图片描述

安装老版本jsonschema报错:No matching distribution found for jsonschema==2.6.0

在这里插入图片描述
解决办法,使用国内镜像源:

# 设置pip国内镜像源
mkdir -p ~/.pip
touch ~/.pip/pip.conf
vim ~/.pip/pip.conf
#添加下面的内容:
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com

# 安装json模块,一定要先安装,避免neohost安装执行中有些失败
pip2 install jsonschema==2.6.0

实操

重新配置json后安装效果:
在这里插入图片描述
全量日志:

[root@localhost ~]# rpm -ivh neohost-* --force
warning: neohost-backend-1.5.0-102.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 6224c050: NOKEY
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / in
<think>我们正在处理一个关于在Ubuntu22.04上在线安装特定版本Mellanox网卡驱动(MLNX_OFED_LINUX-24.10-2.1.8.0)的问题。根据用户需求,我们需要在线安装,即不预先下载驱动包,而是通过命令直接从Mellanox仓库获取并安装。步骤:1.确认系统版本:Ubuntu22.04,架构x86_64。2.添加Mellanox的APT仓库,以便在线安装。3.由于用户指定了特定版本(24.10-2.1.8.0),我们需要确保安装该版本。注意:MellanoxOFED驱动通常通过其网站提供下载,但也可以配置其仓库进行在线安装。然而,特定版本的驱动可能不在主仓库中,因此我们需要添加包含该版本的仓库。根据Mellanox官方文档,我们可以通过以下步骤进行在线安装:首先,导入Mellanox公钥:wget-qO-https://www.mellanox.com/downloads/publicKey/repo/mlnx_ofed/DEB-GPG-KEY-Mellanox|sudoapt-keyadd-然后,添加仓库。但注意,仓库地址需要根据版本和系统进行调整。然而,用户指定的版本是24.10,我们可以使用以下仓库:对于Ubuntu22.04,仓库地址为:https://linux.mellanox.com/public/repo/mlnx_ofed/latest/ubuntu22.04/但是,这里有一个问题:用户需要的是特定版本(24.10-2.1.8.0),而上述仓库是“latest”(最新)。因此,我们需要找到包含该特定版本的仓库。实际上,Mellanox的仓库结构允许我们指定版本。我们可以使用以下格式的仓库地址:https://linux.mellanox.com/public/repo/mlnx_ofed/<version>/ubuntu22.04/因此,对于版本24.10-2.1.8.0,我们可以将<version>替换为24.10-2.1.8.0。步骤:1.添加仓库源:echo"debhttps://linux.mellanox.com/public/repo/mlnx_ofed/24.10-2.1.8.0/ubuntu22.04/jammymain"|sudotee/etc/apt/sources.list.d/mellanox.list2.更新软件包列表:sudoaptupdate3.安装整个驱动包(或者根据需要安装特定包):sudoaptinstallmlnx-ofed-all但是,请注意,有时候Mellanox可能会提供单独的包,但通常我们安装整个套件。另外,在安装前,我们需要确保系统满足依赖,并且可能需要卸载任何现有的OFED驱动。官方推荐在安装前卸载任何旧版本的MellanoxOFED驱动:sudo/usr/sbin/mlnx_uninstall.sh如果没有该脚本,则忽略。因此,完整步骤:步骤1:卸载旧版本(如果有)步骤2:添加仓库步骤3:更新并安装但是,我们也可以选择使用Mellanox提供的安装脚本(通常用于离线安装包)进行安装,但用户要求在线安装,所以我们使用apt。然而,注意:Mellanox的在线仓库通常只提供最新版本,特定版本可能不在仓库中。因此,我们需要确认该版本在仓库中存在。我们可以先尝试访问仓库地址:https://linux.mellanox.com/public/repo/mlnx_ofed/24.10-2.1.8.0/ubuntu22.04/如果存在,则继续;如果不存在,可能需要使用离线安装包。但用户要求在线安装,所以我们假设该版本在仓库中存在(因为版本号比较新,24.10是2024年的版本,应该存在)。如果不存在,我们可以尝试使用离线安装包,但用户明确要求在线安装。因此,我们按照以下步骤:1.卸载旧版本(如果有):if[-x/usr/sbin/mlnx_uninstall.sh];thensudo/usr/sbin/mlnx_uninstall.shfi2.添加GPG密钥:wget-qO-https://www.mellanox.com/downloads/publicKey/repo/mlnx_ofed/DEB-GPG-KEY-Mellanox|sudoapt-keyadd-3.添加仓库:echo"debhttps://linux.mellanox.com/public/repo/mlnx_ofed/24.10-2.1.8.0/ubuntu22.04/jammymain"|sudotee/etc/apt/sources.list.d/mellanox.list4.更新仓库:sudoaptupdate5.安装:sudoaptinstallmlnx-ofed-all6.安装完成后,需要重启服务器以使驱动生效。注意:在安装过程中,可能会提示安装一些依赖,通常apt会自动处理。但是,有时Mellanox驱动需要编译内核模块,因此需要安装当前内核的头文件。在Ubuntu22.04上,可以通过以下命令安装:sudoaptinstalllinux-headers-$(uname-r)安装mlnx-ofed-all之前,最好先安装好内核头文件。因此,我们调整步骤:步骤5前:确保内核头文件已安装sudoaptinstalllinux-headers-$(uname-r)然后步骤5:安装mlnx-ofed-all另外,如果添加仓库后更新失败,可能是仓库地址错误或不可用。此时需要检查仓库地址是否正确。我们可以通过浏览器访问该仓库地址,或者使用wget或curl检查。如果上述方法不行,我们可以考虑使用Mellanox提供的安装脚本进行在线安装Mellanox提供了一个名为mlnxofedinstall的脚本,它可以自动下载并安装。但是,这个脚本通常包含在离线安装包中,所以我们需要先下载离线安装包?这不符合在线安装的要求。因此,我们还是优先使用仓库安装。总结步骤:1.卸载旧版本(如果有)2.安装当前内核的头文件3.添加Mellanox仓库的GPG密钥4.添加特定版本的仓库源5.更新并安装注意:如果用户没有指定版本,我们可以使用最新版本,但这里指定了版本。另外,如果用户没有root权限,需要sudo。我们按照这个步骤来写回答。同时,生成相关问题。</think>### 在Ubuntu 22.04上在线安装MLNX_OFED_LINUX-24.10-2.1.8.0驱动的步骤 #### 1. **卸载旧版驱动(如有)** 若系统存在旧版Mellanox驱动,需先卸载以避免冲突: ```bash sudo /usr/sbin/mlnx_uninstall.sh # 官方卸载脚本[^1] ``` #### 2. **安装依赖项** 确保系统工具和内核头文件已安装: ```bash sudo apt update sudo apt install -y dkms linux-headers-$(uname -r) build-essential curl ``` #### 3. **添加Mellanox官方仓库** 导入GPG密钥并添加APT仓库: ```bash curl -L https://www.mellanox.com/downloads/publicKey/repo/mlnx_ofed/DEB-GPG-KEY-Mellanox | sudo apt-key add - echo "deb https://linux.mellanox.com/public/repo/mlnx_ofed/24.10-2.1.8.0/ubuntu22.04/ jammy main" | sudo tee /etc/apt/sources.list.d/mellanox.list sudo apt update ``` #### 4. **在线安装驱动** 安装指定版本的驱动套件: ```bash sudo apt install -y mlnx-ofed-all # 自动解析依赖[^2] ``` #### 5. **验证安装** 检查驱动状态和网卡识别: ```bash /etc/init.d/openibd restart # 重启服务 ibv_devinfo # 查看InfiniBand设备信息 ethtool -i mlx5_0 # 检查以太网驱动版本 ``` #### 6. **加载内核模块** 确保驱动模块正确加载: ```bash sudo modprobe mlx5_core # 加载核心模块 dmesg | grep mlx5 # 查看内核日志 ``` > **关键注意事项**: > - **在线安装依赖仓库可用性**:若仓库连接失败,需检查[官方仓库状态页](https://linux.mellanox.com/public/repo/mlnx_ofed/)[^3]。 > - **版本兼容性**:确保驱动版本`24.10-2.1.8.0`与Ubuntu 22.04内核(通常为`5.15.x`)兼容。 > - **安全启动处理**:若启用Secure Boot,需手动签名DKMS模块[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值