【JetPack5.0.1特供版】Jetson NX刷机记录(详细)

背景

JetPack4.6.2里面的TensorRT不支持16G版本的NX,就很烦,看nvidia官网有人员回复说可以试试JetPack5.0.1,那我就试试呗,试试就逝世。行吧,问题稍微有点小多,这次详细点记录下。如果没有特殊需求建议不要用这个版本

过程

  1. 下载VMware,我用的16, 下载ubuntu镜像,我使用的是18.04,创建虚拟机,注意下存储空间建议80G以上,要存东西的。修改镜像源为国内源 (个人是用界面方式修改镜像源,懒得复制粘贴还可以有很多选择)
  2. 下载sdkmanager安装包, 需要有nvidia账号,下载完之后随便放个地方然后打开终端,输入sudo apt install ./xxx.deb进行安装。
  3. 终端输入sdkmanager,然后需要登录nvidia账号,有可能还要更新
  4. 准备NX开发板,手头屏幕键鼠还在用,暂时不插试试命令行。NX开发板断电,用跳线或者杜邦线连接开发板的recovery引脚和地,不同开发板的引脚位置不同,这里看到两种开发板,一种是这个,一种是这个,在这边记录下。随后上电,既进入recovery模式,这时可以把跳线去掉。连接mirco口插usb到电脑。记得设置USB口一直连接虚拟机,不然刷机中途偶尔会断一下每次都要手点连上虚拟机。最近经常碰到虚拟机不跳外设的提示,可以按照如图方式断开或连接:【JetPack5.0.1特供版】Jetson NX刷机记录(详细)_第1张图片
  5. 登录完后,usb连上之后应该就可以识别到开发板了,如图所示【JetPack5.0.1特供版】Jetson NX刷机记录(详细)_第2张图片
    我根据我需求选择JetPack5.0.1,再加上deepstream,然后点击continue进入下一步
  6. 由于我这块NX自身只有16G的EMMC,在外部扩展了块128G的SSD,基本上不能把所有软件全部安装在EMMC上(试过,最后只剩几百兆存储,啥都干不了)。因此接下来到step02之后只选择安装OS,勾选什么的如图,然后点击continue:
    【JetPack5.0.1特供版】Jetson NX刷机记录(详细)_第3张图片
  7. 然后提示输入虚拟机的密码,输入完成后点OK【JetPack5.0.1特供版】Jetson NX刷机记录(详细)_第4张图片7. 然后弹出一些系统基本设置,这里选择手动setup,然后再在下面输入你给自己开发板设置的用户名和密码,我这边随便输了个,然后点击Flash。【JetPack5.0.1特供版】Jetson NX刷机记录(详细)_第5张图片
  8. 然后软件就开始刷了,刷的有点小慢,中途软件自己都提示我等太久了,还要不要继续,害。大概半个小时。然后还要等待开发板自己更新下配置,这个时候风扇起飞,更新完自动重启风扇就正常了。【JetPack5.0.1特供版】Jetson NX刷机记录(详细)_第6张图片
  9. 接下来就要把系统搬到ssd上。想了想还是得插上屏幕键鼠,行吧,暂时拿来搞一下。命令行应该也可以,不过看上去稍微麻烦一点。插上屏幕键鼠之后给开发板连上wifi,然后先格式化硬盘:
    在应用里搜索disks并打开
    选中自己的固态硬盘,进行格式化

    然后点击格式化输入自己的密码
    这就格式化完了,然后点击盘下面的加号,分配16G的free space,点击next
    最后安排个名字,这就把盘安排好了。
  10. 之前连接过wifi了,接下来可以接着不用屏幕键鼠了,暂停虚拟机,用电脑上的mobaxterm打开串口,登录进去,当然直接用键鼠也是一样的,只是跳过这一步:【JetPack5.0.1特供版】Jetson NX刷机记录(详细)_第7张图片
  11. 照着别的教程,敲以下命令,git可能不太好连,多试几次:
cd ~/Documents
git clone https://github.com/jetsonhacks/rootOnNVMe.git
cd rootOnNVMe
./copy-rootfs-ssd.sh
./setup-service.sh

一连串下来应该是一气呵成的,中途要输入两次密码。然后sudo reboot重启应该就可以ssd当系统盘了。

  1. 提前修改软件源,后面刷机还需要开发板自己下载一些东西:
sudo vim /etc/apt/sources.list

我这边挑了个用的相对少的源试试。注意JetPack5.0.1是ubuntu20了,后缀是focal,开发板还要带上ports:

deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse

vim之类的不会敲的话,连着屏幕也可以gedit。像我一样没屏幕的话其实也可以和后面的方法结合,用winscp复制一个自己的sources.list到开发板,然后在终端里面复制过去,我就这么干了。修改完之后update就完事儿了。

sudo apt-get update
  1. 重启reboot敲进去之后就可以继续虚拟机了,可能需要参考第三步的图把串口挂到虚拟机上,然后回到第一步,refresh选择nx开发板,continue进去:【JetPack5.0.1特供版】Jetson NX刷机记录(详细)_第8张图片
  2. 在第二步注意不要勾选操作系统,只勾选components,我这边顺带勾了develop tools,然后continue:【JetPack5.0.1特供版】Jetson NX刷机记录(详细)_第9张图片
  3. 输入之前设置的开发板的用户名和密码,ip一般默认的不用改,然后继续【JetPack5.0.1特供版】Jetson NX刷机记录(详细)_第10张图片
  4. 这就开始装软件了,我这边16:50开始装, 还没结束,盲猜六点半 过六点公司网不好了,行吧溜了 第二天来装一会儿好了,网络真坑。【JetPack5.0.1特供版】Jetson NX刷机记录(详细)_第11张图片
  5. 屏幕还被占着,行吧,中断虚拟机,用不到了,接着串口操作。接下来还需要稍微修改一些配置,安装一些软件。烦心事儿就来了,刷完软件风扇就拉满了,搜半天找到个解决方法,记录在这边了,在这边也写一下:
sudo systemctl stop nvfancontrol.service
sudo rm /var/lib/nvfancontrol/status
sudo systemctl start nvfancontrol

之后发现这个只能解决一次,搜一会儿找到个解决方案,写在这边:
随便找个地方新建个脚本文件,我就命名它叫fan_init.sh了:
gedit fan_init.sh,或者vim,输入以下内容:

#!/bin/sh -e
sudo systemctl stop nvfancontrol
sudo rm /var/lib/nvfancontrol/status
sudo systemctl start nvfancontrol 
exit 0

然后保存,移动到/etc/init.d,并进行一系列操作:

sudo mv fan_init.sh /etc/init.d               # 文件move到 /etc/init.d/
sudo chmod 777 /etc/init.d/fan_init.sh              # 修改文件权限
sudo update-rc.d fan_init.sh defaults 99            # 脚本添加到启动脚本 , 99代表的优先级,越高执行的越晚

重启完还是不行,话说这边的修改文件权限有必要嘛。 后来一顿尝试,发现在/etc新建一个空的rc.local再重启就可以了,不明白

  1. 安装pip,修改镜像源,并顺带改一下默认python为python3:
sudo apt-get install python3-pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
python -m pip install --upgrade pip
  1. 接下来是自己的需求,安装onnxruntime-gpu,由于官方zoo还没对应包,我是用之前自己编译的whl文件安装。串口里敲下ifconfig看下wlan0的ip,然后用winscp填ip登进去,把whl文件放到随便目录,然后串口里面cd进去,输入:
pip install ./onnxruntime_gpu-1.12.0-cp38-cp38-linux_aarch64.whl
  1. 接下来winscp搬下自己的代码,跑下自己的测试代码,完事儿,开溜~

你可能感兴趣的:(ubuntu,linux,计算机视觉)