美文网首页
Jetson Nano环境配置

Jetson Nano环境配置

作者: 酵母小木 | 来源:发表于2021-04-25 21:40 被阅读0次

    本周用了5天的时间去完成Jetson Nano的环境配置工作,差点就控制不了自己的情绪啦,但是好在书籍拯救了我,阅读是人生的必选项:不要用虚假的积极姿态去消极地对抗,以此来显示自己的付出和工作,积极地解决它,以更加平和的心态去面对它,时刻朝着最优项前进!“绝不让任何人或事将你变成一个残废!”

    1. 系统配置

    事情的起因是由于实验室需要对一个Nano(A01版本)平台进行更换,需要让原有的代码能够在新的Nano平台(B01版本)上顺利运行。

    1.1. 系统配置

    首先是系统配置问题,最简单的方法是将原有的系统直接备份,在新的板子上复原,这种方式是最简单的,能够直接避免相关软件和环境的配置;其次则是直接在新的板子上安装新的系统,重新配置环境和安装软件,有点繁琐。

    • 使用dd命令完成系统的备份
    $ sudo dd if=/dev/mmcblk0 of=/media/nano/SATA /nano.img bs=1M status=progress
    

    其中

    • /dev/mmcblk0NanoTF卡类型的第一个块设备;
    • /dev/mmcblk1NanoTF卡类型的第二个块设备;
    • /dev/mmcblk0p1是第一个块设备的第一个分区;
    • /dev/mmcblk0p2是第一个块设备的第二个分区;
    • /dev/sda是系统的第一个磁盘;
    • /dev/sdb是系统的第二个磁盘;
    • /dev/sda1是第一磁盘的第一个分区;
    • /dev/sda2是第一磁盘的第二个分区;
    $ sudo dd if=备份区域 of=存储区域 bs=读入和输出的区块大小 status=显示写入进度
    # `Nano`采用的是`TF`卡存储方式,以及外接`U盘`两种存储方式
    @ `if=filename`对应的是需要备份的`TF`卡块设备
    @ `of=filename`对应的是 `U盘`的存储区域和文件名
    @  `bs`=区块大小,用于设置读入或输入的块大小,对备份速度有影响
    @ `status`=显示写入进度,用于设置写入进度
    

    由于TF卡的内存有限,一般直接备份,备份的镜像和TF卡的大小是相同的,所以原有的TF卡必然是装不下的,这时候就需要将备份的镜像备份到U盘中。亦或者采用下面这种方式,在创建镜像的同时对镜像进行压缩。

    sudo dd if=/dev/mmcblk0 bs=1M status=progress | gzip > /media/nvidia/SATA/nano.img.gz
    

    即便进行了压缩也压缩不到哪里去,建议用一个大一点的移动硬盘或者是U盘直接对镜像进行备份,不建议用同等大小的存储设备进行备份,时间还是挺久的,32GTF卡大概需要30分钟左右!

    • 使用dd命令完成系统的备份

    借助上面的操作,已经将Nano的镜像拷贝到U盘,接下来就是将镜像直接拷贝到Ubuntu系统下,然后将镜像复原到TF上(当然也可以直接拷贝到TF存储设备上,但我没试过,不知道行不行,可以试一试),也可以通过官方的工具balenaEtcher软件工具直接将镜像刷写到TF卡中(建议采用该方法),不管哪种方法,需要耗费的时间都是巨大的,十分消磨一个人的经历和耐心!刷写完系统之后,可以先在旧的Nano板子上进行TF卡插入试验,看看系统能不能启动,然后再插入到新的板子上进行试验。存在一些特殊情况,由于系统的硬件支持不同,会导致过去的系统镜像在新的板子上无法启动。

    $ sudo dd if=/path/nano.img  of=/dev/sda bs=1M status=progress
    # 对于压缩镜像的方法
    $ gzip -d /path/nano.img.gz | sudo dd of=/dev/sda bs=1M status=progress
    
    • 直接从官网下载相应的版本镜像,按照官方教程进行刷写

    如果事情通过之前的步骤就已经解决了,也就不需要之后的步骤啦,很明显,过程是曲折的,由于A01版本的系统与B01的硬件支持不同,所以刷写的系统镜像能够在原有的板子上完美启动,一切正常,但是到了新的板子就卡在Nvidia开机画面上!所以还是老实地按照官方教程来吧!倒也简单,下载官方镜像和刷写工具,然后将镜像刷写到TF卡中,就是这么简单的两步,开机之后对系统进行设置!默认设置就行!

    1.2. 环境配置

    • 风扇支持
    cd /etc
    sudo touch rc.local
    sudo chmod u+x rc.local
    sudo gedit rc.local
    # 填入如下内容,255风速最大,0最小
    #!/bin/bash
    sleep 10
    sudo /usr/bin/jetson_clocks
    sudo sh -c 'echo 255 > /sys/devices/pwm-fan/target_pwm'
    

    1. 自动调节风扇程序项目
    2. 项目中文介绍
    3. 自动控制风速

    • 增加swap空间
    + 生成swapfile文件
    $ sudo fallocate -l 4G /var/swapfile
    $ sudo chmod 600 /var/swapfile
    $ sudo mkswap /var/swapfile
    $ sudo swapon /var/swapfile
    + 设置为自动启用swapfile
    $ sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'
    + 建议重启
    

    亦或是采用如下方式:

    sudo fallocate -l 4G /swapfile   # 创建swap分区,分区大小设置为4G,可自己调节
    sudo chmod 600 /swapfile         # 修改swap分区使用权限,只允许root用户访问
    sudo mkswap /swapfile            # 将文件标记为swap空间
    sudo swapon /swapfile            # 启用swap空间,关机再开机后,需要再次利用此命令启用swap空间
    free -h                          # 验证swap空间是否可用
    
    • 更换系统源(清华源)
    + 备份原有源
    $ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak  
    + 修改源
    sudo gedit /etc/apt/sources.list
    + 覆盖
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
    deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
    deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
    deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
    deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
    deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
    + 更新和升级
    sudo apt-get update
    sudo apt-get upgrade
    
    • 烦人的drpkg warnning提醒
      直接采用sudo apt auto remove,虽然大家都说这条指令是新手杀手,但是由于我是新装系统,所以不在乎,大不了重装,但是之后更换源,能够有效解决这一问题!

    1.3. 软件配置

    • 谷歌拼音输入法
    + 安装和设置
    https://blog.csdn.net/qq_33475105/article/details/106177082
    + 解决候选字符显示的问题
    https://blog.csdn.net/qq_21397217/article/details/52447263
    + 最后重启Nano,就可以正常使用谷歌输入法
    
    • 系统资源监控Jtop
    + 安装pip3
    $ sudo apt-get install python3-pip python3-dev
    + 安装jtop
    $ sudo -H pip3 install -U jetson-stats
    + 重启
    $ sudo jtop
    
    $ xrandr --fb 1280x720
    

    2. ROS安装

    今天太晚了,不想再写啦!安装ROS,按照官网安装教程就行啦!关于安装可能遇到的问题,主要有几点提醒

    1. 建议设置清华的源
    2. 建议安装基础版本ROS,需要的相关包,可以后期进行安装
    sudo apt install ros-melodic-ros-base
    
    1. 建议选择一个网络环境较好的地方
    2. 建议挂上梯子
    3. sudo rosdep initrosdep update出错的解决方案

    该问题大多数是由于网络问题导致的,一般会修改一下几个文件:

    • 手动添加20-default.list
    sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list
    
    + 添加如下内容
    # os-specific listings first
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
    
    # generic
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
    yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
    gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
    
    # newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
    
    • hosts文件
    $ sudo gedit /etc/hosts
    + 在hosts文件末尾添加如下内容,这个IP地址经常变化,需要自己去查找
    151.101.84.133  raw.githubusercontent.com
    
    • resolv.conf文件
    sudo gedit /etc/resolv.conf
    + 添加如下内容,意义不大
    nameserver 8.8.8.8 #google域名服务器
    nameserver 8.8.4.4 #google域名服务器
    

    【注】如果上述方案都不行,建议找个网络好点的地方,或者是啥手机热点之类的!最终结果如下,则表明初始化成功啦

    reading in sources list data from /etc/ros/rosdep/sources.list.d
    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml
    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
    Hit https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
    Hit https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml
    Query rosdistro index https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml
    Skip end-of-life distro "ardent"
    Skip end-of-life distro "bouncy"
    Add distro "crystal"
    Add distro "dashing"
    Add distro "eloquent"
    Skip end-of-life distro "groovy"
    Skip end-of-life distro "hydro"
    Skip end-of-life distro "indigo"
    Skip end-of-life distro "jade"
    Add distro "kinetic"
    Skip end-of-life distro "lunar"
    Add distro "melodic"
    Add distro "noetic"
    updated cache in /home/eco/.ros/rosdep/sources.cache
    

    3. OpenCV编译安装

    Jetpack情况是自带OpenCV4的,为了让个板子的版本一致,安装了OpenCV,还是基本步骤,先下载OpenCV主安装源码和附加模块的源码.

    # 安装依赖,有些库可能安装不上,不用管
    echo "** Install requirement"
    sudo apt-get update
    sudo apt-get install -y build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
    sudo apt-get install -y python2.7-dev python3.6-dev python-dev python-numpy python3-numpy
    sudo apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
    sudo apt-get install -y libv4l-dev v4l-utils qv4l2 v4l2ucp
    sudo apt-get install -y curl
    sudo apt-get update
     
    # 下载源码
    echo "** Download opencv-4.0.0 source code"
    https://github.com/opencv/opencv/archive/4.0.0.zip -o opencv-4.0.0.zip
    https://github.com/opencv/opencv_contrib/archive/4.0.0.zip -o opencv_contrib-4.0.0.zip
    # 下载之后,将两个压缩文件解压在统一目录下
    cd opencv-4.0.0/
     
    echo "** Building..."
    mkdir build
    cd build/
    # 配置
    cmake -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_CUDA=ON -D CUDA_ARCH_BIN="5.3" -D CUDA_ARCH_PTX="" -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.0.0/modules -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_opencv_python2=ON -D BUILD_opencv_python3=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
    # -D OPENCV_GENERATE_PKGCONFIG=ON一定要添加
    # 还有几个小问题,我忘啦!
    # 编译,建议采用单线程,同时建议夸大自己的SWAP空间为6G
    make
    sudo make install
    sudo apt-get install -y python-opencv python3-opencv
     
    echo "** Install opencv-4.0.0 successfully"
    
    • OpenCV版本配置问题
    sudo gedit /etc/bash.bashrc
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH
    

    编译出现的问题

    参考资料

    1. Jetson Nano的SD卡镜像
    2. Jetson-nano 使用中的一些技巧

    相关文章

      网友评论

          本文标题:Jetson Nano环境配置

          本文链接:https://www.haomeiwen.com/subject/dnadrltx.html