手机版 欢迎访问it开发者社区(www.mfbz.cn)网站

当前位置: > 开发

jetson nano 创建自己的img镜像

时间:2021/6/10 17:09:40|来源:|点击: 次

介绍
本文将指导您逐步为您的 NVIDIA Jetson nano 板创建一个最适合您的项目的简约的基于 Ubuntu 的映像。

为什么要从头开始构建映像而不是使用官方映像?
首先,为了好玩。从头开始构建东西总是很有趣,因为你总是在这个过程中学到一些东西。其次,官方镜像很大(超过 5GB 😱),里面装满了很多不必要的预装包(ubuntu-desktop、浏览器……),占用了大量的磁盘空间和内存。因此,让我们创建一个干净简约的图像。

下载脚本
在开始之前,让我们首先克隆我放置所有需要的脚本的存储库。

$ git clone https://github.com/pythops/jetson-nano-image
$ cd jetson-nano-image

创建一个 rootfs
我们将使用该脚本create-rootfs.sh创建一个基本的 rootfs。首先,我们定义要构建它的位置。这是通过定义环境变量来完成的$JETSON_ROOTFS_DIR。如果不退出,路径将被创建。

$ export JETSON_ROOTFS_DIR=/path/to/rootfs

然后我们通过运行以下命令来构建 rootfs

$ sudo -E ./create-rootfs.sh
ROOTFS_DIR: ~/jetson-rootfs
Installing the dependencies...  [OK]
Creating rootfs directory...    [OK]
Downloading the base image...   [OK]
Run debootstrap first stage...  [OK]
Run debootstrap second stage... [OK]
Success!

sudo 的 -E 选项保留环境变量

定制
现在我们有了一个基本的 rootfs,我们将使用我最喜欢的工具之一对其进行自定义:Ansible. 对于这一步,您需要在工作站中安装 Ansible。如果不是这种情况,只需运行此命令即可

$ pip install --user ansible

这个 Ansible 角色将做 3 件事: * 安装一些基本工具(ssh、systemd、sudo …) * 设置基本配置(语言环境、网络 …) * 添加新用户:pythops

您可以按如下方式运行剧本

$ cd ansible
$ sudo -E $(which ansible-playbook) jetson.yaml

随意调整此角色以满足您的需求。

创建图像
现在我们自定义了 rootfs,我们将使用脚本create-image.sh来创建我们的最终图像。在我们构建映像之前,您需要定义板的类型。目前支持的开发板有Jetson Nano和Jetson Nano 2GB。

要定义板的类型,您需要设置一个名为$JETSON_NANO_BOARD如下的环境变量:

对于 Jetson nano 板

export JETSON_NANO_BOARD=jetson-nano

对于 Jetson Nano 板 2GB

export JETSON_NANO_BOARD=jetson-nano-2gb

对于 Jetson nano board 4GB only,您可以指定要使用的板型号B01 或A02型号。如果你现在买一块新板,你很可能会得到这个B01模型。

要指定您的模型,您需要定义一个新的环境变量$JETSON_NANO_REVISION,如下所示:

对于B01模型(默认):

$ export JETSON_NANO_REVISION=300

对于A02型号:

$ export JETSON_NANO_REVISION=200

我们还需要使用环境变量定义一个构建目录$JETSON_BUILD_DIR。如果此路径不存在,则将创建该路径。

$ export JETSON_BUILD_DIR=/path/to/build_dir

然后我们构建镜像如下

$ sudo -E ./create-image.sh

如果一切顺利,您将在最后收到此消息

Image created successfully
Image location: /path/to/jetson.img

闪存在 SD 卡上
最后,我们将使用脚本将图像闪存到 SD 卡上flash-image.sh。

插入您的 SD 卡并运行此命令

$ sudo ./flash-image.sh /path/to/jetson.img /dev/sdb
.
.
.
Success !
Your sdcard is ready !

sdcard 路径 /dev/mmcblk0 在您的系统中可能不同。

该脚本将自动调整根分区的大小以占用 sdcard 中的所有可用空间。

恭喜 🎉 现在您可以使用新镜像启动您的开发板了!

Copyright © 2002-2019 某某自媒体运营 版权所有