当前位置: 首页 > news >正文

nvidia系列教程-AGX-Orin系统刷机及备份

目录

前言

一、准备工作

二、AGX Orin 系统刷机步骤

三、AGX Orin 系统备份

总结


前言

        NVIDIA AGX Orin 是一款高性能的嵌入式计算平台,专为边缘计算和 AI 应用而设计。为了确保系统的稳定性和适应不同的应用场景,用户可能需要对 AGX Orin 进行系统刷机和备份操作。本文将详细介绍如何完成这些操作,帮助您更好地管理和维护 AGX Orin 设备。


一、准备工作

在开始刷机和备份之前,请确保您已经准备好以下工具和资源:

  1. NVIDIA Jetson SDK Manager:这是 NVIDIA 提供的刷机工具,可以在 官方页面 下载。
  2. USB 线缆:用于将 AGX Orin 连接到主机电脑。
  3. Ubuntu 系统电脑:建议使用 Ubuntu 18.04 或 20.04 版本作为主机电脑。
  4. 存储设备:用于备份系统镜像的外部存储设备,如 USB 盘或外置硬盘。

二、AGX Orin 系统刷机步骤

        AGX-Orin刷机方式有两种,一种使用官方Jetson SDK Manager刷写方式,使用nvidia提供装刷机软件进行刷机,该方式在第一篇博文中有介绍,本文主要介绍在ubuntu20.04系统中使用命令的方式进行刷机,具体刷机步骤如下:

a、ubuntu20.04工具安装

  ubuntu20.04系统环境配置:在Linux_for_Tegra目录下执行sudo ./tools/l4t_flash_prerequisites.sh脚本,安装ubuntu系统所需的库,脚本内容如下所示:

sudo apt-get update && \
sudo apt-get install -y abootimg \binfmt-support \binutils \cpp \device-tree-compiler \dosfstools \lbzip2 \libxml2-utils \nfs-kernel-server \python3-yaml \qemu-user-static \sshpass \udev \uuid-runtime \whois \openssl \cpio \rsync \zstdSYSTEM_VER="$(grep "DISTRIB_RELEASE" </etc/lsb-release | cut -d= -f 2 | sed 's/\.//')"# Install lz4c utility required for compressing bpmp-fw-dtb.
# For Ubuntu 18.04 and older version, run "sudo apt-get install liblz4-tool".
# For Ubuntu 20.04 and newer version, run "sudo apt-get install lz4".
if [ "${SYSTEM_VER}" -lt 2004 ]; thensudo apt-get install -y liblz4-tool
elsesudo apt-get install -y lz4
fi

        执行以下命令应用Jetson二进制文件,sudo ./apply_binaries.sh脚本位于Linux_for_Tegra目录下:

b、连接 AGX Orin

  • 使用 USB 线缆将 AGX Orin 连接到主机电脑。
  • 将 AGX Orin 置于恢复模式(Recovery Mode)。通常的步骤是先关机,按住恢复按键(Recovery Button),然后按下电源键启动。

c、flash.sh命令刷机

        SDK命令刷机主要是采用flash.sh进行刷机操作,其中flash.sh位于JetPack SDK开发包中,脚本位置在:

flash.sh脚本参数选择如下所示:

cftc@cftc-virtual-machine:~/nvidia/nvidia_sdk/JetPack_5.1.3_Linux_JETSON_AGX_ORIN_TARGETS/Linux_for_Tegra$ ./flash.sh --helpUsage: sudo ./flash.sh [options] <target_board> <rootdev>Where,target board: Valid target board name.rootdev: Proper root device.options:-c <cfgfile> ---------- Flash partition table config file.-d <dtbfile> ---------- device tree file.-f <flashapp> --------- Path to flash application (tegraflash.py)-h -------------------- print this message.-i <enc rfs key file>-- key for disk encryption support.-k <partition id> ----- partition name or number specified in flash.cfg.-m <mts preboot> ------ MTS preboot such as mts_preboot_si.-n <nfs args> --------- Static nfs network assignments<Client IP>:<Server IP>:<Gateway IP>:<Netmask>-o <odmdata> ---------- ODM data.-r -------------------- skip building and reuse existing system.img.-t <tegraboot> -------- tegraboot binary such as nvtboot.bin-u <PKC key file>------ PKC key used for odm fused board.-v <SBK key file>------ Secure Boot Key (SBK) key used for ODM fused board.-w <wb0boot> ---------- warm boot binary such as nvtbootwb0.bin-x <tegraid> ---------- Tegra CHIPID.-B <boardid> ---------- BoardId.-C <cmdline> ---------- Kernel commandline arguments.WARNING:Each option in this kernel commandline getshigher preference over the values set byflash.sh. In case of NFS booting, this scriptadds NFS booting related arguments, if -i optionis omitted.-F <flasher> ---------- Flash server such as cboot.bin.-G <file name> -------- Read partition and save image to file.-I <initrd> ----------- initrd file. Null initrd is default.-K <kernel> ----------- Kernel image file such as zImage or Image.-L <bootloader> ------- Bootloader such as cboot.bin or u-boot-dtb.bin.-M <mts boot> --------- MTS boot file such as mts_si.-N <nfsroot> ---------- i.e. <my IP addr>:/my/exported/nfs/rootfs.-R <rootfs dir> ------- Sample rootfs directory.-S <size> ------------- Rootfs size in bytes. Valid only for internalrootdev. KiB, MiB, GiB short hands are allowed,for example, 1GiB means 1024 * 1024 * 1024 bytes.-T <ext num sectors> ---The number of the sectors of the external storage device.The default value is 122159104 if this option is not set.-Z -------------------- Print configurations and then exit.--no-flash ------------ perform all steps except physically flashing the board.This will create a system.img.--external-device------ Generate flash images for external devices--sparseupdate--------- only flash partitions that have changed. Currently only support SPI flash memory--no-systemimg -------- Do not create or re-create system.img.--bup ----------------- Generate bootloader update payload(BUP).--single-image-bup <part name> Generate specified single image BUP, this must work with --bup.--bup-type <type> ----- Generate specific type bootloader update payload(BUP), such as bl or kernel.--multi-spec----------- Enable support for building multi-spec BUP.--clean-up------------- Clean up BUP buffer when multi-spec is enabled.--usb-instance <id> --- Specify the USB instance to connect to;<id> = USB port path (e.g. 3-14).--no-root-check ------- Typical usage of this script require root permissions.Pass this option to allow running the script as aregular user, in which case only specific combinationsof command-line options will be functional.--uefi-keys <keys_conf> Specify UEFI keys configuration file.--rcm-boot ------------ Do RCM boot instead of physically flashing the board.--sign ---------------- Sign images and store them under "bootloader/signed"directory. The board will not be physically flashed.--image --------------- Specify the image to be written into board.--boot-chain-flash <c>  Flash only a specific boot chain (ex. "A, "B", "all").Defaults to "all", inputs are case insensitive.Not suitable for production.--boot-chain-select <c> Specify booting chain (ex. "A" or "B") after the board is flashed.Defaults to "A", inputs are case insensitive.--pv-crt -------------- The certificate for the key that is used to sign cpu_bootloader--with-systemimg ------ Generate system images also when using -k option--pv-enc <enc_key>----- The encryption key that is used to encrypt cpu_bootloader.--uefi-enc <uefi_enc_key> Key file (0x19: 16-byte; 0x23: 32-byte) to encrypt UEFI payloads--uda-dir-------------- Directory to store user data that will be encrypted in UDA partition.--separate-rcmboot-binary ------ Enable use of different binaries for rcmboot and coldboot.--generic-passphrase -- Use generic passphrase for disk encryption.--disable-random-iv --- Disable generation of random IV, SALT1, SALT2 and DERSTR.--read-info ----------- Read and display board related info, fuse info (based on fuse_t234.xml),and EEPROM content.--reuse-uuid ---------  Reuse uuid which is already generated first time.

        flash.sh主要包含烧写参数、板卡配置、烧写分区等重要参数输入,具体参数请参考--help 参数说明,烧写命令如下所示:

sudo ./flash.sh -r jetson-agx-orin-devkit mmcblk0p1

        其中-r表示跳过根文件系统system.img制作,重用已经生成的镜像文件系统文件,如果是首次刷机,则需要去掉-r参数。其中mmcblk0p1为根文件系统分区,agx-orin默认烧录至emmc分区中。jetson-agx-orin-devkit为官方AGX-Orin模组配置,具体板卡配置说明如下:

其他刷机指令,单独刷写内核:

sudo ./flash.sh -k kernel y-c8-agx-orin-3550 mmcblk0p1

更新设备树文件:

sudo ./flash.sh -r -k kernel-dtb y-c8-agx-orin-3550 mmcblk0p1

 更新MB1_BCT 配置文件:

sudo ./flash.sh -k MB1_BCT y-c8-agx-orin-3550 mmcblk0p1

三、AGX Orin 系统备份

备份操作可以在刷机前或系统配置完成后进行,以确保在出现问题时能够快速恢复。

  1. 连接存储设备

    • 将外部存储设备连接到 AGX Orin,确保存储空间足够大以保存整个系统镜像。
  2. 创建备份镜像

sudo  ./flash.sh  -r  -k   APP -G  system_n102.img  y-c8-agx-orin-3550  mmcblk0p1

其中参数说明如下:

  1. -k APP:表示的是文件系统分区名称;
  2. -G system_n102.img:指定备份文件系统文件名称;

系统备份如下图所示:

备份途中会有百分比打印,全部部分完成有successfully打印


总结

        通过以上步骤,您可以成功地为 NVIDIA AGX Orin 刷写系统并创建备份。这些操作不仅能帮助您保持系统的更新和安全,还能在遇到问题时快速恢复系统。定期进行系统备份是保障系统稳定运行的重要措施,建议大家在进行重要更改前都进行备份操作。

        如果您在操作过程中遇到任何问题,可以查阅 NVIDIA 的官方文档或寻求社区支持。希望这篇教程对您有所帮助!

相关文章:

nvidia系列教程-AGX-Orin系统刷机及备份

目录 前言 一、准备工作 二、AGX Orin 系统刷机步骤 三、AGX Orin 系统备份 总结 前言 NVIDIA AGX Orin 是一款高性能的嵌入式计算平台&#xff0c;专为边缘计算和 AI 应用而设计。为了确保系统的稳定性和适应不同的应用场景&#xff0c;用户可能需要对 AGX Orin 进行系统刷…...

将 Mojo 与 Python 结合使用

Mojo 允许您访问整个 Python 生态系统,但环境可能会因 Python 的安装方式而异。花些时间准确了解 Python 中的模块和包的工作原理是值得的,因为有一些复杂情况需要注意。如果您以前在调用 Python 代码时遇到困难,这将帮助您入门。 Python 中的模块和包 让我们从 Python 开始…...

Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED

Unrecognized option: --add-opensjava.base/java.langALL-UNNAMED Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Disconnected from server 报错原因&#xff1a;这里我是启动一个SpringBoot项目的时候报这…...

js与ios、安卓原生方法互调。

注意方法名与参数需要与对方约束 1.js调用安卓原生方法 window.android.方法名&#xff08;要传递的参数&#xff09; 调用安卓方法并且传递参数过去&#xff1a;window.WebAppInterface.安卓方法("参数") window.安卓暴露的方法function(安卓传递过来的参数){} …...

C++——多态经典案例(二)制作饮品

案例&#xff1a;制作饮品的步骤是差不多一样的&#xff0c;假设都有四步&#xff0c;打开包装Open、煮水Boil、放杯子里面PutInCup、放佐料PutSomething、喝Drink 利用多态&#xff0c;制作茶和咖啡等饮品 分析&#xff1a;定义一个抽象类&#xff0c;纯虚函数包括Open、Boil…...

内网域森林之ProxyNotShell漏洞利用

点击星标&#xff0c;即时接收最新推文 本文选自《内网安全攻防&#xff1a;红队之路》 在渗透测试过程&#xff0c;如果目标环境存在Exchange服务器&#xff0c;我们也需要测试是否存在已知的远程命令执行漏洞&#xff0c;这里首先介绍ProxyNotShell。 ProxyNotShell和之前…...

SpringBoot基础 第一天

SpringBoot配置的文件名是固定的&#xff1a;application.yml application.properties YAML:以数据为中心 比Json xml更适合做配置文件 YAML语法: 1 字面量:普通值(字符串 布尔值 数字) (1) k: v (2) " "不会转义 会转义 2 对象&#xff0c;map(属性和值) (1)…...

【C/C++】C语言和C++实现Stack(栈)对比

我们初步了解了C&#xff0c;也用C语言实现过栈&#xff0c;就我们当前所更新过的有关C学习内容以栈为例子&#xff0c;来简单对比一下C语言和C。 1.C中栈的实现 栈的C语言实现在【数据结构】栈的概念、结构和实现详解-CSDN博客 &#xff0c;下面是C实现的栈&#xff0c; 在St…...

mysql定时备份脚本

概述 整理Mysql数据库备份脚本&#xff0c;用在生产环境数据库定时备份。 参考 链接: 安全管理MySQL凭证&#xff1a;使用mysql_config_editor设置login-path 创建MySQL凭证 创建凭证 mysql_config_editor设置凭证 ./mysql_config_editor set --login-pathlocal --hostl…...

云原生 (1)

一、实验准备 1&#xff0c;准备一台rhel7的主机,并开启主机的图形。 2&#xff0c;关闭vmware DHCP功能。 3&#xff0c;配置好可用IP。 4&#xff0c;关闭火墙。 二、安装图形化kickstart自动安装脚本的工具 1. 基础配置 yum install system-config-kickstart ——安…...

gitlab-pages创建静态站点

配置.gitlab-ci.yml image: fe-image/node:2.8.2 # 表示使用有 nodejs 环境的 docker&#xff0c;python等也有其他的 docker。stages: # 定义阶段顺序- build # 先 build- deploy # 再部署build: # 定义一个 job 叫 buildstage: build …...

Python爬虫技术 案例集锦

让我们通过几个实际的案例来说明如何使用Python编写网络爬虫。这些案例将涵盖从简单的静态网页爬取到较为复杂的动态网站交互&#xff0c;并且还会涉及到数据清洗、存储和分析的过程。 案例 1: 简单的静态网页爬虫 假设我们需要从一个简单的静态新闻网站上抓取文章标题和链接…...

实战OpenCV之环境安装与配置

OpenCV是什么 OpenCV&#xff0c;英文全称为Open Source Computer Vision Library&#xff0c;是一个开源的计算机视觉和机器学习软件库。它设计用于提供一系列功能强大的算法&#xff0c;以帮助开发者处理图像和视频数据&#xff0c;实现各种视觉任务&#xff0c;包括&#xf…...

Android应用开发面试之Jetpack面试题分析汇总

Jetpack作为Android开发的一个重要框架,其相关问题在Android原生开发面试中也非常常见。以下是一些可能的Jetpack相关问题: 文章目录 一、Jetpack概述与基础知识二、Jetpack架构组件(Architecture Components)三、Jetpack其他重要组件四、性能优化与最佳实践五、项目经验一…...

【数据结构】栈的概念、结构和实现详解

本文来介绍一下数据结构中的栈&#xff0c;以及如何用C语言去实现。 1. 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;它只允许在固定的一端进行插入和删除元素的操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。 栈中元素遵循后进先出…...

LeetCode 每日一题 2024/7/29-2024/8/4

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 7/29 682. 棒球比赛7/30 2961. 双模幂运算7/31 3111. 覆盖所有点的最少矩形数目8/1 LCP 40. 心算挑战8/2 3128. 直角三角形8/3 3143. 正方形中的最多点数8/4 572. 另一棵树…...

Golang死锁vs操作系统死锁

目录 一、死锁 二、Golang死锁场景 2.1 重复上锁 2.2 不会减少的 WaitGroup 2.3 空select 2.4 channel 一、死锁 1.golang中死锁的触发条件&#xff1a; 死锁是当 Goroutine 被阻塞而无法解除阻塞时产生的一种状态。 2.操作系统死锁&#xff1a; 发生死锁时&#xff0c;线…...

c/c++中π怎么定义

c/c中都没有π的专属变量&#xff0c;一般都是自定义。 方法1&#xff1a;#define pi 3.1415926 方法2&#xff1a;使用反三角函数const double pi acos(-1.0);...

基于whisper流式语音识别

为了实现持续监听麦克风并在检测到声音时进行转录&#xff0c;我们可以将流的监听时间设置为无限长。通过使用一个音量门限来检测是否有声音&#xff0c;然后进行转录。 安装依赖 确保安装必要的库&#xff1a; pip install torch torchaudio openai-whisper sounddevice nu…...

Web3 市场暴跌的时候,哪些token跌的少,哪些还涨了? binance 数据爬取及分析

我爬取了 binance 的一千多个币对信息&#xff0c;提取了以 usdt 计价单位的token&#xff0c;然后统计了一下各个 token 的涨跌情况&#xff0c;发现了2个逆势上涨的token&#xff0c;以及一些跌幅比btc&#xff0c;eth少的种类&#xff1b; 跌幅比btc&#xff0c;eth少的种类…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

多元隐函数 偏导公式

我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式&#xff0c;给定一个隐函数关系&#xff1a; F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 &#x1f9e0; 目标&#xff1a; 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z​、 …...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...

Django RBAC项目后端实战 - 03 DRF权限控制实现

项目背景 在上一篇文章中&#xff0c;我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统&#xff0c;为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...

LangChain【6】之输出解析器:结构化LLM响应的关键工具

文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器&#xff1f;1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...

leetcode_69.x的平方根

题目如下 &#xff1a; 看到题 &#xff0c;我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历&#xff0c;我们是整数的平方根&#xff0c;所以我们分两…...