NVIDIA Jetson Xavier NX入门-镜像为jetpack5(2)——系统设置;环境搭建;CUDA;Cudnn配置;Ubuntu&pip&conda换源;miniforge安装

镜像为jetpack5系列:
NVIDIA Jetson Xavier NX入门-镜像为jetpack5(1)——镜像烧写NVIDIA Jetson Xavier NX入门-镜像为jetpack5(2)——系统设置;环境搭建;CUDA;Cudnn配置;Ubuntu&pip&conda换源;miniforge安装NVIDIA Jetson Xavier NX入门-镜像为jetpack5(3)——pytorch和torchvision安装镜像为jetpack4系列:NVIDIA Jetson Xavier NX入门-镜像为jetpack4(1)——镜像烧写NVIDIA Jetson Xavier NX入门-镜像为jetpack4(2)——系统设置;环境搭建NVIDIA Jetson Xavier NX入门-镜像为jetpack4(3)——pytorch和torchvision安装sudo权限、NX开机脚本自启动Jetson xavier NX等Jetson系列开发板设置Python脚本的开机自启动(需要激活conda环境下)

0. 前情提示:NX设备之前没有运行过Jetpack 5.X,那么,在运行新版本的镜像之前,必须先更新QSPI

如何基于基础镜像构建cuda镜像_ubuntu


下载镜像:https://developer.nvidia.com/embedded/jetson-linux-r351 QSPI update instructions:https://docs.nvidia.com/jetson/archives/r35.1/DeveloperGuide/text/SD/FlashingSupport.html?highlight=upgrade%20jetpack#to-upgrade-jetpack-4-x-to-jetpack-5-x-on-jetson-xavier-nx-p3668-0000

如何基于基础镜像构建cuda镜像_如何基于基础镜像构建cuda镜像_02


可以参考博文:

1. NVIDIA Jetson Xavier NX连接显示器、键盘、鼠标;

2. Jetson Xavier NX连接电源后,会自启动;

如何基于基础镜像构建cuda镜像_pip_03


按照设置步骤进行设置即可。

3. 关闭Linux系统的用户登陆密码输入(远程使用,不需要跳过)

(1)Settings;(2)Privacy; (3)Screen Lock

如何基于基础镜像构建cuda镜像_ubuntu_04

3. Linux系统中文输入设置

参考一下博客使用指令sudo apt-get …时如果出现无法定位软件包(Unable to locate package)的情况,首先使用sudo apt-get update指令。sudo apt-get update 参考博客1:在Jetson Xavier NX安装中文输入法(googlepinyin中文输入法) 参考博客2:Jeston Xavier NX 语言设置和中文键盘输入 参考博客3:jetson的ubuntu18.04上安装中文输入法

4. 环境配置:ubuntu-ports换源、添加CUDA环境变量、配置cudnn、python3、pip&换源、jtop查看显卡、miniforge(边缘端anaconda)安装

首先介绍下部分查看系统指令

#驱动版本
head -n 1 /etc/nv_tegra_release
#内核版本
uname -r
#操作系统
lsb_release -i -r
#CUDA版本
nvcc -V
#cuDNN版本
dpkg -l libcudnn8
#opencv版本
dpkg -l libopencv / pkg-config opencv --modversion
#Tensorrt版本
dpkg -l tensorrt

1. ubuntu-ports换源:

换清华源网站:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 选择ubuntu对应版本拷贝。如下是20.04版本镜像源。

#备份原有软件源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vi /etc/apt/sources.list 

#清华源
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse

#更新
sudo apt-get update

或者不用上面的指令 鱼香肉丝一键换源

wget http://fishros.com/install -O fishros && . fishros

2. 添加CUDA环境变量 (jetpack镜像中已经安装cudn、cudnn、tensorrt等)

#cuda
sudo vi ~/.bashrc
#添加
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
#保存并刷新
source ~/.bashrc

3. cudnn 需要配置
可参考博客:NVIDIA Jetson AGX Orin开发环境配置 感谢该博主。(下面这段完全借鉴)
cuDNN的默认安装路径如下:
cudnn head(头文件):/usr/include/cudnn.h cudnn lib (库文件) :/usr/lib/aarch64-linux-gnu/libcudnn*libcudnn*表示所有以libcudnn...开头的文件。把这两部分文件复制cuda路径/usr/local/cuda(路径中还有一个cuda-11文件夹,和cuda一样,自己选一个)。

sudo cp /usr/include/cudnn.h /usr/local/cuda/include
sudo cp /usr/lib/aarch64-linux-gnu/libcudnn* /usr/local/cuda/lib64/

修改文件权限(所有用户都可读,可写,可执行,貌似也可以不进行这一步)

sudo chmod 777 /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

后期可能运行报错:Could not load library libcudnn_cnn_train.so.8等, 解决类似问题的思路与方法 感谢博主:需要使用软连接解决 aarch64-linux

