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
下载镜像: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
1. NVIDIA Jetson Xavier NX连接显示器、键盘、鼠标;
2. Jetson Xavier NX连接电源后,会自启动;
按照设置步骤进行设置即可。
3. 关闭Linux系统的用户登陆密码输入(远程使用,不需要跳过)
(1)Settings;(2)Privacy; (3)Screen Lock
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*
文件的软连接情况,如下所示就没有问题。
更新动态链接库
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
的输出结果:
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环境
输入指令:
conda config --set auto_activate_base false
6. conda新建虚拟环境
jetpack5的对应torch包基本上都是基于python3.8
对应网址:PyTorch for Jetson
conda create -n yolov5 python=3.8
激活新建环境:
conda activate yolov5