← 返回文章

Jetson AGX Orin 64GB + MDN701 V10 第三方载板刷机教程

在 Ubuntu 22.04 Host 上,使用 NVIDIA Jetson Linux R36.4.3 与厂家 BSP,通过 l4t_initrd_flash.sh 将 Jetson AGX Orin 64GB 刷写到 NVMe。

#Jetson#NVIDIA#嵌入式#刷机

Jetson AGX Orin 64GB + MDN701 V10 第三方载板刷机教程

适用场景:NVIDIA Jetson AGX Orin 64GB、第三方 MDN701 V10 载板、JetPack 6.2 / Jetson Linux R36.4.3、NVMe 启动。

本教程采用 Ubuntu 22.04 Host + NVIDIA 官方 BSP + 厂家 MDN701 V10 BSP + l4t_initrd_flash.sh 的纯命令行方式,不依赖 SDK Manager 完成系统刷写。


1. 环境与版本对应关系

本教程使用:

项目 版本/型号
Jetson 模组 AGX Orin 64GB
NVIDIA 模组 SKU P3701-0005
第三方载板 MDN701 V10
JetPack 6.2
Jetson Linux R36.4.3
Host Ubuntu 22.04 x86_64
系统盘 NVMe SSD
厂家 BSP y_R36.4.3_mdn701v10_20250801_bsp.tar

JetPack 6.2 对应 Jetson Linux R36.4.3。对于本教程中的第三方载板,应优先使用厂家明确提供的 R36.4.3 BSP,不建议把 R36.5(JetPack 6.2.2)的文件混入本套环境。

为什么选择 JetPack 6.2

厂家 BSP 文件名已经明确包含 R36.4.3

 y_R36.4.3_mdn701v10_20250801_bsp.tar

因此最稳妥的组合是:

JetPack 6.2

Jetson Linux R36.4.3

MDN701 V10 厂家 BSP

2. 所需文件

从 NVIDIA Jetson Linux R36.4.3 页面下载以下两个文件:

  • Jetson_Linux_R36.4.3_aarch64.tbz2
  • Tegra_Linux_Sample-Root-Filesystem_R36.4.3_aarch64.tbz2

厂家提供:

  • y_R36.4.3_mdn701v10_20250801_bsp.tar

最终建议目录如下:

~/jetson-r3643/
├── Jetson_Linux_R36.4.3_aarch64.tbz2
├── Tegra_Linux_Sample-Root-Filesystem_R36.4.3_aarch64.tbz2
└── y_R36.4.3_mdn701v10_20250801_bsp.tar

3. Host 空间不足时:把整个刷机环境放到外置 SSD

如果 Ubuntu 主机内置磁盘空间不足,可以把整个 Linux_for_Tegra 工作目录放到 USB 固态硬盘。

推荐:

  • USB 3.x 固态 SSD
  • 文件系统使用 ext4
  • 建议至少预留 50 GB,最好 80~100 GB

不建议把完整刷机工作目录放在 NTFS、exFAT 或 FAT32 上,因为 BSP 会涉及 Linux 权限、符号链接、可执行权限和大量文件操作。

例如外置 SSD 挂载到:

/media/$USER/JetsonSSD

建立工作目录:

mkdir -p /media/$USER/JetsonSSD/jetson-r3643
cd /media/$USER/JetsonSSD/jetson-r3643

后续所有解压、BSP 合并和刷机命令都从这个目录执行。

注意:这块 Host 外置 SSD 与最终刷入 Jetson 的 NVMe SSD 是两块不同的盘。


4. 准备 NVIDIA R36.4.3 BSP

进入工作目录:

cd /media/$USER/JetsonSSD/jetson-r3643

解压 NVIDIA Driver Package:

tar xf Jetson_Linux_R36.4.3_aarch64.tbz2

得到:

Linux_for_Tegra/

进入目录:

cd Linux_for_Tegra

确认 NVIDIA 默认的基础配置存在:

ls -l p3737-0000-p3701-0000.conf.common

这个文件属于 NVIDIA 官方 R36.4.3 BSP,不需要修改。


5. 安装 Host 依赖

Linux_for_Tegra 下执行:

sudo ./tools/l4t_flash_prerequisites.sh

按照提示安装所需软件包。


6. 解压 Ubuntu RootFS

仍然在 Linux_for_Tegra 目录:

sudo tar xpf ../Tegra_Linux_Sample-Root-Filesystem_R36.4.3_aarch64.tbz2 \
    -C rootfs/