sudo ln -sf /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_adv_train.so.8.6.0 /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_adv_train.so.8
sudo ln -sf /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_ops_infer.so.8.6.0 /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_ops_infer.so.8
sudo ln -sf /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_cnn_train.so.8.6.0 /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_cnn_train.so.8
sudo ln -sf /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_adv_infer.so.8.6.0 /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_adv_infer.so.8
sudo ln -sf /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_ops_train.so.8.6.0 /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_ops_train.so.8
sudo ln -sf /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_cnn_infer.so.8.6.0 /usr/local/cuda/targets/aarch64-linux/lib/libcudnn_cnn_infer.so.8
sudo ln -sf /usr/local/cuda/targets/aarch64-linux/lib/libcudnn.so.8.6.0 /usr/local/cuda/targets/aarch64-linux/lib/libcudnn.so.8

打开cuda目录,用ll命冷查看所有libcudnn*文件的软连接情况,如下所示就没有问题。

如何基于基础镜像构建cuda镜像_如何基于基础镜像构建cuda镜像_05


更新动态链接库

sudo ldconfig

ldconfig命令的用途主要是在默认搜寻目录/lib/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。ldconfig 通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。link,由于已经添加过了环境变量,所以重启后就不用再更新动态链接库了。

测试一个 cudnn 的 demo:

sudo cp -r /usr/src/cudnn_samples_v8/ ~/
cd ~/cudnn_samples_v8/conv_sample
sudo make clean
sudo make
./conv_sample

cudnn_samples_v8 里面有七八个 demo,但是有个别跑不通,比如 mnistCUDNN ,目前不清楚原因,不过有能跑通的就好。下面是 conv_sample demo 的输出结果:

如何基于基础镜像构建cuda镜像_pip_06

4. pip pip换源

#查看python版本是否最新
sudo apt-get install python3-pip python3-dev
python3 -m pip install --upgrade pip

pip换源:PyPI 镜像使用帮助

pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

5. Jetson-stats 查看显卡状态(类似于win系统的nvidia-smi)

#查看系统使用情况,类似top
sudo -H pip3 install -U jetson-stats #pip不行的情况下使用pip3
#1、pip是python的包管理工具,pip和pip3版本不同,都位于Scripts\目录下:
#2、如果系统中只安装了Python2,那么就只能使用pip。
#3、如果系统中只安装了Python3,那么既可以使用pip也可以使用pip3,二者是等价的。
#4、如果系统中同时安装了Python2和Python3,则pip默认给Python2用,pip3指定给Python3用。
#5、重要:虚拟环境中,若只存在一个python版本,可以认为在用系统中pip和pip3命令都是相同的

#使用
jtop

如果出现错误:No module named ‘setuptools’
使用指令:sudo -H pip3 install -U setuptools
再运行:sudo -H pip3 install -U jetson-stats
又出现错误:No module named ‘setuptools.command.build’
使用指令:sudo -H pip3 uninstall setuptools (没错,就是卸载)
再次运行:sudo -H pip3 install -U jetson-stats(卸载后直接运行该指令,不用再安装setuptools)
可能就安装成功了,应该是环境变量导致的,很奇怪。安装setuptools(sudo下)后再卸载就运行成功了。

5. miniforge安装教程

(1)先到miniforge的官方下载地址下载对应的sh文件:conda-forge
/miniforge
别下错了,例如我下载的是Miniforge-pypy3-24.1.2-0-Linux-aarch64.sh
,代表适用于arrch64架构下的Linux系统。(ARM64对应32位和64位分为arrch32和arrch64)
(2)进入到miniforge的sh文件所在目录,右键打开Terminal,输入以下命令进行安装:

sh Miniforge-pypy3-24.1.2-0-Linux-aarch64.sh

(3)安装完毕后,需要添加环境变量。(conda activate报错或者不出现(base)时)
如会出现bash:conda Command not found的错误。vim编辑器按i是进入编辑模式,编辑完毕后按ESC退出编辑模式,再输入:wq!是保存并退出。

# 编辑环境变量
vim ~/.bashrc
# 增加环境变量
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/liuyang/miniforge-pypy3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/liuyang/miniforge-pypy3/etc/profile.d/conda.sh" ]; then
        . "/home/liuyang/miniforge-pypy3/etc/profile.d/conda.sh"
    else
        export PATH="/home/liuyang/miniforge-pypy3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

# 激活环境变量
source ~/.bashrc
# 显示(base)
source activate  # 没有显示(base)时使用

(4)更换下载源(清华源出问题,换成北京外国语大学开源软件镜像站)

conda config --prepend channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/
conda config --prepend channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes

(5)如果需要关闭conda环境

如何基于基础镜像构建cuda镜像_pip_07


输入指令:

conda config --set auto_activate_base false

6. conda新建虚拟环境

jetpack5的对应torch包基本上都是基于python3.8

如何基于基础镜像构建cuda镜像_bc_08

如何基于基础镜像构建cuda镜像_如何基于基础镜像构建cuda镜像_09


对应网址:PyTorch for Jetson

conda create -n yolov5 python=3.8

激活新建环境:

conda activate yolov5