基于Jetson Nano的镜像配置jetbot

本文记录自己烧录jetson nano镜像,逐步搭建Jetbot环境的过程。是自己的踩的坑,提供参考。依据的官方文档如下:
https://github.com/NVIDIA-AI-IOT/jetbot/wiki/Create-SD-Card-Image-From-Scratch

1. 烧录Jetson Nano镜像

参考Getting Started With Jetson Nano Developer Kit
我用的是其中windows下的方法。
注意:

  • 安装时使用的 username / password 为 jetbot / jetbot。(应该没有必要)
  • 设置成自动登录。(log in automatically)
  • Ubuntu 软件源修改等步骤不赘述。

2. 设置i2c权限

$ sudo usermod -aG i2c $USER

3.安装 pip 以及其他 python 依赖

$ sudo apt-get update
$ sudo apt install python3-pip python3-pil
$ sudo pip3 install --upgrade numpy 

4. 安装 TensorFlow

文档中给出的参考:TensorFlow For Jetson Platform
我的安装步骤如下:

#Install HDF5 as required by TensorFlow:
$ sudo apt-get install libhdf5-serial-dev hdf5-tools
# Install pip3:
$ sudo apt-get install python3-pip
# Install the following packages:
$ pip3 install -U pip
$ sudo apt-get install zlib1g-dev zip libjpeg8-dev libhdf5-dev 
$ sudo pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker grpcio six mock requests gast h5py astor termcolor

Jetson Download Center中可以找到对应的TensorFlow的whl安装文件。
我下载的是tf_gpu-1.13.1+nv19.4-py3(安装时nv19.5还没有,编辑本文时刚出)。
Jetson Download Center TensorFlow download resource

$  sudo pip3 install ~/Downloads/tensorflow_gpu-1.13.1+nv19.4-cp36-cp36m-linux_aarch64.whl

5. 安装 PyTorch

找不到文档中给出的(torch-1.0.0a0+18eef1d-cp36-cp36m-linux_aarch64.whl),
但顺着Jetson Nano的wiki找到了PyTorch for Jetson Nano—— PyTorch 1.1的安装指导。根据python3的方式:
PyTorch for Jetson Nano

Chrome浏览器下载torch-1.1.0a0+b457266-cp36-cp36m-linux_aarch64.whl
https://nvidia.box.com/shared/static/veo87trfaawj5pfwuqvhl6mzc5b55fbj.whl
这一步是因为网络不好总是中断,索性先下载下来。

$ sudo pip3 install ~/Downloads/torch-1.1.0a0+b457266-cp36-cp36m-linux_aarch64.whl
$ sudo pip3 install torchvision

6. 安装 traitlets

Install traitlets (master, to support the unlink() method)

$ sudo python3 -m pip install git+https://github.com/ipython/traitlets@master

7.安装 jupyter lab

$ sudo apt install nodejs npm
$ sudo pip3 install jupyter jupyterlab     #不要添加--user参数
$ sudo jupyter labextension install @jupyter-widgets/jupyterlab-manager
$ sudo jupyter labextension install @jupyterlab/statusbar
$ jupyter lab --generate-config
$ jupyter notebook password                #设置jupyter notebook密码

8.安装 jetbot repo

$ cd
$ sudo apt install python3-smbus
$ git clone https://github.com/NVIDIA-AI-IOT/jetbot
$ cd jetbot
$ sudo apt-get install cmake
$ sudo python3 setup.py install

9.配置 jetbot service

cd jetbot/utils
python3 create_stats_service.py
sudo mv jetbot_stats.service /etc/systemd/system/jetbot_stats.service
sudo systemctl enable jetbot_stats
sudo systemctl start jetbot_stats
python3 create_jupyter_service.py
sudo mv jetbot_jupyter.service /etc/systemd/system/jetbot_jupyter.service
sudo systemctl enable jetbot_jupyter
sudo systemctl start jetbot_jupyter

这里使用了两个python脚本制作并添加了两个service,且设置成开机启动。
jetbot_stats.service 控制oled显示ip、cpu占用、内存占用等信息。
jetbot_jupyter.service 启动jupyter lab。
如果jetbot_jupyter.service出现问题则无法通过浏览器使用jupyter lab。
影响后面运行Examples。
这里可以使用 systemctl 相关命令验证 jetbot_jupyter、jetbot_stats 两个service 是否正常运行。

# 列出所有加载失败的 Unit
$ systemctl list-units --failed
# 列出正在运行的 Unit
$ systemctl list-units
# 查看某个 Unit 的日志
$ sudo journalctl -u jetbot_jupyter.service
# 实时滚动显示某个 Unit 的最新日志
$ sudo journalctl -u jetbot_jupyter.service -f

10.添加 swapfile

因为Jetson Nano只有4GB内存,很容易内存耗尽,导致进程被强制kill。
有必要添加swapfile,这里官方文档添加了4GB的swapfile。

$ sudo fallocate -l 4G /var/swapfile     #4G 即为swapfile的大小
$ sudo chmod 600 /var/swapfile
$ sudo mkswap /var/swapfile
$ sudo swapon /var/swapfile
$ sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'

也可以使用installSwapfile.sh脚本来创建,
参考:github.com/JetsonHacksNano/installSwapfile
本质操作完全一样。

11. JetBot notebooks 复制到 home 路径下

$ cp -r ~/jetbot/notebooks ~/Notebooks

至此配置完成,重启即可。
oled灯会亮起。
可以跟着wiki Examples继续学习。

另附,直接烧录jetbot镜像

另外,直接烧录nvidia提供的已经配置好的jetbot镜像方法参考这个官方文档:
https://github.com/NVIDIA-AI-IOT/jetbot/wiki/Software-Setup
直接烧录的方法建议直接下载63GB版本的镜像,64GB本人的64G卡(SanDisk 64GB A1)提示空间不足。

如有错误,还请指正。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