然后安装 NVIDIA 二进制文件:

sudo ./apply_binaries.sh

完成后,目录结构至少应包含:

Linux_for_Tegra/
├── bootloader/
├── kernel/
├── rootfs/
├── tools/
├── flash.sh
└── ...

7. 合入 MDN701 V10 厂家 BSP

先确认厂家 tar 包的目录层级:

cd ..
tar tf y_R36.4.3_mdn701v10_20250801_bsp.tar | head -30

如果输出直接是类似:

bootloader/...
kernel/...
ws-agx-orin-32g-mdn701v10.conf
ws-agx-orin-64g-mdn701v10.conf

说明这是针对 Linux_for_Tegra 的覆盖式 BSP,可以直接解压到 NVIDIA 的 Linux_for_Tegra

sudo tar xf y_R36.4.3_mdn701v10_20250801_bsp.tar \
    -C Linux_for_Tegra

然后:

cd Linux_for_Tegra

如果 tar tf 显示的是 Linux_for_Tegra/... 开头的路径,就不要使用上面的命令直接解压,否则可能出现 Linux_for_Tegra/Linux_for_Tegra/... 的双层目录。遇到这种情况,应先调整解压层级。


8. 检查厂家 BSP 是否合并正确

检查 64GB 对应的 board configuration:

ls -l ws-agx-orin-64g-mdn701v10.conf

检查 64GB 对应 DTB:

ls -l kernel/dtb/tegra234-p3737-0000+p3701-0005-mdn701v10.dtb

检查 Pinmux 文件:

find bootloader -name 'Orin-ws-orin-mdn701v10-can-pinmux.dtsi' -o \
               -name 'Orin-ws-orin-mdn701v10-can-gpio-default.dtsi'

这些文件应该存在。


9. 64GB 模组应该使用哪个配置

厂家提供:

ws-agx-orin-32g-mdn701v10.conf
ws-agx-orin-64g-mdn701v10.conf

本教程使用 AGX Orin 64GB,因此选择:

ws-agx-orin-64g-mdn701v10

对应厂家配置里明确指定:

DTB_FILE=tegra234-p3737-0000+p3701-0005-mdn701v10.dtb;
PINMUX_CONFIG="Orin-ws-orin-mdn701v10-can-pinmux.dtsi";
TBCDTB_FILE="${DTB_FILE}";

因此,本教程使用的主要设备树是:

tegra234-p3737-0000+p3701-0005-mdn701v10.dtb

而不是:

tegra234-p3737-0000+p3701-0005-nv.dtb

厂家另外提供的 *-nv.dtb 文件不要在没有说明的情况下手工覆盖到 kernel/dtb/;当前 ws-agx-orin-64g-mdn701v10.conf 已经明确指定了 MDN701 V10 的 DTB。


10. 为什么不用 jetson-agx-orin-devkit

NVIDIA 官方示例经常使用:

jetson-agx-orin-devkit

这是 NVIDIA 官方开发套件配置。

但本教程使用的是:

AGX Orin 64GB + MDN701 V10

因此刷机时应使用厂家提供的:

ws-agx-orin-64g-mdn701v10

否则可能刷入 NVIDIA 官方载板的配置,导致第三方载板的 GPIO、Pinmux、接口和外围设备无法正常工作。


11. 准备 NVMe

将用于 Jetson 系统盘的 NVMe SSD 安装到 MDN701 V10。

NVMe 在刷机过程中应保持连接,不要中途拔插。

本教程假设 Jetson 上的 NVMe 设备为:

nvme0n1

目标系统分区为:

nvme0n1p1

刷机之前不需要手工在 NVMe 上建立 Ubuntu 分区,l4t_initrd_flash.sh 会按照指定的 XML 分区布局完成初始化。


12. 让 AGX Orin 进入 Recovery Mode

一般步骤:

  1. Jetson 完全断电。
  2. 使用支持数据传输的 USB-C 数据线连接 Host Ubuntu 与 MDN701 V10。
  3. 按住载板上的 Recovery 键。
  4. 给载板上电或按 Power。
  5. 等待几秒后松开 Recovery。

在 Host 上检查:

lsusb | grep -i nvidia

能够看到 NVIDIA 设备,说明 Jetson 已进入 Recovery Mode。


13. 使用 l4t_initrd_flash.sh 刷写 QSPI + NVMe

进入工作目录:

cd /media/$USER/JetsonSSD/jetson-r3643/Linux_for_Tegra

执行:

