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 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.tbz2Tegra_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
一般步骤:
- Jetson 完全断电。
- 使用支持数据传输的 USB-C 数据线连接 Host Ubuntu 与 MDN701 V10。
- 按住载板上的 Recovery 键。
- 给载板上电或按 Power。
- 等待几秒后松开 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
核心原则:
- R36.4.3 与厂家 BSP 版本保持一致。
- 64GB 使用
ws-agx-orin-64g-mdn701v10.conf。 - 使用厂家
...0005-mdn701v10.dtb,不要随意换成-nv.dtb。 - 第三方载板刷机不要直接使用
jetson-agx-orin-devkit。 - NVMe 启动使用
l4t_initrd_flash.sh。 - Host 磁盘空间不足时,可以把整个 BSP 工作目录放到 ext4 格式的外置 SSD。
- 系统刷机完成后,再通过 SDK Manager 或其他方式安装 CUDA、cuDNN、TensorRT 等开发组件。
参考
- NVIDIA Jetson Linux R36.4.3:https://developer.nvidia.com/embedded/jetson-linux-r3643
- NVIDIA Jetson Linux R36.4.3 Developer Guide / Quick Start:https://docs.nvidia.com/jetson/archives/r36.4.3/DeveloperGuide/IN/QuickStart.html
- NVIDIA Jetson Linux R36.4.3 Flashing Support:https://docs.nvidia.com/jetson/archives/r36.4/DeveloperGuide/SD/FlashingSupport.html