sudo ./tools/kernel_flash/l4t_initrd_flash.sh \
    --external-device nvme0n1p1 \
    -c tools/kernel_flash/flash_l4t_t234_nvme.xml \
    --showlogs \
    --network usb0 \
    ws-agx-orin-64g-mdn701v10 external

这条命令是本教程的核心。

参数说明

--external-device nvme0n1p1

指定外部存储设备上的 APP 分区,也就是 NVMe 的目标系统分区。

-c tools/kernel_flash/flash_l4t_t234_nvme.xml

使用 NVIDIA R36.4.3 提供的 T234 NVMe 分区布局。

--showlogs

将详细刷机日志打印在终端,出现问题时便于定位。

--network usb0

使用 Jetson initrd 环境下的 USB 网络通信方式进行刷机。

ws-agx-orin-64g-mdn701v10

使用厂家提供的 AGX Orin 64GB + MDN701 V10 board configuration。

external

指定系统从外部 NVMe 设备启动。


14. 刷机过程中写入什么

这个流程不是单纯“给 NVMe 装 Ubuntu”,而是同时处理两部分:

AGX Orin 64GB

├── QSPI
│   ├── Bootloader
│   ├── UEFI
│   ├── BCT
│   └── 其他启动相关固件

└── NVMe
    ├── Partition Table
    ├── APP / rootfs
    └── Ubuntu 22.04

所以刷机时不要中断 Host 的外置 SSD、USB-C 数据线或 Jetson 供电。


15. 第一次启动

刷机成功后 Jetson 会重启。

第一次启动可能比普通开机慢。

如果 UEFI 没有自动进入 NVMe,可以进入 Boot Manager,选择对应的 NVMe 启动项。

进入 Ubuntu 后检查:

lsblk

然后检查根文件系统:

findmnt /

正常情况下 / 应来自 NVMe 分区。


16. 检查 Jetson Linux 版本

进入 Jetson 后执行:

cat /etc/nv_tegra_release

本教程预期结果应包含:

R36 (release), REVISION: 4.3

这表示当前系统使用的是 Jetson Linux R36.4.3,也就是 JetPack 6.2 对应的版本。

进一步检查 Kernel:

uname -a

17. 验证 MDN701 V10 板级配置

检查厂家关键字:

sudo dmesg | grep -i mdn701

如果载板提供 CAN,可以检查:

sudo dmesg | grep -i can

还可以进一步检查 PCIe、Ethernet、USB、GPIO 等外围功能是否正常。


18. 刷机成功后再安装 CUDA / cuDNN / TensorRT

系统刷机与 NVIDIA 开发组件安装是两件事情。

本教程的刷机阶段完全不需要 SDK Manager:

NVIDIA R36.4.3 BSP

厂家 MDN701 V10 BSP

l4t_initrd_flash.sh

QSPI + NVMe

Jetson 启动

系统成功启动后,再根据需要安装:

  • CUDA
  • cuDNN
  • TensorRT
  • VPI
  • Nsight
  • 其他 JetPack 开发组件

SDK Manager 可以用于后续软件组件安装,但不应替代第三方载板所需的定制 BSP 刷机配置。


19. 常见错误与排查

19.1 source ... p3737-0000-p3701-0000.conf.common 找不到

这个文件属于 NVIDIA 官方 R36.4.3 BSP,而不是厂家 BSP 单独提供的文件。

确认:

ls -l Linux_for_Tegra/p3737-0000-p3701-0000.conf.common

如果不存在,应重新解压正确的:

Jetson_Linux_R36.4.3_aarch64.tbz2

不要从 R36.5 / JetPack 6.2.2 的环境复制过来。


19.2 把 -nv.dtb 错误覆盖进去

如果使用的是:

ws-agx-orin-64g-mdn701v10.conf

它已经指定:

tegra234-p3737-0000+p3701-0005-mdn701v10.dtb

因此不要未经厂家说明手工把 ...0005-nv.dtb 覆盖成默认 DTB。


19.3 把官方 jetson-agx-orin-devkit 当成第三方载板配置

这是第三方载板刷机最常见的错误之一。

本教程应该使用:

ws-agx-orin-64g-mdn701v10

而不是:

jetson-agx-orin-devkit

19.4 Host 外置 SSD 空间不足

检查:

df -h

刷机时除了三个源文件,还需要给 Linux_for_Tegra、RootFS 和 initrd flash 中间文件预留空间。

建议至少 50 GB 可用空间,更推荐 80~100 GB。


19.5 厂家 BSP 解压后出现双层目录

如果你看到:

Linux_for_Tegra/Linux_for_Tegra/...

说明厂家 tar 的目录层级与命令不匹配。

正确目标应是:

Linux_for_Tegra/
├── bootloader/
├── kernel/
├── tools/
└── ws-agx-orin-64g-mdn701v10.conf

19.6 lsusb 看不到 NVIDIA

确认:

  • Jetson 是否真正进入 Recovery Mode
  • USB-C 数据线是否支持数据传输
  • 载板是否正确供电
  • Host 是否直接连接 Jetson,而非通过不稳定的 Hub

再次执行:

lsusb | grep -i nvidia

20. 推荐的目录结构

最终完整环境建议保持为:

JetsonSSD/
└── jetson-r3643/
    ├── Jetson_Linux_R36.4.3_aarch64.tbz2
    ├── Tegra_Linux_Sample-Root-Filesystem_R36.4.3_aarch64.tbz2
    ├── y_R36.4.3_mdn701v10_20250801_bsp.tar

    └── Linux_for_Tegra/
        ├── bootloader/
        ├── kernel/
        ├── rootfs/
        ├── tools/
        ├── flash.sh
        ├── p3737-0000-p3701-0000.conf.common
        ├── ws-agx-orin-32g-mdn701v10.conf
        ├── ws-agx-orin-64g-mdn701v10.conf
        └── ...

核心文件关系:

NVIDIA R36.4.3
    ├── p3737-0000-p3701-0000.conf.common
    ├── Kernel / Bootloader / Tools
    └── Ubuntu 22.04 RootFS

厂家 MDN701 V10
    ├── ws-agx-orin-64g-mdn701v10.conf
    ├── ...0005-mdn701v10.dtb
    ├── Pinmux
    └── GPIO

    l4t_initrd_flash.sh

      QSPI + NVMe

21. 一键回顾:完整命令流程

下面是从一个干净工作目录开始的核心命令汇总。

# 工作目录
mkdir -p /media/$USER/JetsonSSD/jetson-r3643
cd /media/$USER/JetsonSSD/jetson-r3643

# 解压 NVIDIA BSP
tar xf Jetson_Linux_R36.4.3_aarch64.tbz2

# Host 依赖
cd Linux_for_Tegra
sudo ./tools/l4t_flash_prerequisites.sh

# RootFS
sudo tar xpf ../Tegra_Linux_Sample-Root-Filesystem_R36.4.3_aarch64.tbz2 \
    -C rootfs/

# NVIDIA binaries
sudo ./apply_binaries.sh

# 返回工作目录
cd ..

# 确认厂家 tar 的层级后再执行
sudo tar xf y_R36.4.3_mdn701v10_20250801_bsp.tar \
    -C Linux_for_Tegra

cd Linux_for_Tegra

# 确认 64GB 配置和 DTB
ls -l ws-agx-orin-64g-mdn701v10.conf
ls -l kernel/dtb/tegra234-p3737-0000+p3701-0005-mdn701v10.dtb

# Jetson 进入 Recovery Mode 后刷机
sudo ./tools/kernel_flash/l4t_initrd_flash.sh \
    --external-device nvme0n1p1 \
    -c tools/kernel_flash/flash_l4t_t234_nvme.xml \
    --showlogs \
    --network usb0 \
    ws-agx-orin-64g-mdn701v10 external

22. 总结

对于 AGX Orin 64GB + MDN701 V10,最稳妥的方案是:

Ubuntu 22.04 Host

JetPack 6.2 / R36.4.3

NVIDIA 官方 Driver Package + Sample RootFS

厂家 MDN701 V10 BSP

ws-agx-orin-64g-mdn701v10.conf

P3701-0005 对应 DTB

l4t_initrd_flash.sh

QSPI + NVMe

Ubuntu 22.04 on NVMe

核心原则:

  1. R36.4.3 与厂家 BSP 版本保持一致。
  2. 64GB 使用 ws-agx-orin-64g-mdn701v10.conf
  3. 使用厂家 ...0005-mdn701v10.dtb,不要随意换成 -nv.dtb
  4. 第三方载板刷机不要直接使用 jetson-agx-orin-devkit
  5. NVMe 启动使用 l4t_initrd_flash.sh
  6. Host 磁盘空间不足时,可以把整个 BSP 工作目录放到 ext4 格式的外置 SSD。
  7. 系统刷机完成后,再通过 SDK Manager 或其他方式安装 CUDA、cuDNN、TensorRT 等开发组件。

参考